[STM32WB] STM32WB09KE+初探点亮LED

[复制链接]
1348|2
 楼主| meiyaolei 发表于 2024-11-18 19:54 | 显示全部楼层 |阅读模式
本帖最后由 meiyaolei 于 2024-11-18 19:57 编辑

一、概述
STM32WB09KE是STMicroelectronics(意法半导体)推出的一款超低功耗蓝牙无线SoC(System on Chip,系统级芯片)解决方案。它内嵌了符合蓝牙低功耗SIG规范v5.4的无线电模块,具备出色的无线性能和一流的射频效率,可确保连接稳定可靠。STM32WB09KE还支持Bluetooth LE 5.4,为物联网设备提供了长寿命的电池选项。

二、核心特性
处理器:STM32WB09KE采用Arm Cortex-M0+作为主处理器,运行频率高达64MHz。配备了一个无线电内核协处理器(基于DMA),用于处理Bluetooth LE的时序关键型操作。
存储器:该芯片具有512KB的Flash存储器和64KB的RAM,可满足各种应用场景的需求。
无线性能:STM32WB09KE支持Bluetooth LE 5.4,并具备出色的无线性能和射频效率。它支持点对点连接和Bluetooth Mesh网络,允许以可靠的方式建立大规模设备网络。
安全性:STM32WB09KE提供了增强的安全硬件支持,包括真随机数发生器(TRNG)、用于128位AES加密的安全协处理器、CRC计算单元等。
外设接口:该芯片配备了丰富的外设接口,SPI、I2C、USART、LPUART等,方便与其他设备进行通信。
低功耗:STM32WB09KE采用了高效的电源管理策略,包括SMPS降压转换器和带固定阈值的集成PDR电路等,可在低功耗模式下运行。
以上性能来自百度,下面正式开始点灯。

STM32WB09KE通过对GPIO(通用输入输出)端口的配置,控制LED灯的亮灭。

以下是使用STM32WB09KE点亮LED灯的详细步骤:

三、硬件准备
STM32WB09KE开发板:开发板上的开关需要拨到正确的位置,才能进行工作,请看下图。
电源与连接线:为开发板提供稳定的电源,连接开发板和电脑设备。
20367673b2948b5fbf.png
原理图:
93214673b2b2a618dc.png

30890673b2b3c8bfe5.png

96289673b2b6e65b74.png

四、软件准备
STM32CubeMX:用于配置STM32WB09KE的时钟、GPIO等外设。
IDE:Keil,用于编写和调试代码。

五、配置步骤
打开STM32CubeMX:
创建一个新项目,并选择STM32WB09KE作为目标芯片。
根据需要配置时钟,一般使用外部高速时钟(HSE)或内部高速时钟(HSI)。
配置GPIO:
在“Pinout & Configuration”选项卡中,找到与LED灯相连的GPIO端口。
将这些GPIO端口的模式设置为“Output”(输出)。
根据需要配置输出类型(如Push-Pull或Open-Drain)和速度。
生成代码:
在STM32CubeMX中配置完成后,点击“Project”选项卡,设置项目名称和保存路径。
选择合适的IDE(如Keil)并生成代码。
编写控制代码:
在生成的代码基础上,编写控制LED灯的代码。在main函数中,通过向GPIO端口的输出数据寄存器写入特定的值来点亮或熄灭LED灯。

示例代码(伪代码):
  1.   HAL_Init();

  2.   /* USER CODE BEGIN Init */

  3.   /* USER CODE END Init */

  4.   /* Configure the system clock */
  5.   SystemClock_Config();

  6. /* Configure the peripherals common clocks */
  7.   PeriphCommonClock_Config();

  8.   /* USER CODE BEGIN SysInit */

  9.   /* USER CODE END SysInit */

  10.   /* Initialize all configured peripherals */
  11.   MX_GPIO_Init();
  12.   /* USER CODE BEGIN 2 */

  13.    /* -1- Enable GPIO Clock (to be able to program the configuration registers) */
  14.   LD1_GPIO_CLK_ENABLE();
  15.   LD2_GPIO_CLK_ENABLE();

  16.   /* -2- Configure IO in output push-pull mode to drive external LEDs */
  17.   GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  18.   GPIO_InitStruct.Pull  = GPIO_NOPULL;
  19.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

  20.   GPIO_InitStruct.Pin = LD1_PIN;
  21.   HAL_GPIO_Init(LD1_GPIO_PORT, &GPIO_InitStruct);
  22.   GPIO_InitStruct.Pin = LD2_PIN;
  23.   HAL_GPIO_Init(LD2_GPIO_PORT, &GPIO_InitStruct);

  24.   /* USER CODE END 2 */

  25.   /* Infinite loop */
  26.   /* USER CODE BEGIN WHILE */
  27.   while (1)
  28.   {
  29.     /* USER CODE END WHILE */

  30.     /* USER CODE BEGIN 3 */
  31.     HAL_GPIO_TogglePin(LD1_GPIO_PORT, LD1_PIN);
  32.     /* Insert delay 100 ms */
  33.     HAL_Delay(100);
  34.     HAL_GPIO_TogglePin(LD2_GPIO_PORT, LD2_PIN);
  35.     /* Insert delay 100 ms */
  36.     HAL_Delay(100);

  37.   }
六、实际运行结果:
90895673b2a8b20ff8.png
86400673b2ac2cef7c.gif


yangjiaxu 发表于 2024-12-5 09:46 | 显示全部楼层
不错的啊,这点灯很效率,不过hal感觉还是有些臃肿,虽然开发起来比较快
B1lanche 发表于 2024-12-5 11:31 | 显示全部楼层
加油加油,后续用蓝牙来点个灯,更加的像个产品
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:工程师
简介:超越自我,为设计激发灵感和想象。

263

主题

836

帖子

6

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