单片机外设:USART串口笔记

单片机外设模块地图导航

STM32

教程

串口教程@江科大自化协
博客:
一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制@CSDN
STM32 | 串口DMA很难?其实就是如此简单!(超详细、附代码)@CSDN

0.串口硬件连接

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.串口发送(单片机->上位机)

发送字节:
image
发送字节数组:
image
发送字符串:
(接收模式:文本模式)
image

发送数字字符:
Serial_SendByte(number / Serial_Pow(10, length - i - 1) % 10);
image
要以字符的形式偏移,所以要在'0'的基础上,例如发'1',就是'0'+1,否则是ascii码的1
Serial_SendByte(number / Serial_Pow(10, length - i - 1) % 10 + '0');
image
发送中文:
Keils的Configuration->Editor->Endoding:GB2312,然后在串口助手的本文编码设置GBK
image
最终效果:
image

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"
实验结果:
image

可以看到,与用串口助手发送的效果是一样的,证明实验成功。

C51

使用STC-ISP工具:

todo

参考:
STM32最小系统USB转TTL接线

posted @ 2022-08-23 17:02  萧驭  阅读(198)  评论(0编辑  收藏  举报