迅维网

查看: 1275|回复: 0
打印 上一主题 下一主题

NUCLEO-F412ZG试用体验】电子时钟的实现

[复制链接]
跳转到指定楼层
1#
发表于 2016-12-27 10:08:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 山东青岛 来自 山东青岛

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
电子时钟

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



您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复