赞
踩
任务一:串口发送计数器的值
1.打开串口2及其中断,用于发送数据
2.将高速外部时钟源设置为晶振,提高定时精度
3.将HCLK改为72MHz
4.开启定时器
TIM4–勾选 Internal Clock(内部时钟)/
TIM2–将Clock Source选择为Internal Clock
5.设置预分频器
Prescaler–n(想要实现的分频)-1
Counter Period(自动重装载寄存器)m-1
[即每数到m次计数器清零)
定时器启动函数 HAL_TIM_Base_Start
(接收tim4句柄的指针)
1.启动定时器
Base定时器基本用法 调用此函数后TIM4开始计时工作
2.打印计数器的计数值
定义counter存储计数器的值
定义char数组message用以拼接字符串
宏定义-获取计数器值函数__HAL_TIM_GET_COUNTER(参数为htim4的指针)
tips:hal库中宏定义函数比较偏底层,倾向于直接对寄存器进行操作
3.循环中
(1) 使用counter变量接受获取到的计数器值
(2) 使用sprintf进行字符串拼接
(用于储存字符串的message变量,
(3) 想用串口发出的字符串"counter:%d",counter);
串口中断发送函数 HAL_UART_Transmit_IT
(用来发送的串口的指针,要发送数据的指针,发送数据的长度)
(4) 防止发送过快 HAL_Delay
tips:HAL_Delay函数精确延时 每次延时都比填入数字多1ms
(5)sprintf–头文件stdio
strlen–头文件string
/* USER CODE BEGIN Includes */ #include <stdio.h> #include <string.h> /* USER CODE END Includes */ ... /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start(&htim4); int counter=0; char message[20]; /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { counter=__HAL_TIM_GET_COUNTER(&htim4); sprintf(message,"counter: %d",counter); HAL_UART_Transmit_IT(&huart2,(uint8_t*)message,strlen(message)); HAL_Delay(99); /* USER CODE END WHILE */
tips:开始时按KRST键(reset复位按钮)
从0开始计数 每100毫秒数1000个数
到10000个数(即9999)时计数器清零
任务二:定时
1.启动定时器(+_IT 使其清零时触发更新中断)
/* USER CODE BEGIN 0 */
char data[]="声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/739179
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。