问答

汇集网友智慧,解决技术难题

春日负喧

TA的家园币:1334  

  • 关于NUC029的GPIO中断消抖功能的疑惑,求解答

    关于NUC029的GPIO中断消抖功能的疑惑,求解答NUC029中,GPIO有一个中断去抖功能。在“中断去抖周期控制(DBNCECON)”这个寄存器中需要配置采样周期。图片好像发不了,只能复制文字。该寄存器的DBCLKSEL位描述如下:去抖动采样周期选择0000=每1个时钟周期采样中断输入一次.0001=每2个时钟周期采样中断输入一次.0010=每4个时钟周期采样中断输入一次.0011=每8个时钟周期采样中断输入一次.0100=每16个时钟周期采样中断输入一次.0101=每32个时钟周期采样中断输入一次.0110=每64个时钟周期采样中断输入一次.0111=每128个时钟周期采样中断输入一次.1000=每256个时钟周期采样中断输入一次.1001=每2*256个时钟周期采样中断输入一次.1010=每4*256个时钟周期采样中断输入一次.1011=每8*256个时钟周期采样中断输入一次.1100=每16*256个时钟周期采样中断输入一次.1101=每32*256个时钟周期采样中断输入一次.我对GPIO中断去抖功能的理解是:在GPIO边沿触发中断时,在经过DBCLKSEL位配置的采样周期后再进行一次检测,然后再判断是否进入中断处理函数,这个过程由硬件完成。我想知道GPIO中断去抖功能是不是我理解的这样。不对的话,希望大佬指正下。

  • STM32F407 同一个定时器的两个通道产生的PWM脉冲不对

    STM32F407VE,使用定时器1同时产生两路PWM波两路PWM产生的脉冲数不一样时,实际产生的脉冲不对,会少1个实际上是不能使用这种方式做吗?

    定时器 stm32f407 PWM STM32 MCU

    2024-04-23 16
  • STM32移植LWIP问题

    代码功能是创建客户端,静态ip,在407跑通了,但是直接复制移植到429的板子就运行报错,使用ucosii,请问可能是啥原因,lwip初始化成功,tcp客户端也初始化成功,之后就运行调试串口打印出这个Assertion"arp_table.q==NULL"failedatline369in..\LWIP\lwip-1.4.1\src\netif\etharp.c那几行代码是/*1)emptyentryavailable?*/if(empty<ARP_TABLE_SIZE){i=empty;LWIP_DEBUGF(ETHARP_DEBUG|LWIP_DBG_TRACE,("etharp_find_entry:selectingemptyentry%"U16_F"\n",(u16_t)i));}else{/*2)foundrecyclablestableentry?*/if(old_stable<ARP_TABLE_SIZE){/*recycleoldeststable*/i=old_stable;LWIP_DEBUGF(ETHARP_DEBUG|LWIP_DBG_TRACE,("etharp_find_entry:selectingoldeststableentry%"U16_F"\n",(u16_t)i));/*noqueuedpacketsshouldexistonstableentries*/LWIP_ASSERT("arp_table.q==NULL",arp_table.q==NULL);//这里就是369行/*3)foundrecyclablependingentrywithoutqueuedpackets?*/}

    ST 单片机 lwIP

    2023-07-30 21
  • DS18B20初始化失败,但延时是达到要求的

    用的正点原子的ds18b20驱动,移植到自己的cubemx生成的stm32f103c6t6工程中,无法成功初始化ds18b20在程序中表现为ds18b20不进行应答,超过240微秒.之后通过逻辑分析仪来检测,得到stm32这边确实延时了750微秒,达到拉低总线的要求,并放开了总线,但ds18b20始终不应答相关硬件用在原先的正点原子开发板上正常运作,放到自己的c6t6上就是不工作求问各位朋友,是哪里出问题了

    ST 单片机 嵌入式

    2023-04-02 66
  • 关于中断的问题,Disable中再Enable中断无法正常运行

    Disable中断之后再Enable无法正常运行,这是中断函数:voidHAL_GPIO_EXTI_Rising_Callback(uint16_tGPIO_Pin){if(GPIO_Pin==GPIO_PIN_3){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);HAL_NVIC_DisableIRQ(EXTI2_3_IRQn);EXIT_Sign=1;}}这是while循环while(1){/USERCODEENDWHILE/if(EXIT_Sign==1){HAL_Delay(2000);MX_GPIO_Init();HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);EXIT_Sign=0;}/USERCODEBEGIN3/}这样是可以实现功能的,但是只要注释掉if里面的MX_GPIO_Init();或者HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);这两个注释掉一个就无法实现功能。我的问题是:MX_GPIO_Init();函数里面有使能中断语句了HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);为啥在if里面还得再重复一遍这个使能函数呢。不知道我有没有说明白,请各位大佬们帮忙解答一下。

    GPIO IO gp pi AB BLE

    2023-02-22 34
  • stmf4 f407程序直接下载到f427可以吗

    旧项目407程序主要是用DM9000+lwip做tcp服务器,跟上位机通讯,现在移植到427上有区别吗。之前没注意到这个问题改了下外部晶振就直接烧录了,目前串口通讯什么的可以实现,两个布板的时候mcu跟dm9000的IO连接都一样,但是pc端pingmcu一直ping不通,这个跟两款芯片的差别有关系吗

    ST MUC lwip DM9000

    2022-09-20 13