由于智能监控和文护系统对实时性要求较高,串口软件设计采用中断的方式进行,以获得高效、安全的信息传输,提高软件的效率。串口通信的基本流程如图3.5所示。
图3.5 串口与STM32间的通讯流程图
为实现智能监控串口通信,需设置串口通信波特率。液压机PLC模块和智能监控端的波特率在寄存器中的值应设置成相同,在本系统中都设置为9600。
根据任务要求,程序内容主要包括:
(1) 初始化串口,使能串口中断。
(2) 通过串口中断服务程序检测串口。
(3) 将收到的字符发送回PC,然后回到步骤(2)。
对于程序的实现,我们用的是MDK开发平台。本系统实现串口通信的工程包含4类源文件,如图3.6所示:
图3.6 工程源文件
图3.6工程源文件的简单介绍如下:
(1) ASM--startup_stm32f10x_hd.s 由于STM32F103是大存储器芯片,因此采用STM32标准库自带的大存储器芯片启动代码,这个文件已经配置好了初始状态,以及中断向量表,可以直接在工程里使用。
(2) FWLIB--stm32f10x_gpio.c ST公司的标准库,包含通用IO口设置的函数。
(3) stm32f10x_rcc.c ST公司的标准库,包含了关于对系统时钟设置的函数。
(4) stm32f10x_USART.c ST公司的标准库,包含了关于USART设置的函数。
(5) Misc.c ST公司的标准库,包含了关于中断设置的函数。
(6) CMSYS是关于CORETEX-M3平台的系统函数及定义。
(7) USER中main.c是例程的主函数。
(8) USER中stm32f10x_it.c 是中断服务程序。
串口通信的控制端口程序如下所示:
USART_Config(USART_TypeDef* USARTx)
{
USART_InitStructure.USART_BaudRate =9600; //速率9600bps
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;//停止位1位USART_InitStructure.USART_Parity = USART_Parity_No; //无校验位
USART_InitStructure.USART_HardwareFlowContro=USART_HardwareFlowControl_None; //无硬件流控
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
USART_Init(USARTx, &USART_InitStructure); //配置串口参数函数
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //使能接收中断
USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //使能发送缓冲空
USART_Cmd(USART1, ENABLE); //串口发送和接收数据:
USART_SendData(USART1,0x--); //发送数据
USART_ReceiveData(USART1,0x--); //接受数据函数
void GPIO_Configuration(void) //端口配置函数: 大型精密成型液压机的嵌入式智能监控与维护单元软件设计(6):http://www.youerw.com/zidonghua/lunwen_8245.html