【STM32开发笔记】代码|定时中断功能函数

#include "sys.h"
/********************
①使能定时器时钟。
RCC_APB1PeriphClockCmd();
②  初始化定时器,配置ARR,PSC。
TIM_TimeBaseInit();
③开启定时器中断,配置NVIC。
void TIM_ITConfig();
NVIC_Init();
④使能定时器。
TIM_Cmd();
⑥编写中断服务函数。
TIMx_IRQHandler();
*****************/
void TIM3_Init(u16 arr,u16 psc)
{
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	NVIC_InitTypeDef NVIC_InitStruct;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
	
	TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值	 计数到5000为500ms
	TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  10Khz的计数频率  
	TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
 
	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
	
/* ------------------配置定时器---------------------------------- */	
	NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;  
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
	
	NVIC_Init(&NVIC_InitStruct);		
/* -------------------------------------------------------------- */
	

	TIM_Cmd(TIM3, ENABLE);  //使能TIMx外设
	
}
void TIM3_IRQHandler(void)   //TIM3中断
{
	
	if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 
		{ 
            /*    此处可编写中断时需要处理的程序     */
            /*比如LED灯电平反转函数,即可实现定时亮灭*/
			/*                                    */
			
            TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx的中断待处理位:TIM 中断源 
			
		}
}

移植时注意更改TIMx以及中断服务函数名称,函数名称在启动文件中查找。

此处以"startup_stm32f10x_ld.s"为例

EXPORT  PVD_IRQHandler             [WEAK]
    EXPORT  TAMPER_IRQHandler          [WEAK]
    EXPORT  RTC_IRQHandler             [WEAK]
    EXPORT  FLASH_IRQHandler           [WEAK]
    EXPORT  RCC_IRQHandler             [WEAK]
    EXPORT  EXTI0_IRQHandler           [WEAK]
    EXPORT  EXTI1_IRQHandler           [WEAK]
    EXPORT  EXTI2_IRQHandler           [WEAK]
    EXPORT  EXTI3_IRQHandler           [WEAK]
    EXPORT  EXTI4_IRQHandler           [WEAK]
    EXPORT  DMA1_Channel1_IRQHandler   [WEAK]
    EXPORT  DMA1_Channel2_IRQHandler   [WEAK]
    EXPORT  DMA1_Channel3_IRQHandler   [WEAK]
    EXPORT  DMA1_Channel4_IRQHandler   [WEAK]
    EXPORT  DMA1_Channel5_IRQHandler   [WEAK]
    EXPORT  DMA1_Channel6_IRQHandler   [WEAK]
    EXPORT  DMA1_Channel7_IRQHandler   [WEAK]
    EXPORT  ADC1_2_IRQHandler          [WEAK]
    EXPORT  USB_HP_CAN1_TX_IRQHandler  [WEAK]
    EXPORT  USB_LP_CAN1_RX0_IRQHandler [WEAK]
    EXPORT  CAN1_RX1_IRQHandler        [WEAK]
    EXPORT  CAN1_SCE_IRQHandler        [WEAK]
    EXPORT  EXTI9_5_IRQHandler         [WEAK]
    EXPORT  TIM1_BRK_IRQHandler        [WEAK]
    EXPORT  TIM1_UP_IRQHandler         [WEAK]
    EXPORT  TIM1_TRG_COM_IRQHandler    [WEAK]
    EXPORT  TIM1_CC_IRQHandler         [WEAK]
    EXPORT  TIM2_IRQHandler            [WEAK]
    EXPORT  TIM3_IRQHandler            [WEAK] //例子中使用的是TIM3,所以使用此名称
    EXPORT  I2C1_EV_IRQHandler         [WEAK]
    EXPORT  I2C1_ER_IRQHandler         [WEAK]
    EXPORT  SPI1_IRQHandler            [WEAK]
    EXPORT  USART1_IRQHandler          [WEAK]
    EXPORT  USART2_IRQHandler          [WEAK]
    EXPORT  EXTI15_10_IRQHandler       [WEAK]
    EXPORT  RTCAlarm_IRQHandler        [WEAK]
    EXPORT  USBWakeUp_IRQHandler       [WEAK]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSDNITK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值