电子时钟的实现
时间:10-02
整理:3721RD
点击:
电子时钟
用基本定时器产生精确1S定时中断
创建工程
具体的如何创建工程,我之前的帖子都说明了,下面就不再赘述了。
首先打开Tim6
配置定时器参数设置为1S产生一次中断
PSC时分频器,下面讲一下分频器数值的意义
本来我们时钟频率是72MHZ,经过分频之后变成了72000000/36000=2000,也就是1S的时间计数器走2000个数,
下面的Period填的是2000,就是计数器数值达到2000后就会自动清零,并产生中断。
这样的话就会产生1S的中断了。
开启TIM6的中断
配置中断优先级
生成工程
Main.c添加下面代码
- /* USER CODE BEGIN 2 */
- HAL_TIM_Base_Start_IT(&htim6);
- /* USER CODE END 2 */
修改中断处理函数在stm32fxx_it.c
- void TIM6_IRQHandler(void)
- {
- /* USER CODE BEGIN TIM6_IRQn 0 */
- static GPIO_PinState LD2_state=GPIO_PIN_RESET;
- static int8_t h=0,m=0,s=0;
- /* USER CODE END TIM6_IRQn 0 */
- HAL_TIM_IRQHandler(&htim6);
- /* USER CODE BEGIN TIM6_IRQn 1 */
-
- if(s==59)
- {
- s=0;
- if(m==59)
- {
- m=0;
- if(h==23)
- {
- h=0;
- }
- else
- h++;
- }
- else
- m++;
- }
- else
- s++;
-
- HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,LD2_state);
- LD2_state = ~ LD2_state;
- /* USER CODE END TIM6_IRQn 1 */
- }
只要再分别把时分秒输出显示就完成时钟了。
再加个效果演示视频就更好咯!