stm32f1系列(三) 定时器部分

今天学习了独立看门狗(IWDG)、窗口看门狗(WWDG)和定时器部分。
首先先谈谈看门狗这个知识点,是用于监测程序运行状态的芯片或者模块,在stm32里面分为独立看门狗和窗口看门狗,对其中的区别是:独立看门狗是无论在什么时候都可以进行“喂狗”,然后利用重装载寄存器(RLR)进行重新装载初值,从而防止系统复位,当然在其中还有些要注意的就是IWDG_RLR以及IWDG_PR是具有写保护的,所以需要在IWDG_KR里面写入0x5555取消写保护进行初始化;对于窗口看门狗主要就是有着上下窗口,当然下窗口是0x3f,所以上窗口的初始值一定是大于0x3f,而且这个可以作为中断源。
再其次,谈谈今天的重头戏就是定时器,当然今天还没有搞到pwm波的产生,今天自己就写了个定时器中断,是利用TIM2的通用定时器,照例贴一段代码。
首先是tim2.c文件的内容:

#include<tim2.h>
#include<led.h>

void TIM2_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);


TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period=arr;
TIM_TimeBaseInitStructure.TIM_Prescaler=psc;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);


TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
NVIC_Init(&NVIC_InitStructure);

TIM_Cmd(TIM2,ENABLE);

}

void TIM2_IRQHandler(void)
{
if(TIM_GetFlagStatus(TIM2,TIM_FLAG_Update)!=RESET)
{
TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);
LED0=!LED0;
}
}
对于里面的解释可以参考之前写的几个函数的解释。主函数比较简单,所以就没有必要贴出来了,在里面主要简单的写一下定时器中断的步骤:
①RCC_APB1PeriphClockCmd();
②TIM_TimeBaseInit();//初始化定时器,配置ARR和PSC寄存器
③开启定时器中断以及初始化//NVICTIM_ITConfig(),NVIC_Init();
④TIM_Cmd();
⑤中断服务函数TIM2_IRQHandler();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值