给你个思路:先定义一个数组,在串口中断里,设置接收中断,当连续发送字符串时,每接收一个字符,就保存在数组里,但是串口中断里要设置变量来引导字符放在数组的位置
可以,事实现在,现在任何一款单片机,只要是普通的UART,不是485方式的,都是全双工通信的,所谓全双工通信,就是既能接受,同时也能发送,所以,你没有必要担心这个问题,当然,如果你外接了485芯片,那就不行了,因为485芯片是半双工的。
只要功能引脚没重合,或复用冲突之类的,几路uart是可以单独工作的,互不相关。所以多半是比程序有bug,你可以考虑从时钟、中断相关配置检查问题点。
1、 添加printf的头文件 #include stdio.h
2、重写int fputc(int ch, FILE *f)函数
int fputc(int ch, FILE *f);
函数
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
3、修改一下选中Use MicroLIB Target——Code Generation——选中Use MicroLIB
数据各个位同时传输。处理器与外部设备通信的两种方式是并行通信,stm32串口1和串口3自动发送和自动接收数据的原理是数据各个位同时传输。优点速度快,缺点是占用引脚资源多。STM32就是指ST公司开发的32位微控制器。
应该是没有影响的,因为stm32的各个串口是独立工作的!不知道你的串口收发用的是什么机制,如果是中断的话应该没有问题,如果是查询的话可能会导致串口3正在收发数据无法执行其他程序,进而串口1接不到东西
本文标签:stm32可以多个串口同时传输数据库