STM32F429之定时器
2018-03-14 15:26
204 查看
F429共有14个定时器
2个高级 TIM1、TIM8
10个通用 TIM2~TIM5 TIM9~TIM14
2个基本 TM6 、TIM7 只有TIM_Prescaler和TIM_Period
1.配置优先级
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); 中断组为0
NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn; 中断来源
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; 子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
2.TIM初始化
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); 初始化时钟
TIM_TimeBaseStructure.TIM_Period = 5000-1; 自动重装载值(即定时时间)
TIM_TimeBaseStructure.TIM_Prescaler = 9000-1; 分频系数
TIM_ClearFlag(TIM6, TIM_FLAG_Update);清除定时器中断标志位
TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);开启定时器更新中断
TIM_Cmd(BASIC_TIM, ENABLE); 使能定时器
3.编写中断服务函数
void TIM6_DAC_IRQHandler (void)
{
if ( TIM_GetITStatus( TIM6, TIM_IT_Update) != RESET )
{
LED1_TOGGLE;
TIM_ClearITPendingBit(TIM6 , TIM_IT_Update);
}
}
服务函数名在stsrtup_stm32f429_439xx.s内
2个高级 TIM1、TIM8
10个通用 TIM2~TIM5 TIM9~TIM14
2个基本 TM6 、TIM7 只有TIM_Prescaler和TIM_Period
1.配置优先级
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); 中断组为0
NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn; 中断来源
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; 子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
2.TIM初始化
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); 初始化时钟
TIM_TimeBaseStructure.TIM_Period = 5000-1; 自动重装载值(即定时时间)
TIM_TimeBaseStructure.TIM_Prescaler = 9000-1; 分频系数
以下在通用和高级定时器中才有 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 计数方式向上计数 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 分频因子 TIM_TimeBaseStructure.TIM_RepetitionCounter=1;重复计数TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); 初始化定时器
TIM_ClearFlag(TIM6, TIM_FLAG_Update);清除定时器中断标志位
TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);开启定时器更新中断
TIM_Cmd(BASIC_TIM, ENABLE); 使能定时器
3.编写中断服务函数
void TIM6_DAC_IRQHandler (void)
{
if ( TIM_GetITStatus( TIM6, TIM_IT_Update) != RESET )
{
LED1_TOGGLE;
TIM_ClearITPendingBit(TIM6 , TIM_IT_Update);
}
}
服务函数名在stsrtup_stm32f429_439xx.s内
相关文章推荐
- STM32F429之定时器
- STM32F429的定时器的使用方法
- STM32F429系统架构
- STM32F4 定时器比较
- STemWin移植到MiCO物联网操作系统笔记-基于秉火STM32F429开发板【1】
- STM32F429 不断重复复位
- 基于STM32f429中ucosiii+emWin应用
- STM32F429 不断重复复位
- STM32F429 DMA串口数据发送
- stm32f4定时器基本应用
- 基于STM32F429的RGB屏使用
- STM32f429开发中USB读写文件涉及到的库移植
- 嵌入式stm32f429上成功跑通主流Linux 4.13
- STM32F429——GPIO
- STM32F429 不断重复复位
- stm32f429-discovery +cubemx + USB转虚拟串口 研究
- STM32F429 LTDC学习笔记1
- 29.内核创建定时器
- 【stm32F429开发日志】STM32F429上 NES 模拟器 移植 试玩
- STM32F429的外接nandflash当作U盘实现数据记录功能