第七章 STM32单片机串口编程及其应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机器人辅助32位单片机课程
第七章 STM32单片机串口编程及其应用
华中科技大学控制科学与工程系 深圳市中科鸥鹏智能科技有限公司 彭刚
摘要
• STM32串行通信接口
任务一 编写串口通信程序
• 串行RS-232电平与TTL电平转换
任务二 串口Echo回应程序
• 工程素质和技能归纳
STM32串行通信接口
– 串口寄存器设置
与STM32单片机串口编程有关的主要寄存器有:
分数波特率发生寄存器:USART_BRR(Baud rate register); 状态寄存器:USART_SR(Status register); 数据寄存器:USART_DR(Data register)。
STM32串行通信接口
• STM32单片机USART的初始化参考P184的
任务一 编写串口通信程序
• 源程序参考教材P186的例程usart.c • usart.c是如何工作的?
printf默认的输出设备是显示器,如果我们想用这个标准的输出函数向串 口发送数据,需要改写fputc这个函数。 int fput(int ch,FILE *f) { /*Place your implementation of fputc here,e.g.write a character to the USART*/ USART_SendData(USART1,(u8)ch); /*waiting here until the end if transmission*/ while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); return ch; }
• •
STM32串行通信接口 • STM32单片机USART的工作机制和编程流程
– 使能USART的时钟
USART1的时钟源来自高速外设总线APB2时钟源。 RCC_APB2PeriphClockCmd(RCC_APB2PerBaidu Nhomakorabeaph_USART1,ENABLE );
– 设置USART复用端口
TXD:PA9设置成复用功能的推挽输出,AF_PP(Alternate-Function Push-Pull) RXD:PA10设置成浮空输入,IN_FLOATING。 初始化程序参考教材P183
• • • • • • • • • • • • • • • • • • • • • • • • void USART_Configuration(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 115200; // 设置波特率为115200 USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 8位传输 USART_InitStructure.USART_StopBits = USART_StopBits_1; // 1个停止位 USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 禁止硬件流控制,禁止RTS 和 CTS 信号 /* 允许接收、发送 */ USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_Clock = USART_Clock_Disable; // 串口时钟禁止 USART_InitStructure.USART_CPOL = USART_CPOL_Low; // Clock is active low /* Data is captured on the middle */ USART_InitStructure.USART_CPHA = USART_CPHA_2Edge; /* LastBit: The clock pulse of the last data bit is not output to the SCLK pin */ USART_InitStructure.USART_LastBit = USART_LastBit_Disable; /* 初始化USARTx:配置串口的波特率,校验位,停止位和时钟等基本功能 */ USART_Init(USART1, &USART_InitStructure); /* 清除发送完成标志位 */ USART_ClearFlag(USART1, USART_FLAG_TC); /* Enable USART1,使能串口1 */ USART_Cmd(USART1, ENABLE); }
任务二 串口Echo回应程序
• 本任务是实现串口Echo回应功能:从PC机的串口调试软件向STM32单 片机发送一个字符,STM32单片机收到后,会回传这个字符给PC机,如 下图。代码请参考教材第192页 UASRT_Char_Echo。
任务二 串口Echo回应程序
• 该你了
– 实现串口字符串Echo功能,即从PC机向单片机发送一串字符, 以#作为结束标记。
任务一 编写串口通信程序
程序运行结果
串行RS-232电平与TTL电平转换
• 在数字电路中,只存在“1”和“0”两种逻辑状态,也就是“高电平”和“低电 平”。 – TTL(Tansistor-Transistor Logic),是指三极管-三极管逻辑电 路。。它的逻辑“1”电平是5V,逻辑“0”电平是0V。 – RS232标准的逻辑“1”电平是-5V--15V,逻辑“0”电平是+5V- +15V。
• STM32单片机的USART串口支持同步单向通信、半双工单 线通信和全双工模式(同时收发),也支持LIN(局域互联 网:Local Interconnection Network)、智能卡协议和IrDA (红外数据组织)SIR ENDEC规范,以及调制解调器 (CTS/RTS)操作。STM32单片机的USART串口还具有 多缓冲器配置的DMA方式,可以实现高速数据通信。 RX:接收数据串行输入端口。通过过采样计数来区别数据 和噪声,从而恢复数据; TX:发送数据输出端口。当发送器被禁止时,输出引脚恢 复到它的I/O端口配置。当发送器被激活,并且没有东西发 送时,TX引脚处于高电平。
任务二 串口Echo回应程序
• 该你了 – 用串口2或串口3实现字符串Echo回应
由于串口 2 和串口 3 是 连 接 在 APB1 (低速外设)上, 而串口1是连接在 APB2 ( 高 速 外 设)上,因此当使 用串口 2 或者串口 3 时,要注意相关时 钟的配置。同时, 每个串口对应的引 脚也不同,需要进 行引脚的定义。
工程素质和技能
• 熟悉STM32单片机串口的结构,串口波特率的计算 • 分析头文件中STM32单片机串口的初始化代码及使用方法: 发送和接收数据的例程 • 掌握改写fputc函数将printf的输出重定向为串口的工作原理 • TTL电平与RS232电平转换接口芯片的功能 • 掌握USART_Scanf函数,回顾一下如何通过串口输入数据控 制机器人的运动 • 掌握串口2或串口3与串口1编程的不同之处
相关文档
最新文档