STM32标准库基本定时器
1.STM32标准库时钟树设置2.通过keil内置标准库创建stm32工程3.STM32硬件IIC使用4.STM32FATFS文件系统移植5.STM32SPIFLASH读写6.STM32标准库内部Flash读写7.STM32F103xC,xD,xE引脚定义8.STM32标准库通用定时器PWM生成9.STM32标准库通用定时器计数
10.STM32标准库基本定时器
11.STM32标准库RTC时钟12.STM32ADC单通道转换13.STM32标准库串口DMA空闲中断接收14.STM32OLED使用15.STM32标准库低功耗16.STM32标准库通用定时器输出比较17.STM32标准库通用定时器输入捕获18.STM32硬件IIC使用1.定时器初始化
void TIM6_Init() //定时器6初始化
{
TIM_TimeBaseInitTypeDef TIM_TimBaseStructure; //定义定时器结构体
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE); //使能定时器6的时钟
TIM_TimBaseStructure.TIM_Period = 1000; //定时器6的周期为1000
TIM_TimBaseStructure.TIM_Prescaler = 71; //定时器6的预分频为71
TIM_TimeBaseInit(TIM6,&TIM_TimBaseStructure); //初始化定时器6
TIM_ClearFlag(TIM6,TIM_FLAG_Update); //清除定时器6的更新标志
TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE); //使能定时器6的更新中断
TIM_Cmd(TIM6,ENABLE); //使能定时器6
NVIC_InitTypeDef NVIC_InitStructure; //定义NVIC结构体
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //设置NVIC的优先级分组为0
NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn; //设置定时器6的中断通道为TIM6_IRQn
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //设置定时器6的中断优先级为1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //设置定时器6的中断子优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能定时器6的中断通道
NVIC_Init(&NVIC_InitStructure); //初始化NVIC
}
STM32的定时器中断频率计算公式为:主频/(TIM_Period * (TIM_Prescaler-1)).
2.定时器中断处理函数
void TIM6_IRQHandler() //定时器6的中断处理函数
{
if(TIM_GetITStatus(TIM6,TIM_IT_Update) != RESET) //判断定时器6的更新中断是否发生
{
TIM_ClearITPendingBit(TIM6,TIM_IT_Update); //清除定时器6的更新中断标志
}
}
3. 总结
STM32的基本定时器比较简单,基本只有定时作用。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤