使用STM32WBA55 蓝牙助手控制小灯
一、硬件
核心器件
STM32WBA55单片机:
集成了蓝牙低功耗BLE功能,支持多种通信协议,具有丰富的外设接口。
作为整个台灯系统的控制核心,负责处理来自手机或其他蓝牙设备的指令,并控制LED灯的开关、亮度调节等功能。
LED灯:
功能,提供照明功能。
连接方式,通过GPIO接口与STM32WBA55单片机连接,由单片机控制其开关和亮度。
MOS模块板:
功能,作为LED灯的驱动电路,提供稳定的电流输出,保护LED灯不受过流、过压等损害。
连接方式,通过杜邦线与STM32WBA55单片机和LED灯连接。
USB转接板:
功能,提供USB接口,用于给STM32WBA55单片机供电和进行程序下载。
连接方式,通过USB线连接电脑或电源适配器,以及通过杜邦线与STM32WBA55单片机连接。
杜邦线:
功能,作为连接各个器件的导线,实现电路的连接。
二、软件部分
主要是以KEIL开发平台。
蓝牙 UART 初始化函数
uint32_t MX_APPE_Init(void *p_param) { APP_DEBUG_SIGNAL_SET(APP_APPE_INIT); UNUSED(p_param); /* System initialization */ System_Init(); /* Configure the system Power Mode */ SystemPower_Config(); #if (USE_TEMPERATURE_BASED_RADIO_CALIBRATION == 1) /* Initialize the Temperature measurement */ TEMPMEAS_Init (); #endif /* (USE_TEMPERATURE_BASED_RADIO_CALIBRATION == 1) */ /* Initialize the Advance Memory Manager module */ APPE_AMM_Init(); /* Initialize the Random Number Generator module */ APPE_RNG_Init(); /* Initialize the Flash Manager module */ APPE_FLASH_MANAGER_Init(); /* Disable flash before any use - RFTS */ FD_SetStatus (FD_FLASHACCESS_RFTS, LL_FLASH_DISABLE); /* Enable RFTS Bypass for flash operation - Since LL has not started yet */ FD_SetStatus (FD_FLASHACCESS_RFTS_BYPASS, LL_FLASH_ENABLE); /* Enable flash system flag */ FD_SetStatus (FD_FLASHACCESS_SYSTEM, LL_FLASH_ENABLE); /* USER CODE BEGIN APPE_Init_1 */ #if (CFG_LED_SUPPORTED == 1) APP_BSP_LedInit(); #endif /* (CFG_LED_SUPPORTED == 1) */ #if (CFG_BUTTON_SUPPORTED == 1) APP_BSP_ButtonInit(); #endif /* (CFG_BUTTON_SUPPORTED == 1) */ /* USER CODE END APPE_Init_1 */ /* Initialize the Ble Public Key Accelerator module */ APPE_BPKA_Init(); /* Initialize the Simple Non Volatile Memory Arbiter */ if( SNVMA_Init((uint32_t *)CFG_SNVMA_START_ADDRESS) != SNVMA_ERROR_OK ) { Error_Handler(); } APP_BLE_Init(); /* Disable RFTS Bypass for flash operation - Since LL has not started yet */ FD_SetStatus (FD_FLASHACCESS_RFTS_BYPASS, LL_FLASH_DISABLE); /* USER CODE BEGIN APPE_Init_2 */ /* USER CODE END APPE_Init_2 */ APP_DEBUG_SIGNAL_RESET(APP_APPE_INIT); return WPAN_SUCCESS; }
小灯控制相关的 GPIO 初始化函数
void APPE_Button3Action(void) { if (bleAppContext.Device_Connection_Status != APP_BLE_CONNECTED_SERVER) { LED.Mode_Dis++; LED.Mode_Dis %=5; } else { APP_BLE_Procedure_Gap_Peripheral(PROC_GAP_PERIPH_CONN_PARAM_UPDATE); } return; }
三、BLE配置与实际点亮状态,输出操作界面
点灯状态
软件操作界面: