STM32:定时器外部中断

简介: STM32:定时器外部中断

1.main.c(主函数部分)代码:


3db25bd141e145e78cbf56c95cfe44a4.png

37b1332954c44a52832b12b8c68293f1.png


#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"
uint16_t Num;
int main(void)
{
    OLED_Init();    
    OLED_ShowString(1,1,"Num:");
    OLED_ShowString(2,1,"CNT:");
    Timer_Init();
    while(1)
    {
        OLED_ShowNum(1,5,Num,4);
        OLED_ShowNum(2,5,Timer_GetCounter(),4);
    }
}
void TIM2_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)
    {
        Num++;
        TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
    }
}

2.定时外部中断(Timer.c)代码部分:


23ee4b73f2a546ecae04594be9abf4d6.png


e0a9311df2734ba785fd8e1091ea66ee.png

#include "stm32f10x.h"                  // Device header
void Timer_Init(void)
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStruct);
    TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0x00);
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
    TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInitStruct.TIM_Period=10-1;
    TIM_TimeBaseInitStruct.TIM_Prescaler=1-1;
    TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;
    TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);
    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
    NVIC_InitTypeDef NVIC_InitStruct;
    NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
    NVIC_Init(&NVIC_InitStruct);
    TIM_Cmd(TIM2,ENABLE);
}
uint16_t Timer_GetCounter(void)
{
    return TIM_GetCounter(TIM2);
}


3.定时器外部中断(Timer.h)代码部分:


a3034d323cec4f30b7cff92055d6108e.png


#ifndef  __TIMER_H
#define  __TIMER_H
void Timer_Init(void);
uint16_t Timer_GetCounter(void);
#endif
相关文章
|
6月前
|
传感器 存储
STM32--TIM定时器(3)
STM32--TIM定时器(3)
145 0
STM32--TIM定时器(3)
|
6月前
|
编解码 芯片
STM32--TIM定时器(2)
STM32--TIM定时器(2)
168 0
|
6月前
|
传感器
STM32--TIM定时器(1)
STM32--TIM定时器(1)
257 0
|
6月前
STM32F103标准外设库——SysTick系统定时器(八)
STM32F103标准外设库——SysTick系统定时器(八)
465 0
STM32F103标准外设库——SysTick系统定时器(八)
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
423 2
|
4月前
|
传感器
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
333 0
|
4月前
|
芯片
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
239 0
|
5月前
|
芯片
【STM32】STM32简述定时器
【STM32】STM32简述定时器
|
4月前
STM32CubeMX 定时器
STM32CubeMX 定时器
143 0