迅维网

标题: NUCLEO-F412ZG试用体验】电子时钟的实现 [打印本页]

作者: バ幸福De右岸    时间: 2016-12-27 10:08
标题: NUCLEO-F412ZG试用体验】电子时钟的实现
电子时钟

用基本定时器产生精确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 */
}
复制代码
只要再分别把时分秒输出显示就完成时钟了。







欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4