定时器中断_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的时候不够 ...
随机推荐
- angular请求头部加XSRF-TOKEN
1.创建拦截器 import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, } from '@angular/common/http' ...
- C#基于数据库链接增删改查
一.创建一个winfrom窗体 1.创建项目 2.创建一个链接数据的类 3.封装数据库的实体类(查询和增加) 在对数据操作时必须引用连个数据库using using System.Data; usin ...
- 获取gps
package com.example.myapplication;import android.Manifest;import android.annotation.SuppressLint;imp ...
- CountDownLatch/CyclicBarrierDemo/Samaphore
CountDownLatch CountDownLatch:让一些线程阻塞直到另外一些完成后才被唤醒 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞 ...
- django_模板层的过滤器和继承
**************************************************************************************************** ...
- CSS3之伸缩布局
一 主轴方向 在伸缩布局中, 默认伸缩项是从左至右的排版的 主轴的排版的方向默认就是row, 默认就是从左至右 1.默认情况下主轴是水平方向的, 但是也可以修改为垂直方向.只要看到flex-direc ...
- U-boot分析之编译体验
1. 如图可以看到的是PC和嵌入式系统的区别 PC第一步是上电,进入BIOS而嵌入式系统进入bootloader 接着进入操作系统而嵌入式式进入Linux内核 PC识别C盘,D盘,而嵌入式系统则挂载根 ...
- Promise和await、同步和异步
1.同步和异步是什么: ①同步:同步是指如果一个进程在执行某个请求的时候,如果该请求需要等待一段时间,那么该进程会一直等待下去,直到收到返回信息才继续执行下去 ②异步: 指一个请求在执行某个请 ...
- Sleuth 使用
sleuth是spring cloud中日志链(调用链解决方案),自动添加traceId,spanId. sleuth包也可单独引入,和其它藕合度小.sleuth + zipkin 实现APM管理. ...
- Spring--注解开发定义Bean
注解开发 先看一看之前的bean的做法: 所谓注解开发,当然就要用到注解啊,就是在BookDao接口的实现类里面进行注解的定义 如图所示: 而在.xml文件里面,就需要进行这样一个操作: 注解当然不会 ...