打开System Core点击SYS
打开可连续写入
选用外部时钟
打开串口一
开启异步输出模式
配置参数
无需更改参数 波特率默认为115200 若比赛规定传输速率可自行更改
查看原理图可知USART1本开发板采用PA10与PA9引脚
配置PA10 PA9引脚
打开中断
配置USART中断的抢占优先级和响应优先级
因为只有一个外部中断这里可以随意配置
系统时钟配置为80MHZ
按Enter键后
点击ok
时钟配置完成
工程配置如下
打开文件
点击GENERATE CODE生成代码
点击Open FolderOpen Project打开工程
编译后打开usart.c文件添加如下代码
stdio.h头文件包含了下面要用的函数fputch()
将代码添加在/* USER CODE BEGIN 0 /与/ USER CODE END 0 */之间避免重新生成工程后代码消失
类似接下来的代码都放在USER CODE BEGIN与USER CODE END之间
在usart.c文件中
重定义fputch()函数
其中函数HAL_UART_Transmit()的作用为传输字符,第一个参数为配置usart1的UART_HandleTypeDef结构体,第二个参数为发送字符所在地址,第三个参数为发送字节数,第四个参数为最多等待时间。
int fputc(int ch, FILE *f)
{ HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
return (ch);}
在main.c文件中添加如下代码来测试串口功能
其中HAL_Delay()函数是基数为0.001秒的延迟函数,这里输入100进行0.1秒的延迟,避免串口接受软件异常
点击debug后配置所用调试器为CMSIS-DAP Debugger
测试结果如下
结果正确,串口配置到这里正常。
删除while中的代码
(这两行代码是为了便于测试串口程序是否正常),添加如下代码
uint8_t Rxbuf[6];
uint8_t Txbuf[]=“发送正常\r\n”;
在main.c中添加两个全局变量数组
Rxbuf[ ]数组用于存放所接收的代码, Txbuf[ ]用于存放发送字符因函数HAL_UART_Receive_IT()与HAL_UART_Transmit_IT()所接受参数类型为uint8_t及无符号字符型变量类型所以Rxbuf[[ ] Txbuf[ ]变量类型为uint8_t。
HAL_UART_Receive_IT()函数第一个参量为串口UART_HandleTypeDef结构体,第二个参数为获取字符存放地址,第三个参数为获取size个字符后产生中断。HAL_UART_Transmit_IT()同理。
其中Rxbuf[x ]数组长度为所需接受字符个数长度+2;例如
欲输入“1234”后产生中断,则x等于6.
在main.c文件中添加如下代码
HAL_UART_Receive_IT(&huart1, Rxbuf, sizeof(Rxbuf));//开启接收中断
HAL_UART_Transmit_IT(&huart1,Txbuf,sizeof(Txbuf));
对弱定义函数(可有用户重新定义的函数类型)
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)进行重定义 此函数可在
中的找到,在产生接收中断后会进入此函数。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit_IT(&huart1, Rxbuf, sizeof(Rxbuf));//发送所接受的值
HAL_UART_Receive_IT(&huart1, Rxbuf, sizeof(Rxbuf));//再次开启接收中断
}、
测试结果如下
,发送两次1234后的结果正确
vbs:把一段文字中指定字符颜色变成红色的正则 functionc(Tstr,Word) Dimre Setre...
一石激起千层浪,继中国区浩浩荡荡的大裁员告一段落之后,甲骨文并未因此收起手...
歌词编辑器 歌词编辑器 第一步:选择要播放的歌曲并播放 第二步:填写全部的歌词...
ADO对象: Connection Command Recordset Record Stream ASP支持的对象很多,可...
计算属性computed: 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持...
本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javas...
前言 相信大家都知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也...
微信文件传输助手是微信电脑版与手机微信之间相互传输图片等文件的好工具,但很...
【排序算法】之lowb三人组冒泡、插入、选择 什么是lowb三人组 冒泡排序bubble so...
一、正则表达式概述 二、正则表达式在VBScript中的应用 三、正则表达式在VavaScr...