简介:本项目为基于STM32F103R6为核心 的串口打印工程。为新手刚入门串口最基本的串口打印任务。主程序非常简单,主要关注串口的初始化程序,学会配置并应用。工程保留了上一个任务的按键和LED模块,没有做调用。为了简化程序让大家看的只有串口的程序。大家可以藉由按键和LED模块子程序完成更复杂的任务。
目的:学会串口的底层驱动,学会应用proteus的串口显示工具调试程序。
硬件:PA9和PA10直接连接proteus的virtual terminal工具
软件:串口打印delay+延时时间,并经过对应的延时打印该信息。目前调试工具显示的时间准确性与程序不符,没找到具体原因。但是可以验证基本的串口程序是否穿输出数据,这个是可以验证的。
在计算机网络与分布式工业控制系统中,设备之间经常通过各自配备的标准串行通信接口,加上合适的通信电缆实现数据与信息的交换。
所谓“串行通信”是指外设和计算机之间,通过数据信号线、地线与控制线等,按位进行传输数据的一种通信方式。
目前常见串行通信接口标准有RS-232、RS-422和RS-485等,它们由美国电子工业协会(Electronic Industries Association,EIA)发布。本节主要学习RS-232标准相关的内容。
RS-232标准最早是为远程通信而设计的,用于连接数据终端设备(Data Teminal Equipment,DTE)与数据通信设备(Data Communication Equipment,DCE),现普遍用于计算机之间或计算机与外设之间的近端连接。
在异步串行通信中,数据是以数据帧(Data Frame)为单位进行传输的。每个数据帧承载一个字符数据,异步串行通信的数据帧结构如图所示:
一、Proteus仿真图
电路讲串口直接连接到virtual terminal调试工具监视串口发送的数据,验证程序是否有问题。
二、MED代码
在上一节使用了正点原子的模块化设计思维后,本节依旧使用正点原子的模板程序。重点是怎么使用,大家可以看一下mani.c代码非常简单,在调用了usart.c之后我们的代码仅仅需要一句话就可以实现发送数据:
int main(void)
{
uart_init(9600); //串口初始化比特率为9600
while(1) //进入循环
{
printf("delay 1000ms\r\n"); //打印
delay_ms(1000);
printf("delay 2000ms\r\n"); //打印
delay_ms(2000);
}
}
大家可以看到程序和仿真结果,仅仅需要一行语句就可以直接实现串口输出内容。而printf函数是实现此功能的核心。
实际调用的发送函数是fputc函数
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
串口通过fputc函数将数据发送出去。
三、仿真效果和源代码资源