串口
使用CubeMX进行延时配置

打开串口中断

时钟配置

配置一个通用定时器用来定义delay_us()

定时器中断

Keil中程序的改写
创建delay_us()函数完成延时us
首先在tim.c程序的user code 1中添加代码
/* USER CODE BEGIN 1 */
void delay_us(uint16_t us)
{
uint16_t differ = 0xffff-us-5;
__HAL_TIM_SET_COUNTER(&htim7,differ); //??TIM7??????
HAL_TIM_Base_Start(&htim7); //?????
while(differ < 0xffff-5){ //??
differ = __HAL_TIM_GET_COUNTER(&htim7); //?????????
}
HAL_TIM_Base_Stop(&htim7);
}
/* USER CODE END 1 */
在tim.h头文件中添加
void delay_us(uint16_t us);
对程序进行测试
串口配置
usart.c中对printf重定向,两处修改 根据串口号修改USART2和huart2,下面的程序为USART2示例
/* USER CODE BEGIN 0 */
uint8_t data_buff[1];
#if 1
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
void _sys_exit(int x)
{
x = x;
}
int fputc(int ch, FILE *f)
{
while((USART2->SR&0X40)==0);
USART2->DR = (uint8_t) ch;
return ch;
}
#endif
/* USER CODE END 0 */

开启串口中断
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
在usart.h中添加头文件
在main.c函数中添加中断允许
__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
__HAL_UART_ENABLE_IT(&huart2, UART_IT_TC);
测试串口ok
完成通用Cube MX串口通信
Copyright © 2021 by RichardYang. All rights reserved.
仅供参考,严禁转载,感谢。
版权声明:本文为u011442170原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。