R2 STM32基本定时器之中断笔记-TIM
来源:互联网 发布:吃东西知乎 编辑:程序博客网 时间:2024/06/01 08:10
STM32基本定时器之中断笔记-TIM
野火的TIM章理解
- 基本定时器TIM6,TIM7配置:
要改的地方:
如:
TIM_TimeBaseStructure.TIM_Period = BASIC_TIM_Period;//配置1ms定时,ARR=1000-1
=>TIM_TimeBaseStructure.TIM_Prescaler= BASIC_TIM_Prescaler;预分频(可能要改)
=>TIM_ClearFlag(BASIC_TIM, TIM_FLAG_Update);//改中断类型
程序:
static void BASIC_TIM_Config(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定义结构体 BASIC_TIM_APBxClock_FUN(BASIC_TIM_CLK, ENABLE);//开定时器时钟 TIM_TimeBaseStructure.TIM_Period = BASIC_TIM_Period;//配置ARR-定时1ms,1000-1 TIM_TimeBaseStructure.TIM_Prescaler= BASIC_TIM_Prescaler;//时钟预分频 //TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//分频因子,TIM6,TIM7没有 //TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //计数模式,上下计数,TIM6,TIM7只有向上,用不到 //TIM_TimeBaseStructure.TIM_RepetitionCounter=0;//重复计数,TIM6,TIM7没有 TIM_TimeBaseInit(BASIC_TIM, &TIM_TimeBaseStructure);//初始化定时器 TIM_ClearFlag(BASIC_TIM, TIM_FLAG_Update);//清除中断标注位(TIM_FLAG_Update更新中断) TIM_ITConfig(BASIC_TIM,TIM_IT_Update,ENABLE);//开计数器中断 TIM_Cmd(BASIC_TIM, ENABLE);//使能计数器}
.h文件:把define //掉就是TIM7
#define BASIC_TIM6#ifdef BASIC_TIM6 // TIM6#define BASIC_TIM TIM6#define BASIC_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd#define BASIC_TIM_CLK RCC_APB1Periph_TIM6#define BASIC_TIM_Period (1000-1)#define BASIC_TIM_Prescaler 71#define BASIC_TIM_IRQ TIM6_IRQn#define BASIC_TIM_IRQHandler TIM6_IRQHandler#else //TIM7#define BASIC_TIM TIM7#define BASIC_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd#define BASIC_TIM_CLK RCC_APB1Periph_TIM7#define BASIC_TIM_Period 1000-1#define BASIC_TIM_Prescaler 71#define BASIC_TIM_IRQ TIM7_IRQn#define BASIC_TIM_IRQHandler TIM7_IRQHandler#endif
- 有中断了就要配置中断优先级
static void BASIC_TIM_NVIC_Config(void){ NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //中断组 NVIC_InitStructure.NVIC_IRQChannel = BASIC_TIM_IRQ ;//中断来源 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //抢占优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);}
- 配置好了当然要写中断函数
瓜皮,写在stm32f10x_it.h里:
void BASIC_TIM_IRQHandler(void){ if ( TIM_GetITStatus( BASIC_TIM, TIM_IT_Update) != RESET ) //判断这个更新中断有没有开 { time++; TIM_ClearITPendingBit(BASIC_TIM , TIM_FLAG_Update); //清除中断标注位 } }
time在这里是全局变量,在main里:
uint16_t time=0;
在stm32f10x_it.h上面:
#include "上面函数的头文件,别忘了放在stm32f10x_it.h里.h"extern uint16_t time;//定义time为全局变量,为main函数定义
- 还有初始化函数
void BASIC_TIM_Init(void){ BASIC_TIM_NVIC_Config(); BASIC_TIM_Config();}
到.h里声明一下:
void BASIC_TIM_Init(void);
- 主函数
int main(void){ BASIC_TIM_Init(); //这里,time的值开始累加 while(1) { if( time == 500 )//500ms { time = 0; ...//这里写你要干嘛 } } }
附加
- 野火led那里面,LED1_TOGGLE;是反转程序。
阅读全文
1 0
- R2 STM32基本定时器之中断笔记-TIM
- STM32定时器(TIM)之通用定时器
- R3 STM32高级定时器笔记-TIM
- stm32之定时器中断
- [定时器TIM]溢出中断
- STM32系统学习——TIM(基本定时器)
- STM32学习之:定时器中断
- STM32学习笔记6(TIM模块定时器)
- STM32定时器(TIM)概论
- STM32 学习之TIM
- STM32学习笔记6-定时器中断
- STM32学习笔记6-定时器中断
- [转]STM32学习笔记6-定时器中断
- STM32学习笔记一一定时器中断
- stm32学习笔记(七)定时器中断
- 第31章 TIM—基本定时器—零死角玩转STM32-F429系列
- stm32 TIM定时器[操作寄存器+库函数]
- STM32学习笔记之:stm32通用定时器
- Redis.conf文件描述
- Ubuntu下利用pyenv管理各Python版本
- nodejs简单操作xml
- TCP协议——网络端口号、URG和PSH、定时器
- React Native 数据库链接测试代码
- R2 STM32基本定时器之中断笔记-TIM
- 单链表的逆置
- Git 的origin和master分析
- 深度学习工具1.4 Intel MKL或者BLAS安装
- VOC框图工具,自动生成需要的XML格式
- 黑盒测试方法三(因果图法)
- URG和PSH
- DTD和Schema
- Linux 查看文件修改时间(精确到秒)