简介
在前几个章节中我们完成了,蓝牙台灯的基础任务相关,即使用ADC采集电池电量和使用PWM来控制灯的亮度。不过项目是属于独立的功能模块,在这个章节中我们将两个工程组合在一起。 同时演示蓝牙调试助手的使用。那么在下一个章节,我们将展示最终的成品效果。
我们可以直接在ADC的工程上修改。
1 - 首先配置定时器
/* TIM2 init function */
void MX_TIM2_Init(void)
{
/* USER CODE BEGIN TIM2_Init 0 */
/* USER CODE END TIM2_Init 0 */
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM2_Init 1 */
/* USER CODE END TIM2_Init 1 */
htim2.Instance = TIM2;
htim2.Init.Prescaler = 80-1;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 9999;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 5000;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM2_Init 2 */
/* USER CODE END TIM2_Init 2 */
HAL_TIM_MspPostInit(&htim2);
}2- 使能输出
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 1000); // 设置占空比 HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); // 启动PWM输出
现象

虽然上述的程序中ADC还是在主程序中运行的,但是由于时间较短,并没有影响到蓝牙协议的运行
蓝牙调试助手的使用
1- 在应用商店搜索ST ble toolbox并且下载

2- 烧录程序后打开软件搜索蓝牙并且连接。

3-P2P-server 处通过蓝牙来控制板载LED闪烁。

4 - 代码分析

代码的控制部分在STM32WPAN的APP下的P2P_server_app.c 中,我们可以在这个地方定义不同的命令来控制PWM的占空比。

 
					
				
 
			
			
			
						
			 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

