-
求助 stm32H7 tcp服务器 长时间收发数据 netconn_recv会返回ERR_CONN
本帖最后由豹王冰冰于2024-7-1116:42编辑stm32h743freertos下,tcp服务器,用netconnapi,长时间(大概一小时左右)收发数据,netconn_recv会返回ERR_CONN,说明文档里就写着是Notconnected,但是客户端并未主动断开,不应该没有连接啊,问问各位大佬
2024-07-11 11 -
关于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中断去抖功能是不是我理解的这样。不对的话,希望大佬指正下。
2024-07-10 13 -
STM32F407 同一个定时器的两个通道产生的PWM脉冲不对
STM32F407VE,使用定时器1同时产生两路PWM波两路PWM产生的脉冲数不一样时,实际产生的脉冲不对,会少1个实际上是不能使用这种方式做吗?
2024-04-23 16 -
STM32的DMA中传输数据宽度与实际宽度不符会怎样?
如果uint16_tA[]={0,1,2,3},B[]={0,0,0,0};要将A数组的数据用DMA传递到B数组中,但是在设置数据宽度的时候设置的是一位DMA_Initstructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte。将结果显示在OLED屏幕上,结果只有前两个数正确的传到了B数组中,B数组在OLDE上显示的是0,1,0,0。出现这种问题的根本原因是什么。
2023-08-21 21 -
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?*/}
2023-07-30 21 -
关于中断的问题,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里面还得再重复一遍这个使能函数呢。不知道我有没有说明白,请各位大佬们帮忙解答一下。
2023-02-22 34 -
stmf4 f407程序直接下载到f427可以吗
旧项目407程序主要是用DM9000+lwip做tcp服务器,跟上位机通讯,现在移植到427上有区别吗。之前没注意到这个问题改了下外部晶振就直接烧录了,目前串口通讯什么的可以实现,两个布板的时候mcu跟dm9000的IO连接都一样,但是pc端pingmcu一直ping不通,这个跟两款芯片的差别有关系吗
2022-09-20 13