使用CubeMx设置延时us与串口通信配置

串口

使用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版权协议,转载请附上原文出处链接和本声明。