热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

蓝桥杯嵌入式模板构建_usart

1.配置引脚原理图上串口的两个引脚为PA9、PA102.代码实现注意:TMD系统时钟配置函数SystemClock_Config();最好是放在main函数开头的位

1.配置引脚

在这里插入图片描述
原理图上串口的两个引脚为PA9、PA10

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.代码实现

注意:
TMD系统时钟配置函数SystemClock_Config();最好是放在main函数开头的位置,放在所有其他模块init函数之前,要不然tmd会产生非常玄学的问题,比如串口发送的是乱码,还尼玛死活看不出来。



void Uart_Func() //串口发送
{if (uwTick - Uart_Delay_uwTick < 1000) return; //每一秒发送一次Uart_Delay_uwTick &#61; uwTick;sprintf(str, "hello,world!\r\n");HAL_UART_Transmit(&huart1, (unsigned char *)str, strlen(str), 50);//发送所用到的函数
}

USART1_Init();HAL_UART_Receive_IT(&huart1, rec_str, 1);//在初始化之后&#xff0c;需要开启中断&#xff0c;否则不能接收到中断void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//串口回调函数&#xff0c;接受数据后执行任务
{Led_Disp(0xaa);HAL_Delay(300);Led_Disp(0x00);HAL_UART_Receive_IT(&huart1, rec_str, 1);//每次结束任务后需要再次开启中断
}

3. 注意事项

如果在串口中断里面调用HAL_Delay()函数&#xff0c;则串口中断的优先级必须比滴答定时器的优先级低&#xff1b;因为HAL_Delay()函数是由滴答定时器写的&#xff0c;如果串口优先级比滴答定时器优先级高&#xff0c;则程序会卡住

HAL_NVIC_SetPriority(USART1_IRQn, 1, 0); //串口优先级设置&#xff1a;抢占优先级1&#xff0c;响应优先级0
HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); //滴答优先级设置&#xff1a;抢占优先级0&#xff0c;响应优先级0&#xff0c;形参TickPriority&#xff08;所在大函数的入口参数&#xff09;就是对应的抢占优先级


滴答定时器优先级怎么找&#xff1f;&#x1f447;
在这里插入图片描述

在这里插入图片描述


推荐阅读
author-avatar
蓝月亮乐悠悠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有