[STM32L0] 从零开始开始NOCLEO—L073之呼吸灯之旅

[复制链接]
 楼主| lulugl 发表于 2023-10-27 21:36 | 显示全部楼层 |阅读模式
本帖最后由 lulugl 于 2023-10-28 07:56 编辑

#申请原创# #有奖活动# @21小跑堂 @21ic小可爱
【开发板介绍】
NUCLEO-L073RZ(stm32l073rzt6芯片)开发板,整体上这个板子沿用了传统的塑料包装。  简约不简单,内含纸板双面分别标有引脚图及芯片简单介绍和入门引导。Arduino™的连接支持和ST Morpho的扩展连接头使用户很容易扩大STM32 Nucleo板对外开发平台的功能,该平台提供了多种可供选择的适配外设板。STM32的Nucleo板集成了ST-LINK/V2-1调试器/编程器,和STM32 Nucleo板搭配的软件包有包含了众多例程的STM32 HAL软件库,在mbed在线平台上也能找到。
62bf0a51f4b6364ce498b0198fd580f0
该开发板整体结构分为两部分,下载器部分和核心板部分独立分布,其中含有USB接口一侧的板为stlink下载仿真部分,按键及排针排座那一部分为主电路部分。灵活的跳线帽选择,可以使得我们还可以下载与调试其他stm32开发板,只需断开印有丝印“ST—LINK”的跳线帽,同时将CN4排针与其他stm32开发板相连即可。
90851757fefb25d624ec2640b6a46e10
核心板部分的外扩接口为Arduino标准接口,可以无缝对接常用的传感器,可以使得用户很快的投入研究与使用。无需自己跳线连接。板载一个低速的32768hz的晶振,毕竟主打低功耗芯片,主时钟选择内部振荡器,可以更加减少PCB布局,节约成本等。
开发板附带的彩页,注明STM32L073RZT6的主控芯片为ARM-Contex-M0+,32M主频,192KB的FLASH,20KB的内存,开发板板载了Arduino Uno标准接口与ST morpho接口,板载STM-LINK V2版本进行调试与下载固件。
d579982f0f2a45ad3f6f4fcd09bda108
【开发环境简介】
开发板可以在 win、Linux、MacOS下面进行开发。
开发工具支持MDK、IAR以及stm32cubeIde。
官方提供了stm32cube对开发板的RTOS、USB以及外设的示例。
本次开发采用win11下stm32cubeIDE进行示例的创建、编译、下载与调试。
【创建呼吸灯】
开发板板载了给用户使用的LED灯1个,一个用户使用的按键。工程达到的效果为实现呼吸灯。
1、下载与安装stm32CubeIDE(省略)。
2、打开stm32CubeIDE,(菜单:file->new->STM32 Project)打开新建stm32project对话框,选择board select,新建开发板工程,查询出开发板后选定,按下一步继续配置工程
69093e552bb90f6026777e74cc72c3a4
3、输入工程名称后,按完成,等待工程创建完毕:
8d01f3bd1beda4b790a912d58eac11f5
第一次生成工程需要等待从官网下载固件包,完成后就生成了工程:
21abbcf06043d1a8bb4028195c68ba71
4、要实现呼吸灯,需要配置LED2为PWM输出。在图上点击PA5切换到TM2-CH1。
04f8eff1bacdd77b19d0995a995e0c38
5、配置钟频率为32MHz,同时TIM2总线的时钟也是32MHz:
16e67194b95f41fb9d6a9c197a5fef43
6、使能TIM2通道1为PWM输出,时钟源为内部时钟(32MHz),分频为32,计数器为1000,即PWM波为1KHz的频率,使用自动重载,初始占空比为0。
7a7180530e233b4ab3db635fae870241
7、选择生成单独的工程文件。按ALT+K或者工具栏上的按键生成代码。
dbda7da2c0d2814d766e3f80de84e52d
8、添加用户代码:
首先添加使能tim2 channel1:
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
然后添加呼吸灯代码,代码首先对占空比累加,达到100%后,我们再累减到零,往复修改形成呼吸灯的效果。
  1. /* USER CODE BEGIN WHILE */

  2. while (1)

  3. {

  4. /* USER CODE END WHILE */

  5. /* USER CODE BEGIN 3 */

  6. if(F == 0)

  7. {

  8. dutyCycle = dutyCycle+50;

  9. if(dutyCycle >= 1000)

  10. {

  11. dutyCycle = 1000;

  12. F = 1;

  13. }

  14. }

  15. else{

  16. dutyCycle = dutyCycle-50;

  17. if(dutyCycle <= 0)

  18. {

  19. F = 0;

  20. dutyCycle = 0;

  21. }

  22. }

  23. __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,dutyCycle);

  24. HAL_Delay(50);

  25. }

复制代码

d22f09f538c56ad5e17d6d3bbcf86cbd
生成代码后,下载到开发板,用示波器接到PA5上观察PWM波形,从示波器上看频率为1KHz,与程度设计的一样。
b1ca548e23b2aac2aa59edb8304fec7b
视频效果如下:

【试用心得】
Stm32的生态非常好,特别是官方的开发板,stm32cubeIDE的开发板的创建工程非常简单,配置外设也是图形化的配置,用户体验感非常好。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

830

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部