历史上的今天
今天是:2024年12月29日(星期日)
2018年12月29日 | stm32学习笔记(七)定时器中断
2018-12-29 来源:eefocus
#include "timer.h"
#include "led.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//Mini STM32开发板
//通用定时器 驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2010/12/03
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 正点原子 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
//通用定时器中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
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( //使能或者失能指定的TIM中断
TIM3, //TIM2
TIM_IT_Update ,
ENABLE //使能
);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
TIM_Cmd(TIM3, ENABLE); //使能TIMx外设
}
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
LED1=!LED1;
}
}
普通定时器只能向上计数,计数达到最大装载值时产生更新时间,并清零从头开始计数。计数最大值为65535.
定时中断周期为 (1/72M)*7200*5000=500ms
/ /这里时钟选择为APB1的2倍,而APB1为36M
原因

史海拾趣
|
第一次接触PWM脉宽调制,终于实现了LED背光板的渐亮渐灭,把代码贴出来。一则请大家指点,二则把实现的思想跟新人分享。 /***************************************************************************** 硬件说明: AT89S52,晶振11.0592MHz ...… 查看全部问答> |
|
急啊!单片机串口通信程序问题! 在keilC中编译通过,可是输出的只有“FDhb8000FDhb8000FDhb8000FDhb8000”。 我想要的结果是输出\"MA20000\"字符串后,延时120毫秒输出“FDhb8000”到串口。 这个程序怎么样修改才可以得到我所要的结果呢。 请 ...… 查看全部问答> |
|
在config.bib中把CE镜像划分为了4个部分,例如: KERNEL.BIN,DRIVER.BIN,APP.BIN,NK.BIN 这样做以便后期对单个镜像文件升级,现在问题来了,每个BIN文件中的DLL在SLOT0,SLOT1中所占用的地址空间都是在编译器时计算好的。如果后面我的APP.BIN变化 ...… 查看全部问答> |
|
请教一些FPGA的问题: 1.大家在写程序的时候,信号的赋值延时一般设多少,例如 S_1<=S_2 afer 2 ns 2.看了网上的一个代码,在定义输出时用到: port( ...... out_1:out buffer std_logic ...... ) 这个buffer在 ...… 查看全部问答> |
|
void main(void) { int k; WDTCTL = WDTPW + WDTHOLD; BCSCTL2 = 0x88; Init_ADC(); ADC12CTL0 |= ADC12SC; _EINT(); _NOP(); while(1); } void Init_ADC(void) { ...… 查看全部问答> |
|
GPS可以用来卫星定位,很多商家都看到了GPS定位的商机,推出了GPS个人跟踪器定位。小编整理了一些关于GPS个人跟踪器定位的文章,供大家参考。 GPS卫星跟踪定位器 利用GPS卫星定位终端对远程目标准确定位、实时追踪、远程监听、防盗 ...… 查看全部问答> |




