AI辅助Stm32l031项目开发调试完成与总结
一、低功耗调试
在本次案例中,选用的是低功耗芯片,能干到ua级别,功能不是特复杂时级别都能达到需求。关闭基本耗电的外设,关闭必要的时钟,低功耗代码片段如下:
/**
* @brief 进入低功耗模式
*/
void LowPower_Enter(void)
{
// 关闭LED
LED_Off();
// 关闭传感器
Disable_Sensor();
// 关闭ADC
HAL_ADC_Stop_DMA(&hadc);
HAL_GPIO_WritePin(POEWR_CONTROL_GPIO_Port,POEWR_CONTROL_Pin,GPIO_PIN_RESET);
// 进入待机模式
g_system_status = SYSTEM_SLEEP;
// 配置按键为唤醒源
GPIO_InitTypeDef GPIO_InitStruct = {
.Pin = KEY_Pin,
.Mode = GPIO_MODE_IT_FALLING,
.Pull = GPIO_PULLUP,
};
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
// 进入STOP模式
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
}
/**
* @brief 退出低功耗模式
*/
void LowPower_Exit(void)
{
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
// 恢复系统时钟
SystemClock_Config();
// 重新初始化外设
MX_GPIO_Init();
MX_DMA_Init();
MX_ADC_Init();
MX_USART2_UART_Init();
// 重新初始化传感器
Initialize_VEML7700();
// 启动ADC
HAL_ADC_Start_DMA(&hadc, (uint32_t *)g_adc_buff, 2);
// 恢复系统状态
g_system_status = SYSTEM_WORK;
uint32_t current_time = HAL_GetTick();
g_work_mode_start_time = current_time; // 重置工作模式开始时间
g_last_operation_time = current_time; // 重置最后操作时间
g_meter_flag = 1;
}
设计低功耗主要从以下几方面着手:
1.用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。
可以使用的低功耗方式有休眠模式,待机模式,停机模式。
- 选择了低功耗方式后就是关闭可以关闭的外设时钟。
- 降低系统主频。
- 注意I/O的状态。
如果此IO口带上拉,请设置为高电平输出或者高阻态输入;
如果此IO口带下拉,请设置为低电平输出或者高阻态输入;
a. 在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。
b. 在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
c. 在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:
● 复位引脚(仍可用)。
● RTC_AF1 引脚 (PC13)(如果针对入侵、时间戳、 RTC 闹钟输出或 RTC 时钟校准输出进行了配置)。
● WKUP 引脚 (PA0)(如果使能)。 - 注意IO和外设IC的连接。
- 测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。
二、功耗结果
本次案例中,功耗结果是5ua左右,可以接受。

三、项目总结
因为我调过这个项目,所以在和AI的沟通互动中有明确需求,AI能根据你明确需求进行生成代码,一点点的问AI具体问题,AI一次解决一小部分问题,然后综合解决,是一个不错的不工具。AI时代,一个是一个公司也是有可能。拿来辅助编程吧,学无止境。
四、项目源码
本次开发中使用的源码,本案完!