好久没来论坛逛了,一直在忙着智能车和企业项目,智能车只拿了华南赛二等无缘国赛,企业的项目也即将结束,我也该来更新更新论坛帖子了
这块板子的定时器也很容易配置 这里我就用定时器让板载的LED灯闪烁吧!
(1)建立工程,新建工程的步骤就不说了!请参考我之前的帖子:
STM32F411【Nucleo】第一课--新建工程(基于keil 5.13)
(2)led配置就不讲了,参考我以前写的点亮led的帖子:
STM32F411【Nucleo】第二课--led灯(基于keil5.13)
(3)新建bsp_time.c和bsp_time.h
bsp_time.c文件如下:
- #include "bsp_time.h"
- /*
- *****************
- 通用定时器3初始化
- arr:自动重装值
- psc:时钟预分频数
- 定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us
- Ft:定时器工作频率,单位MHz
- *****************
- */
- void TIM3_Init(u16 arr,u16 psc)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能TIM3时钟
-
- TIM_TimeBaseInitStructure.TIM_Period=arr;//自动重装载值
- TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//定时器分频
- TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
- TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
-
- TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化定时器3
-
- TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//允许定时器3更新中断
-
- NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//定时器3中断
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;//抢占优先级1
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02;//子优先级3
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);//初始化NVIC
-
- TIM_Cmd(TIM3,ENABLE);//使能定时器3
- }
复制代码 bsp_time.h文件如下:- #ifndef _BSP_TIME_H_
- #define _BSP_TIME_H_
- #include "stm32f4xx.h"
- void TIM3_Init(u16 arr,u16 psc);
- #endif
复制代码 中断处理文件添加以下代码:
- void TIM3_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
- {
- LED_TOGGLE;
- }
- TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
- }
复制代码
main函数:
- #include "stm32f4xx.h"
- #include "bsp_time.h"
- #include "bsp_led.h"
- int main(void)
- {
- LED_GPIO_Config();
- TIM3_Init(9999,9999);
- while (1)
- {
- }
- }
- /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
复制代码 编译下载后,led灯每隔一秒闪烁一次
源码
7.定时器.rar
(6.51 MB, 下载次数: 192)
|
有兴趣一起组队么,我有一个项目,希望找些志同道合的人,毕竟大家都是玩STM的,有兴趣的发短信给我呗或者加我QQ
用示波器看