- 积分
- 3553
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2014-11-13
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
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 */
}
复制代码
只要再分别把时分秒输出显示就完成时钟了。
|
|