历史上的今天
今天是:2025年04月11日(星期五)
2019年04月11日 | STM32定时器中断-库函数
2019-04-11 来源:eefocus
程序要求:通过定时器中断配置,每500ms中断一次,然后中断服务函数中控制LED实现LED1状态取反
下面给出几个主要文件的程序模板
timer.h:
#ifndef __TIMER_H
#define __TIMER_H
#include "sys.h"
void TIM3_init(u16 arr, u16 psc);
#endif
timer.c
#include "timer.h"
#include "led.h"
//tim的相关函数去stm32f4xx_tim.h中去找
void TIM3_init(u16 arr, u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器时钟
TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //预分频系数=psc
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数模式
TIM_TimeBaseInitStructure.TIM_Period = arr; //自动装载值=arr
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //(这里没有太大作用)
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure); //初始化定时器,配置ARR,PSR
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //开启中断(定时器3,更新中断,ENABLE),使能定时器3的更新中断
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //定时器x中断
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01; //抢占优先级1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure); //开启定时器中断,配置NVIC
TIM_Cmd(TIM3, ENABLE); //使能定时器
}
void TIM3_IRQHandler(void) //编写中断服务函数
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
LED1 = !LED1;
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}
}
main.c
#include "led.h"
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "timer.h"
//通过定时器中断配置,每500ms中断一次,然后中断服务函数中控制LED实现LED1状态取反
int main()
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
LED_Init();
TIM3_init(5000-1, 8400-1);
//溢出时间(Tout)的计算=(arr+1)*(psc+1)/Tclk
//Tclk是定时器预分频前的时钟,是APB1的时钟经过倍频1/2后得到
//f(频率)=Tclk/(psc+1)
//T(周期)=1/f=(psc+1)/Tclk
//Tout(溢出时间)=(arr+1)*T
while (1)
{
LED0 = !LED0;
delay_ms(200);
}
}
史海拾趣
|
现在个人能够想到的就是这些啦,可能还是受到了很多的限制,自己了解的有限,以后也主要是弄这一块的,这个板块你希望还看到什么话题,希望找到什么的,我们会尽量满足,大家提提,还有这么多的版主一定能够解决你的疑问的!… 查看全部问答> |
|
看到DIY示波器的礼品是Shuffle,眼馋了好一阵子呢,看到了一篇文章,给大伙看看,实际上,别看外观那么好话,拆解完也没啥(吃不着葡萄说下葡萄酸),嘿嘿 第1页:跟U盘一样大 新iPod shuffle曝光 苹果昨天发布了第三代iPod shuffle超迷你音乐播 ...… 查看全部问答> |
|
自己编了个wince 6.0的模拟器,下载了一个flash播放器,在开发板的真实硬件环境可以跑起来并且运行flash,但是在模拟器上只能运行flash播放器,无法运行flash文件,请问是不是需要什么库或者组件的支持?谢谢!!… 查看全部问答> |
|
非常期待能够申请到板子。我是深圳清华研究院电子信息研究所的,最近所里有物联网的项目研究,这要是智能家居部分,看看能不能用这块板子作为开发平台 [ 本帖最后由 fqzxw 于 2010-10-18 09:56 编辑 ]… 查看全部问答> |
|
:)小弟初次用STM32做的板子,请高人看看如何才能做到8位机的 小弟年前匆匆忙忙帮朋友做的小东西, 当时还没完工时的照片. 请大家看看是否做到了类似配置的8位机的成本: 6 开关量输入 6 继电器接点出 6&n ...… 查看全部问答> |




