当前位置: 首页 > news >正文

Stm32_标准库_4_TIM中断_PWM波形_呼吸灯

基本原理
在这里插入图片描述

PWM相关物理量的求法

在这里插入图片描述
在这里插入图片描述

呼吸灯代码

#include "stm32f10x.h"    // Device header
#include "Delay.h"TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructuer;//结构体
GPIO_InitTypeDef GPIO_InitStructur;//定义变量结构体void GPIOA_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructur.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructur.GPIO_Pin = GPIO_Pin_0;		//GPIO_Pin_15;GPIO_InitStructur.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructur);
}void PWM_Init(void){ //pwm波形配置TIM_OCStructInit(&TIM_OCInitStructuer);//给不需要配置的结构体成员赋予初始值TIM_OCInitStructuer.TIM_OCMode = TIM_OCMode_PWM1; //输出比较模式TIM_OCInitStructuer.TIM_OCPolarity = TIM_OCPolarity_High; //极性TIM_OCInitStructuer.TIM_OutputState = TIM_OutputState_Enable; //输出使能TIM_OCInitStructuer.TIM_Pulse = 0; //CCR,频率1kHZ,占空比50%的PWM波形TIM_OC1Init(TIM2, &TIM_OCInitStructuer);//配置GPIOA端口通道
}/*定时器定时中断代码*/void Timer_Init(void)//使用TM2定时器
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);GPIOA_Init();TIM_InternalClockConfig(TIM2);TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 100 - 1; //ARRTIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1; //PSCTIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);PWM_Init();TIM_Cmd(TIM2, ENABLE);//启动定时器
}/*CCR控制灯的亮度在运行过程中不断更改CCR的值来达到呼吸效果*/ //CCR[0~100]值越大灯越亮
void PWM_setcompare1(uint16_t compare){TIM_SetCompare1(TIM2, compare);
}uint8_t i;int main(void){Timer_Init();while(1){for(i = 0; i <= 100; i ++){PWM_setcompare1(i);Delay_ms(10);}for(i = 0; i <= 100; i ++){PWM_setcompare1(100 - i);Delay_ms(10);}}
}

注:TIM_OutputState 和 TIM_OutputNState不同

效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
亮度会由暗变亮再变暗循环往复

http://www.lryc.cn/news/179666.html

相关文章:

  • 华为摄像头智能安防监控解决方案
  • The rise of language models
  • Windows下使用VS2010编译出带pdb可调试的FFmpeg库
  • 36.骑士周游算法及其基于贪心算法的优化
  • win安装vscode
  • 【图像分割】图像检测(分割、特征提取)、各种特征(面积等)的测量和过滤(Matlab代码实现)
  • Linux内核存在缺陷发行陷困境
  • 通过java向jar写入新文件
  • uni-app_消息推送_华为厂商_unipush离线消息推送
  • 单元测试框架-Pytest(简单学习)
  • 毛玻璃态卡片悬停效果
  • 【面试经典150 | 数组】除自身以外数组的乘积
  • uboot启动流程-涉及s_init汇编函数
  • 单例模式详解及5种实现方式 (设计模式 一)
  • 面试系列 - Java常见算法(一)
  • Sentinel学习(1)——CAP理论,微服务中的雪崩问题,和Hystix的解决方案 Sentinel的相关概念 + 下载运行
  • C#学习 - 表达式、语句
  • VirtualBox 进入虚拟机后,鼠标出不来了
  • 030-从零搭建微服务-消息队列(二)
  • Docker从认识到实践再到底层原理(九)|Docker Compose 容器编排
  • 操作EXCEL计算3万条数据的NDVI并填入
  • Linux服务器安装Anaconda 配置远程jupyter lab使用虚拟环境
  • R语言实现随机生存森林(3)
  • WebPack-打包工具
  • CISSP学习笔记:PKI和密码学应用
  • 简述Java21新特性
  • Composition API(常用部分)
  • 驱动插入中断门示例代码
  • 1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning
  • 如何做一个基于 Python 的搜索引擎?