单片机外设:USART串口笔记
STM32
教程
串口教程@江科大自化协
博客:
一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制@CSDN
STM32 | 串口DMA很难?其实就是如此简单!(超详细、附代码)@CSDN
0.串口硬件连接USB-TO-TTL模块
USB-TO-TTL模块引脚:
1-5V
2-VCC
3-3V3
4-TXD
5-RXD
6-GND
将VCC和3V3引脚用跳线帽短接。USB-TO-TTL模块跟STM32之间只需要接3个引脚:
4-TXD \(\to\) A10 (USART_1_RX)
5-RXD \(\to\) A9 (USART_1_TX)
6-GND \(\to\) GND
正点原子串口实验
调试工具为XCOM:使用F103精英板的USART1(PA9/PA10),板载CH340串口/USB芯片
江科大串口实验
1.串口发送(单片机->上位机)
发送字节:
发送字节数组:
发送字符串:
(接收模式:文本模式)
发送数字字符:
Serial_SendByte(number / Serial_Pow(10, length - i - 1) % 10);
要以字符的形式偏移,所以要在'0'的基础上,例如发'1',就是'0'+1,否则是ascii码的1
Serial_SendByte(number / Serial_Pow(10, length - i - 1) % 10 + '0');
发送中文:
Keils的Configuration->Editor->Endoding:GB2312,然后在串口助手的本文编码设置GBK
最终效果:
2.串口接收(上位机->单片机)
while(1)扫描,不使用中断:
偶尔会出现串口需要发送很多遍单片机才会接收到的现象。
使用中断:
3.串口发送和接收
接收功能使用中断
疑问:为什么发送区是小写字母,接收区是大写字母?
实验实物:
4.串口收发HEX数据包
实验实物:
修改数据长度为8(2022.8.29):
5.串口接收上位机的指令控制LED亮灭
(2022.12.15)
问题定位:
串口助手发送必须是“文本模式”,单片机代码swicth case里必须是'1'这种字符。即发送和接收的字符需要匹配。
关键代码:
实验现象:
6. 上位机Python与STM32串口通信
上位机发送数据包:
数据包:"FF 01 02 03 04 05 06 07 08 FE"
实验结果:
可以看到,与用串口助手发送的效果是一样的,证明实验成功。
C51
使用STC-ISP工具:
C51串口教程
80C51单片机Proteus仿真实验:双机单工通信@Haar Blog