用STM32CubeMX生成TIM1的代码,产生一个1s定时的中断。
工具/原料
STM32CubeMX软件
Keil编译软件
STM32F411开发板
ST-LINK
新建STM32F411RE的工程
1、打开STM32CubeMX,点击New Project开始生产一个新的项目。
2、找到STM32F411RE芯片,双击它。
配置TIM1参数
1、进入Project,选择字斤谯噌最上面的“Pin”项目,将左边的TIM1展开,点击Clock Source右侧的箭头,选择内部时钟(Internal RC),是能TIM1。
2、切换到Clock Configuration,可以看到时钟树,我这里选择内部时钟,不分频,即定时器时钟就是外部晶振时钟,我这个时16M。灰色部分都是无效的。
3、切换到Configuration,可以看到已经使能的外设,双击TIM1。
4、按需求配置好TIM1 Configuration,点击“Parameter Settings”,按途中配置设置好。Counter Settings的Prescal髫潋啜缅er为分配,因为输入时钟时16M的,选择16分配就可以产生1微秒的定时器时钟。Counter Mode选择UpCounter Period就是定时器的计数周期,选择10000,注意这个数其实保存再一个16位寄存器当中,最大只能是65535Repetition Counter设置重复次数,99会重复100次。这样定时器计数10000*100次便会进入定时器中断,也就是1s。
5、切换到“NVIC Settings”,打开TIM1 update interrupt and TIM10 global interrupt打开TIM1的NVIC。
生产HAL库代码
1、点击菜单栏的“Project”->“Generate Code”。
2、设置好工程名称、目录,以及开发环境,这选择Keil5即MDK-ARM V5,确认后点击Ok。
3、耐心等待代码生产完毕。
4、代码生产成功后弹出如下对话框,选择“Open Project”打开工程。
代码补全和编译调试
1、STM32CubeMX生产的代码还需要经过一番加工,自动生成的知识使能了鲍伊酷雪NVIC但是并没有配置好对应的中断,所以还需要添加一段小代码。打开工程后,切换到mai荏鱿胫协n.c的“static void MX_TIM1_Init(void)”
2、添加HAL_TIM_Base_Start_IT(&htim1);使能TIM1中断。
3、在TIM1的中断函数设置好断点,这样调试的时候就可以知道是否进入了这个中断函数。
4、编译并进入调试模式。
5、运行调试,可以看到进入到了TIM1中断。