历史上的今天
今天是:2025年03月30日(星期日)
2021年03月30日 | STM32如何设置定时器
2021-03-30 来源:eefocus
STM32如何设置定时器
下面以stm32的TIM2作为实例一步步配置成为定时器:
第一种
对定时器的基本配置
TIM_TimeBaseStructure.TIM_Period = 1000; //设置自动装载寄存器
TIM_TimeBaseStructure.TIM_Prescaler = 35999; //分频计数
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //选择向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_Cmd(TIM2, ENABLE); //是能定时器
始能定时器的中断:
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
在开启时钟里一定要打开TIM2的时钟,函数表达式如下:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
4:中断向量函数的编写:
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
#ifdef VECT_TAB_RAM //如果程序在ram中调试那么定义中断向量表在Ram中否则在Flash中
/* Set the Vector Table base location at 0x20000000 */
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else /* VECT_TAB_FLASH */
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
/* Enable the TIM2 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
5:中断函数的编写:
当有TIM2的无论哪个中断触发中断发生那么就会进入这个函数
TIM2_IRQHandler(void)
所以这个更新事件的中断判断要依靠以下语句:
if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
按照以上步骤配置可以顺利进行定时器的基本定时应用
第二种方法:
/* Enable TIM2 Update interrupt [TIM2溢出中断允许]*/
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
中断中的设置为:
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
上一篇:STM32之SPI的思考
下一篇:实现输出两路频率1x、2x的方波
史海拾趣
|
仿真时出现以下错误!不知道怎么设置!请各位帮助! U1 Error: Pin order data (PINS=1:[]) not in READ ONLY field 4. Pins sorted by pin-name. U1 Error: Part type must be entered in READ ONLY field 1: type=() U1 Error: Netlist data m ...… 查看全部问答> |
|
PPT 36页 课题:电子元件基础知识 内容: 1.基本术语的概念; 2.电阻、电容的辨别; 3.其它常用元件(二极管、三极管、电感、变压器等)的感官认识;… 查看全部问答> |
|
请教: 我想用 PWM 输出占空比变化的电压 见附件 资料上还有一段话: CPS2/CPS1/CPS0 = 1/0/0 时,PCA/PWM 的时钟源是 Fosc, 不用 Timer0, PWM 的频率为 Fosc/256,如果使用系统时钟 /3 来作为 PCA 的时钟源,应让 T0 工作在 1T 模式, 记数 3 个 ...… 查看全部问答> |
|
ADS7822的供电电压为5.05v,基准电压为电源电压,输入为0.6v-3V,在1V以内采集值和输入电压对应的很好,超过1V采集值就不准了,输入的电压越大,偏离值越多,高出60多个(12位 0-4095),0.6v-3V之间采集1000个点,请有经验的朋友给予指点.谢谢!… 查看全部问答> |
|
51单片机控制彩色LCD的最佳方案 单片机可以通过发送简单的指令控制智能彩色显示器显示图 片(BMP,JPEG),中英文字符,画圆画直线等等. 是用单片机做人机界 面理想的选择,是单片机控制彩色大LCD的最佳选择 在嵌入式中驱动TFT屏, ...… 查看全部问答> |




