打印
[STM32WB]

STM32WB09KE+初探点亮LED

[复制链接]
793|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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开发板:开发板上的开关需要拨到正确的位置,才能进行工作,请看下图。
电源与连接线:为开发板提供稳定的电源,连接开发板和电脑设备。
原理图:



四、软件准备
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灯。

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

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

/* Configure the peripherals common clocks */
  PeriphCommonClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

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

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

  GPIO_InitStruct.Pin = LD1_PIN;
  HAL_GPIO_Init(LD1_GPIO_PORT, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = LD2_PIN;
  HAL_GPIO_Init(LD2_GPIO_PORT, &GPIO_InitStruct);

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    HAL_GPIO_TogglePin(LD1_GPIO_PORT, LD1_PIN);
    /* Insert delay 100 ms */
    HAL_Delay(100);
    HAL_GPIO_TogglePin(LD2_GPIO_PORT, LD2_PIN);
    /* Insert delay 100 ms */
    HAL_Delay(100);

  }
六、实际运行结果:


使用特权

评论回复
沙发
yangjiaxu| | 2024-12-5 09:46 | 只看该作者
不错的啊,这点灯很效率,不过hal感觉还是有些臃肿,虽然开发起来比较快

使用特权

评论回复
板凳
B1lanche| | 2024-12-5 11:31 | 只看该作者
加油加油,后续用蓝牙来点个灯,更加的像个产品

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

196

主题

715

帖子

4

粉丝