我是靠谱客的博主 快乐花卷,最近开发中收集的这篇文章主要介绍【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]

最后

以上就是快乐花卷为你收集整理的【STM32开发笔记】代码|定时中断功能函数的全部内容,希望文章能够帮你解决【STM32开发笔记】代码|定时中断功能函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部