STM32CubeMX学习教程之五:PWM实现呼吸灯效果

2023-05-16

完整源码下载:

https://github.com/simonliu009/STM32CubeMX-PWM-Output

软件:

STM32CubeMX V4.25.0  

System Workbench V2.4

固件库版本:
STM32Cube FW_F1 V1.6.1

硬件:

OneNet 麒麟座V2.3

在STM32CubeMX中新建项目,选择正确的MCU型号

 

首先设置RCC和SYS,如下图

 

然后根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M),如下图

 

 

 

设置PC7 管脚为TIM3_CH2, 即定时器TIM3的Channel2

然后设置TIM3的Channel2为PWM Generation CH2

 

从上一篇博文我们知道TIM3是挂在APB1总线上的,看时钟树我们知道APB1总线的Timer频率是72MHz。

配置TIM3参数,预分频系数设置为72-1, 自动重载值设置为1000-1,那么PWM频率为72,000,000/72/1000=1000Hz,即1KHz。由于LED是低电平点亮,所以我们把极性设置为low。

 

 

Project - setting ,ToolChain/IDE选择 SW4STM32

勾选这里

保存以后,点击任务栏的生成代码图标

生成完毕以后在弹出的对话框点击"Open Project", System Workbench自动打开Eclipse并导入和打开了项目。

在main.c中,先定义一个变量存储我们设置的占空比

  /* USER CODE BEGIN 1 */
uint16_t dutyCycle = 0;
  /* USER CODE END 1 */

然后使能TIM3的PWM Channel2 输出。

  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
  /* USER CODE END 2 */

然后在while(1)中改变dutyCycle的值

 /* USER CODE BEGIN WHILE */
  while (1)
  {
	  while (dutyCycle < 1000)
	  {
		  dutyCycle ++;
		  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);
//		  TIM3->CCR2 = dutyCycle;
		  HAL_Delay(1);
	  }
	  while (dutyCycle)
	  {
		  dutyCycle --;
		  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);
//		  TIM3->CCR2 = dutyCycle;
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);
  /* USER CODE END WHILE */

 

然后右键点击项目,选择Properties, Run-Debug Settings, 点击右侧的New,在弹出对话框中选择Ac6 STM32 Debugging。

然后任务栏上点击Run图,当然会报错的,原因请查看另一篇我的博客(https://blog.csdn.net/toopoo/article/details/79680323),所以需要右键点击  项目名Run.cfg ,给它改个名字,

 

然后右键点击项目树里面的项目名称,选择“Propeties”,然后在Run/Debug Settings-选择项目名-Edit-Main-C/C++Application那里点击“Search Project”,然后选择出现的默认的elf文件:

然后在Debugger-User Defined-Browse 那里选择你自己改名的配置文件:

然后右键点击那个新的cfg文件,选择"Open With - Text Editor", 进行如下更改:

source [find interface/stlink.cfg] 更改为 source [find interface/stlink-v2.cfg]

reset_config srst_only srst_nogate connect_assert_srst 这一行改为 reset_config none 

然后再Run一下,就可以了。

程序实现了呼吸灯效果。

注意 

TIM3->CCR2 = dutyCycle

__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);

是等效的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32CubeMX学习教程之五:PWM实现呼吸灯效果 的相关文章

  • Blender 建模练习-锁链

    目录 1 1 1 贝塞尔圆1 2 阵列修改器1 3 阵列修改器 物体偏移1 4 添加贝塞尔曲线1 5 曲线修改器 1 本次练习主要使用到阵列修改器 贝塞尔曲线 空物体 1 1 贝塞尔圆 把贝塞尔圆进行缩放 xff0c 然后在物体数据属性 几
  • Blender 形变类修改器:曲线

    目录 形变类修改器1 测试一 xff1a 减少环切数量1 1 调整物体原点1 2 让两个物体原点重合1 3 添加曲线修改器1 4 融并边 2 测试二 xff1a 曲线的方向2 1 查看曲线的方向 xff08 曲线法向显示 xff09 2 2
  • Centos 普通用户su到root用户提示错误

    一 CentOS7 普通用户执行su时 xff0c 报如下错误 xff1a test 64 ecs 1453 su Password su Authentication failure 解决方法 xff1a 如果root能够正常登陆 xff
  • Windows Server2012 主副AD域控部署

    介绍 xff1a 部署主域控和辅域控 server2012跟server2008同样能够实现 部署额外域控制器 xff0c 指的是在域中部署第二个甚至更多的域控制器 xff0c 每个域控制器都拥有一个 Active Directory 数据
  • AD辅域控制器升级为主域控制器(图形界面操作)

    环境介绍 Active Directory域控制器已经搭建好主域控和辅域控 xff0c 主域控故障 xff0c 手动升级辅域控为主 主域控 xff1a 2012DC1 xff0c ip xff1a 192 168 15 1 辅域控 xff1
  • macOS的Chrome安装插件提示 程序包无效

    感谢 xff1a 完美解决Mac系统下Chrome插件安装时程序包无效 CRX HEADER INVALID 下载好插件crx文件后 xff0c 不要直接拖拽到扩展页面进行添加先把插件crx文件的后缀改成zip xff0c 再拖入到chro
  • Windows server 2008远程桌面会话主机和远程桌面授权(解决120天过期问题)

    一 系统环境 部署RemoteAPP是加入域控管理的 xff0c 这样可以方便授权管理 xff0c 域部署查看 xff1a https blog csdn net tladagio article details 80464833 二 远程
  • KMS激活报错0x8007000D

    一 错误显示 在执行kms的批处理激活office的时候 xff0c 显示报错 xff1a 0x8007000D 原因 xff1a 这台机器之前是使用其他KMS服务器序列号激活的系统 xff0c 现在使用批处理文件激活office的的KMS
  • win7无法访问局域网共享,错误代码0x80070043找不到网络名

    一 故障 xff1a win7无法访问局域网共享文件 xff0c ping网络正常 故障提示如图 类似错误代码还有可能是0x80070035 xff0c 提示找不到网络路径 二 解决 1 在控制面板找到网络连接 2 点击本地连接右键属性 3
  • 在github上搭建个人独立博客

    这篇文章会给大家分享利用github pages搭建我的个人独立博客的过程 xff0c 希望能帮助到一些想搭建独立博客的朋友 本文操作中所使用的操作系统为MacOS 一 工具准备 1 下载nodejs https nodejs org zh
  • hexo博客如何绑定个人域名

    我利用hexo在github上搭建了自己的独立博客 如果要打开这个博客 xff0c 我们则需要输入GitHub下的二级域名username github io xff0c 这里面的username就是你注册GitHub账户时的用户名 但是为
  • PX4的控制与输出

    文章目录 前言控制器部分输出部分控制组混控器混控器的启动信号输出 前言 这篇记录一下自己分析PX4从位置控制 gt 速度控制 gt 姿态控制 gt 角速度控制 gt 电机输出的源码框架的阅读与理解 xff0c 便于之后自己修改控制器 在这个
  • ML302 OpenCPU系列(5)---Log工具的使用

    ML302 OpenCPU系列 xff08 5 xff09 Log工具的使用 一 使用串口助手抓取Log二 使用Coolwatcher抓取AP Log三 查看死机现场 工欲善其事 xff0c 必先利其器 Log是嵌入式开发中最重要的调试手段
  • Lottie简单使用

    一 简介 Lottie 是Airbnb开源的一个面向 iOS Android React Native 的动画库 xff0c 能分析 Adobe After Effects 导出的动画 xff0c 并且能让原生 App 像使用静态素材一样使
  • Xshell显示图形化界面

    前言 很久没用过图形化界面了 xff0c 都忘记怎么使用了 依据以往的经验都是由环境变量DISPLAY设置 xff0c 然后就能连接了 xff0c 每天也是匆匆忙忙的就过了一天 xff0c 都不知道干了啥 xff0c 分配的时间也少 xff
  • 2017--就业分享之IT校招现状和面试经历

    在介绍自己整个春季和夏季实习求职经历之前 xff0c 先给大家公布一则新闻 2017届互联网校招薪酬报告 xff1a 先说下对 16 年 17 届校招的总体看法 xff1a 本该是个不大不小的年 xff0c 结果被华为一己之力搞成了个大年
  • docker常见命令

    文章目录 0 删除重建容器1 打包一个镜像并在另一个服务器上使用 0 删除重建容器 如果觉得镜像被自己搞坏了 xff0c 重启没啥用 xff0c 就要考虑基于之前的镜像重新建立一个新的容器了 span class token comment
  • python代码获取远程电脑IP

    实时的使用邮箱发送IP地址到指定邮箱 使用python代码封装好的软件 xff1a 链接 xff1a https pan baidu com s 1Flz7HHtZM0w3HGDeF 4BhQ pwd 61 yxy2 提取码 xff1a y
  • Collections.singleton();

    span class token comment 删除list某个元素 span List span class token operator lt span Integer span class token operator gt spa
  • 一个程序员所应该具备的精神

    所谓障碍都是主观上的 如果你想研发什么新的技术 xff0c 只需要在冰箱里放满食物和饮料 xff0c 再有一台便宜的计算机 xff0c 和以之献身的决心 xff0c 你即可拥有任何你想拥有的编程深度 xff01 John Carmack

随机推荐