|
各位大佬,uart1 发送一串数据到串口助手没有问题,用串口助手向stm8s发送字符串,不知道为什么一次只能读到2个字节,单个字节收发都没问题,接收采用中断方式,代码如下Init(){ UART1_Init((uint32_t)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE); UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE); UART1_Cmd(ENABLE); enableInterrupts(); } void UART1_RecvData(void) { if(UART1_GetITStatus(UART1_IT_RXNE) != RESET) RecvData[count++] = UART1_ReceiveData8(); UART1_ClearITPendingBit(UART1_IT_RXNE); } |
请教 stm8s 复位电路 和VCAP电容问题
stm8s003f3p6
STM8L的bootload中断向量表重映射
stm32f746g-disco开发板的串口通讯连接方式
DMA传输完成后,串口与DMA一直处于忙状态
Error in final launch sequence: Failed to execute MI command: target remote localhost:61234
使用CubeMx第二次生成的代码编译时报错
请问设备剧烈运动后静置数据无法归零,必须重启设备才能归零,是什么原因呢,如何处理,谢谢各位有偿咨询各位
STM32CubeID V1.19.0 无法识别串口设备
为什么STM32G431的串口用不了2.5M的波特率
微信公众号
手机版
楼主是如何判断只能收到两个字节的?从代码上看应该是没有问题。可能是应用的问题。
我是通过串口助手一次发送好几个字节,例如“12345”,跟踪接收到的字符数组变量,绝大多数情况下都最多能收到1,2,有时候修改波特率,例如改为2400后,在第一次时偶尔收到过4个字节,然后就都是2个字节
1. 楼主首先确保上位机真正发送了那么多数据。有时候串口助手未必真正工作那么可靠。所以用示波器测量一下就好了。
2. 其次从结果上看,降低波特率就有点起色,是不是楼主的程序中还有很多任务,尤其是会产生很多中断。 如果是的话,多半就是响应速度不够,时间被其他中断占用了,
我用stm32的usart中断例程跑起来没有问题,用串口助手能收到字符串,也能发送字符串到32,显示在OLED上,唯一的区别好象是中断优先级不一样,还有32的中断例程没有搞明白的一点,两个usart口互传,那谁来触发第一个中断呢
STM8S003最多跑到16M, STM32执行代码的速度远远快于它,所以执行中断程序很难发生冲突。建议楼主还是看看STM8S003接收串口信息时是否溢出标志被置位起来了。
同样,STM32的两个串口不论哪个串口先产生中断,两个处理起来,时间上都轻松。至于哪个先发生,要看谁先执行了。