定时器中断_PWM输出_STM32第三课
1、TIM2中断,需求:实现LED间隔0.5秒闪烁
1、使用CubeMX设置系统时钟、RCC、LED灯、时钟树等基础操作。
2、配置TIMER2,使能为全局变量,设置优先级。并生成代码。
3、代码编写
main.c中开启timer2中断
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim2);
/* USER CODE END 2 */
打开HAL_TIM_Base_Start_IT(&htim2);的实现代码,下图可以看到最终调用 HAL_TIM_PeriodElapsedCallback(htim);
继续查看HAL_TIM_PeriodElapsedCallback(htim)实现代码,发现是一个弱函数,需要用户实现。
那么在tim.c中重写HAL_TIM_PeriodElapsedCallback(htim),当发生回调函数时,翻转LED状态。
/* USER CODE BEGIN 1 */
//发生回调函数时,翻转LED
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if(htim==&htim2){
HAL_GPIO_TogglePin(REDLED_GPIO_Port, REDLED_Pin);
}
}
/* USER CODE END 1 */
2、PWM输出LED呼吸灯,需求:LED呼吸灯
PWM即脉冲宽度调制。当LED快速闪烁人眼无法识别时,亮度会介入最亮和熄灭之间。
比较值x=t/T,当x在(0,重装载值)之间线性增加或线性减少时,就会呈现亮度线性增加或减少。
查原理图可知,PB5需要设置为TIM3第二通道,在Tim3 GPIO settings 设置
main.c文件
/* USER CODE BEGIN PV */
uint16_t pwm_value = 0;
/* USER CODE END PV */
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
/* USER CODE END 2 */
void main(){
while (1) {
while (pwm_value < 500) {
pwm_value++;
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwm_value); //修改比较值,修改占空比
HAL_Delay(1);
}
while (pwm_value) {
pwm_value--;
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwm_value); //修改比较值,修改占空比
HAL_Delay(1);
}
HAL_Delay(200);
}
}
定时器中断_PWM输出_STM32第三课的更多相关文章
- 合宙AIR105(三): 定时器, 定时器中断和PWM输出
目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 Ai ...
- STC10F10XE定时器中断输出10KHz的方波程序
//咱做硬件的也动手做点测试程序,为了测试新做的电机驱动板,找了个51的板子当10K信号发生器测试IGBT开关延时时间. #include <STC_NEW_8051.H>#include ...
- 红帽学习笔记[RHCSA] 第三课[输出重定向、Vi编辑器]
第三课 关于Linux的输入输出 输入输出 0 stdin 标准输入 仅读取 1 stdout 标准输出 仅写入 2 stderr 标准错误 仅写入 3 filename 其他文件 读取和/或写入 输 ...
- STM32学习笔记——定时器中断(向原子哥学习)
定时器中断 STM32 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2~TIME5 等通用定时器,还有 TIME6 和TIME7 等基本定时器.在本章中,我们将利 ...
- 【Linux探索之旅】第四部分第三课:文件传输,潇洒同步
内容简单介绍 .第四部分第三课:文件传输.潇洒同步 2.第四部分第四课:分析网络.隔离防火 文件传输.潇洒同步 这一课的内容相对简单,所以我们慢慢享用. 经过上一课的学习.我们已经知道怎样远程连接到其 ...
- 嵌入式02 STM32 实验10 定时器中断
优秀文章 https://blog.csdn.net/qq_38351824/article/details/82619734 一.STM32通用定时器(TIM2.TIM3.TIM4和TIM5共四个通 ...
- ZYNQ入门实例——定时器中断与程序固化
一.前言 APU系统中CPU以串行执行代码的方式完成操作,软件方式很难做到精准计时,因此调用内部定时器硬件完成计时是更好的选择.本文以定时器中断方式控制LED周期性闪烁为例学习私有定时器的使用.同时学 ...
- (stm32f103学习总结)—stm32定时器中断
一.定时器介绍 STM32F1的定时器非常多,由2个基本定时器(TIM6.TIM7).4个通 用定时器(TIM2-TIM5)和2个高级定时器(TIM1.TIM8)组成.基本定 时器的功能最为简单,类似 ...
- 4-MSP430定时器_定时器中断
一开始没写好就上传了,,,,,,,,这次来个全的 自己学MSP430是为了写一篇关于PID的文章,需要430在proteus上做仿真,一则认为在自动控制算法上PID真的很经典,PLC设备上大多是模块式 ...
- stm32定时器中断类型分析
一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...
随机推荐
- 面向对象ooDay6
精华笔记: static final常量:应用率高 必须声明同时初始化 由类名打点来访问,不能被改变 建议:常量所有字母都大写,多个单词用_分隔 编译器在编译时会将常量直接替换为具体的数,效率高 何时 ...
- springMVC的定时器
大家好,本人从事软件行业已有8年,大部分时间从事软件开发编写工作.好了废话少说了哈哈哈,直接干货. 在Java开发过程中有很多业务需求里面需要我们实时处理一些动态的业务比如库存的数据动态更新,实时数据 ...
- CentOS基本命令手册
一.磁盘使用情况 两个命令df .du结合比较直观 df -h #查看整台服务器的硬盘使用情况 du -sh * #查看每个文件夹的大小 二.tar 用法 压缩 tar tar -czvf test. ...
- java实现前n项和,要求不使用循环、乘除法、判断标识
public class Ceui3 { public static int sum = 0; public static void main(String[] args) { System.out. ...
- manjaro挂载NTFS系统的方法
本文部分引自https://blog.csdn.net/baimaozi/article/details/3134267?utm_medium=distribute.pc_relevant.none- ...
- Keil MDK5编译时出现错误:error: L6002U: Could not open file …\obj\main.o: No such file or directory,
原因:电脑系统用户名中存在中文字符 解决:用户环境变量,找到变量 TEMP 和 TMP,将变量值中的"%USERPROFILE%"使用"C:\user\default&q ...
- 对深度学习中全连接层、卷积层、感受野、1×1卷积、池化层、softmax层、全局平均池化的一些理解
1.全连接层 在卷积神经网络中,在多个卷积层和池化层后,连接着1个或1个以上的全连接层,全连接层把卷积层和池化层提取出来的所有局部特征重新通过权值矩阵组装成一个完整的图,因为用到了所有的局部特征,所以 ...
- 微信小程序-顶部下拉菜单实现
最近写的小程序里面需要实现顶部下拉菜单的效果,做一个过滤操作,但是没有找到相关组件,所以动手写了一个. 先看一下这拙劣的效果叭~ 下面就直接看具体实现了嗷! index.wxml <view c ...
- 网络基础-分层思想和TCP/TP协议族
一 .分层思想 首先,什么是分层?1984年国际标准化组织(iso)颁布了开放系统互联(osi)参考模型:一个开放式体系结构,将网络分成七层. 分层 功能 应用层 网络服务与最终用户的一个接口 表示层 ...
- CUDA基础2
二. 1.指令调度,对于多条指令怎样调度让他们运行更快. 对于有冲突的两条指令,采用寄存器重命名技术. 2.指令重排 乱序执行,为了获取最大的吞吐率. 增大功耗 增加芯片面积. 3.缓存,容量越大 ...