本帖最后由 szopenmcu 于 2015-4-11 13:51 编辑
金龙107——USART
3.1串口简介:通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART 利用分数波特率发生器提供宽范围的波特率选择。支持同步单向通信和半双工单线通信。也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC 规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA 方式,可以实现高速数据通信。 3.2实验说明:在本实验中,通过串口调试助手接收由金龙STM32F107发送上来的字符,并可以通过串口调试助手向STM32F107发送数据,控制相应LED灯的亮灭。 主要跳线帽:JP4和JP7都接在2-3上(boot设置),JP10,JP11和JP3插在2-3上。上位机需要安装usb转串口的驱动程序。 3.3硬件描述:该实验使用了STM32的USART外设,在我们的开发板上集成了usb转串口,方便了笔记本使用者,直接使用串口,不需要购买另外的usb转串口线。在开发板上我们把USART2用PL2303,做成了usb转串口,接口是USB1;USART1通过MAX3232引出为标准的串口。 3.4程序说明:我们先来回顾一下串口的通信协议,要配置串口通信,有字长,波特率,奇偶校验位和停止位这些参数需要配置。为了能方便的对这些参数进行更改,这就需要一个串口初始化的结构体,当然,ST的库函数里已经帮我们写好,只需调用即可。 在该程序中主要是中断,USART的设置,printf的调用,以及USART1中断程序的编写。 使用到USART1的接收中断,就要对其优先级和中断通道等配置,所以要对其NVIC进行配置。如果对中断优先级和中断分组的配置还不是很清楚,我们在上一章有详细的讲解。 USART的配置主要是对应端口引脚的配置,以及波特率,数据位,和校验位等,对应引脚要选择复用功能,还要端口复用的时钟也要打开,最后还要启动USART外设,同时,因为本例中使用到USART1的接收中断,所以还要使能相应的中断。
Printf的调用,要在程序中重新编写int fputc(int ch, FILE *f)函数,然后我们就可以就直接使用printf函数的功能。 USART中断函数的编写,进入中断之后,首先要判断中断源,然后清除中断标志位。在中断函数里面判断接收到的字符,然后点亮对应的LED灯。 3.5实验现象: 连接usb线到usb-1端口,连接串口线,插好跳线帽,下载程序,打开串口调试程序,分别找到对应的端口,如果选择的是USART1对应的端口,则会显示“USART1测试正常!”和“请输入a~c的任意字母控制LED的亮灭”然后通过串口调试助手发送相应的字符,则对应的LED灯亮,发送字符a,LD3亮,字符b,LD4亮,字符c,LD5亮;如果选择的是USART2对应的端口,则会显示“USART2 (USB转串口) 测试正常!”。
|