串口3中断服务程序如下: void USART3_IRQHandler(void) { /* USER CODE BEGIN USART3_IRQn 0 */ __HAL_UART_CLEAR_IT(&huart3,UART_IT_RXNE); user_Uart1Handler(); } void user_Uart1Handler() { if(__HAL_UART_GET_FLAG(&huart3, UART_FLAG_RXNE)!=RESET) { if(modbus.RxState==0) { modbus.RxState=0xaa; __HAL_UART_ENABLE_IT(&huart3,UART_IT_IDLE); modbus.recnt=0; modbus.rcbuf[modbus.recnt++]=huart3.Instance->RDR; } else if(modbus.RxState==0xaa) { modbus.rcbuf[modbus.recnt++]=huart3.Instance->RDR; } __HAL_UART_CLEAR_FLAG(&huart3,UART_FLAG_RXNE); } if((__HAL_UART_GET_IT(&huart3,UART_IT_IDLE)!=RESET)) { __HAL_UART_DISABLE_IT(&huart3,UART_IT_IDLE); __HAL_UART_DISABLE_IT(&huart3,UART_IT_RXNE); modbus.RxState=0x55; } } 问题:如采用串口调试助手发送04 03 01 03,全速运行,modbus.rcbuf中只有04,RDR寄存器中是03 请教各位大神,为何会出现这种情况,谢谢 |
问个关于STM32L4 SPI读数据,前3个字节永远是0
STM32L432 2个SPI同时使用的问题
STM32L476 ADC采集内部温度传感器电压值
STM32L431通过串口下载程序问题
ST的hal库有问题手头有STM32L4或STM32F7的帮忙测试DMA SD卡
STM32L476-Discovery开发板如何进行串口固件烧写
大家有用到STM32L433的CAN通信的吗?
STM32L4 FFT 自带arm_math.h编译不成功
想问一个关于STM32L475 flash的问题
谁有STM32L476的编程手册,传一个,感谢
张冠李戴了
那里应该是当时写错了,但是并不影响
写错了改回来当然不影响。
写错了没有改回来也不影响运行就怪了。二进制的东西,0就是0,1就是1.怎么不影响?
评分
查看全部评分
评分
查看全部评分
那只是我自己定义的函数名,改不改都不影响,谢谢
谢谢你。是的,接收一个字节进入一次中断,一帧数据接收完进入空闲中断,会关空闲中断,关接收中断。我再调试看看
https://www.stmcu.org.cn/module/forum/thread-621310-1-1.html
评分
查看全部评分
你好,谢谢你的解答。我理解的是接收完一帧数据之后才会进入空闲中断,那这种情况有什么好的解决办法吗
谢谢,我参考一下
这就要根据你的应用了,一般来说就使用接收中断即可了,不用空闲中断,接收数据是否完毕根据通信协议判断
评分
查看全部评分
采用定时器的方式判定一帧数据接收完成与否是已经实现了,看到网上说空闲中断更好,结果试试出现问题
如果发送方发送数据byte之间没有加空闲位就可以用