stm32定时器中断
来源:互联网 发布:adb forward多个端口 编辑:程序博客网 时间:2024/06/07 19:53
在最近几天一直在学习STM32,由于之前接触的比较少,所以遇到了一些问题,现在问题汇总起来,供大家学习。
1.首先,定时器中断需要做的就是分配时钟:
RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
//APB2负责AD,I/O,串口1,高级TIM;APB1负责DA,串口2345,普通TIM,USB,IIC,CAN
2.设定定时器的参数:
typedef struct
{
uint16_t TIM_Prescaler;
uint16_t TIM_CounterMode; //设置自动重装载寄存器周期的值
uint16_t TIM_Period; //设置时钟频率除数的预分频值
uint16_t TIM_ClockDivision; //设置时钟分割
uint8_t TIM_RepetitionCounter; //用于高速定时器,TIM1,TIM8;
} TIM_TimeBaseInitTypeDef;
TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);//该函数存在于stm32f10x_tim.c内
定时器溢出时间是用((TIM_CounterMode+1)*(TIM_Period+1))/72M计算得出。
3.设定中断参数:
NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);//设置中断分组,中断分组分5组;5组分别对应着先占优先级与从优先级。
typedef struct
{
uint8_t NVIC_IRQChannel; //中断的通道
uint8_t NVIC_IRQChannelPreemptionPriority; //先占优先级,0最高
uint8_t NVIC_IRQChannelSubPriority; //从优先级,0最高
FunctionalState NVIC_IRQChannelCmd; //使能通道
} NVIC_InitTypeDef;
NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
4.TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);//使能TIM
5.书写中断函数:
在书写的中断函数内一定要有EXTI_ClearITPendingBit(uint32_t EXTI_Line)函数来清楚中断标志
在3之中设置的NVIC_IRQChannel来对函数进行命名,然后书写中断函数的内容。注意 中断函数无参数,无返回值,可适当延时。
以上5点就是我理解的定时器中断的大概步骤,如果有问题大家一起探讨,不喜勿喷,谢谢。
- STM32 定时器中断
- STM32定时器中断
- STM32的定时器中断
- stm32-定时器中断
- stm32定时器中断实验
- STM32 定时器中断函数
- stm32定时器中断
- STM32定时器中断
- stm32之定时器中断
- STM32学习-定时器中断实验
- STM32定时器中断实验-TIM3
- STM32学习之:定时器中断
- STM32外部中断及定时器编程示例
- STM32单片机学习(5) 定时器中断实验
- STM32学习笔记6-定时器中断
- STM32学习笔记6-定时器中断
- Stm32定时器中断使LED灯闪烁
- [转]STM32学习笔记6-定时器中断
- JAVA三大特性的理解
- 设置网卡设备默认名字是eth0/eth1的过程
- MySQL 四种事务隔离级的说明
- hdu6035 Colorful Tree
- 基于稀疏表示的图像超分辨
- stm32定时器中断
- JEESZ-Zookeeper集群安装
- maven 阿里镜像配置
- HIVE中select除了某些字段之外的剩余所有字段
- 处理百万级以上的数据查询提高效率的办法
- 免费视频教程:嵌入式stm32项目开发之心率检测仪的设计与实现
- redis命令行查看中文不乱码
- C++学习笔记之表达式
- 2017-07-27新博客开通