学习CubeIDE——定时器开发

在b站上学习洋桃电子关于HAL库开发,发现使用CubeIDE是真的简单又方便。

实验现象:使用定时器 来产生中断 ,中断程序是LED灯翻转

在我看来,定时器,是一个从0开始增1(常规),增加到一定值就产生中断。其中,有两个参数需要我们来设置,一个是这个"一定值",即重装值(Counter Period);一个是每次增1所用的时间,这个时间是由定时器时钟(Timer Clock)和定时器分频(Prescaler) 计算出来的。

1、ioc设置

首先,先用CubeIDE自带的CubeMX来设置XX.ioc。

(1)在"Pinout & Configuration"中点击Timers------>TIM2。

(2)选择时钟源内部时钟。打开"Clock Configuration"可以看到定时器时钟有两个,分别在APB1和APB2总线上。因为我们使用的TIM2通用定时器(看手册),所以定时器等于APB1时钟:PCLK1 = 8MHz。

|-------|---------------------------------------|----------|
| 类型 | 使用编号 | 总线 |
| 基本定时器 | TIM6 、TIM7 | APB1 |
| 通用定时器 | TIM2 、TIM3 TIM4 、TIM5 | APB1 |
| 高级定时器 | TIM1 、TIM8 | APB2 |
[定时器分类]

(3)设置分频系数,因为定时器时钟为8MHz,每秒振8KK次,次数太多了反而使每次振的时间特别短。所以我们将它分频,这里设置分频=9999。8kk / (9999+1) = 800。即一秒振800次。

(4)设置"一定值"=799。定时器从0计数到799,用时1s。计数完毕后产生中断。

2、程序

ios配置完毕后,可以在 main 函数里看到,TIM2_Init 初始化已经完成,并且生成句柄htim2。
句柄

(1)在初始化后面开启TIM时基单元。

(2)在main函数前写定时器中断函数。

没了。

相关推荐
lingggggaaaa5 分钟前
小迪安全v2023学习笔记(一百四十五讲)—— Webshell篇&魔改冰蝎&打乱特征指纹&新增加密协议&过后门查杀&过流量识别
笔记·学习·安全·魔改冰蝎·免杀对抗·免杀技术
云山工作室12 分钟前
基于协同过滤算法的话剧购票系统(论文+源码)
单片机·物联网·毕业设计·课程设计·毕设
落羽的落羽40 分钟前
【C++】现代C++的新特性constexpr,及其在C++14、C++17、C++20中的进化
linux·c++·人工智能·学习·机器学习·c++20·c++40周年
小苏兮1 小时前
【把Linux“聊”明白】编译器gcc/g++与调试器gdb/cgdb:从编译原理到高效调试
java·linux·运维·学习·1024程序员节
im_AMBER1 小时前
React 11 登录页项目框架搭建
前端·学习·react.js·前端框架
辰哥单片机设计2 小时前
STM32项目分享:智能水产养殖系统
stm32·单片机·嵌入式硬件
一枝小雨2 小时前
【OTA专题】2 初级bootloader架构和基础工程移植
stm32·单片机·嵌入式·ota·bootloader·固件升级·加密升级
py有趣8 小时前
LeetCode算法学习之两数之和 II - 输入有序数组
学习·算法·leetcode
BreezeJuvenile9 小时前
外设模块学习(15)——MQ-2烟雾气体传感器(STM32)
stm32·单片机·学习·mq-2·烟雾气体传感器
Jie_jiejiayou11 小时前
定时器详解以及呼吸灯实现 — STM32(HAL库)
stm32·单片机·嵌入式硬件·定时器