
各位大佬,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); } |
求助,使用51单片机和VL6180X传感器测距,结果一直是0是什么原因,能读到ID为0xB4
在使用nucleo H7开发版 USART2发送数据测试的时候,RTS脚产生与TX脚一样的伴随波形,波形与TX脚一致
STM32G070RET6,中断优先级配置没有效果
STM32H743VIT6 HAL 串口DMA发送掉帧
STM32G474CBT6 串口通信问题
请教下,STM8/STM32 products 有2D marking 和没有2D marking的工艺有差别吗?
I2C从模式编程之STOP中断
STM32CubeMX生成STM32mp135D的USART1,2,3,6代码初始化是空的
STM8AF62XX+L99PM62GXP LIN通讯的电路原理图有吗?官网提供了一套软件,没找到对应的原理图,请大家指教一下
使用STM32L451CEU6型号的芯片,在用usart(PA9、PA10)进行串口通信时,发送0x55在PC端可以收到正确的数据,但是发送0x80会收到0x00的数据,发送0x01会收到0x7F的数据,串口助手的配置和CubeMX上的配置参数是一样的(都是115200,8N1),请问各位这个是什么原因呀?
楼主是如何判断只能收到两个字节的?从代码上看应该是没有问题。可能是应用的问题。
我是通过串口助手一次发送好几个字节,例如“12345”,跟踪接收到的字符数组变量,绝大多数情况下都最多能收到1,2,有时候修改波特率,例如改为2400后,在第一次时偶尔收到过4个字节,然后就都是2个字节
1. 楼主首先确保上位机真正发送了那么多数据。有时候串口助手未必真正工作那么可靠。所以用示波器测量一下就好了。
2. 其次从结果上看,降低波特率就有点起色,是不是楼主的程序中还有很多任务,尤其是会产生很多中断。 如果是的话,多半就是响应速度不够,时间被其他中断占用了,
我用stm32的usart中断例程跑起来没有问题,用串口助手能收到字符串,也能发送字符串到32,显示在OLED上,唯一的区别好象是中断优先级不一样,还有32的中断例程没有搞明白的一点,两个usart口互传,那谁来触发第一个中断呢
STM8S003最多跑到16M, STM32执行代码的速度远远快于它,所以执行中断程序很难发生冲突。建议楼主还是看看STM8S003接收串口信息时是否溢出标志被置位起来了。
同样,STM32的两个串口不论哪个串口先产生中断,两个处理起来,时间上都轻松。至于哪个先发生,要看谁先执行了。