AI辅助Stm32l031项目开发调试板子之按键跟adc
在上一篇中文章中,AI一顿输出了一堆代码,还报错了,本篇文章将对其进行调试。
一、按键调试
查看按键相关代码
c
/*Configure GPIO pin : KEY_Pin */
GPIO_InitStruct.Pin = KEY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI4_15_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
/**
* @brief 按键中断回调函数
* @param GPIO_Pin 中断引脚
*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == KEY_Pin) {
// 消抖
HAL_Delay(10);
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET) {
if (g_system_status == SYSTEM_SLEEP) {
// 从待机模式唤醒
LowPower_Exit();
HAL_GPIO_WritePin(GREEN_LED1_GPIO_Port, GREEN_LED1_Pin, LED_ON);
} else {
// 工作模式下重新测光
g_meter_flag = 1;
g_last_operation_time = HAL_GetTick();
}
}
}
}
我这里的按键模式简单使用exit中断功能,在中断回调里面使用简单的hal_delay();来进行消抖,这里消抖有个地方需要注意,就是优先级的问题。

因为系统比较简单,我这直接更改优先级为最高了,毕竟全局只是用到了这个中断,完全不用担心影响别的中断啥事,要是有多个中断时,需要考虑中断优先级排序问题,具体场景具体分析。
二、调试传感器和adc
经过一顿折腾,传感器的数据和adc的数据也正常获取了

调试这类外设时,就是按照对应的操作手册来编程实现,需要耐心,方法,然后实操就调出来了,要有一定的调试方向,这个需要在平时的项目中进行积累,按照自己的方法和套路来就行。
三、综合功能
略,整机的综合功能,将在下一篇博文中进行调通,并给出整个工程的完整代码,下篇见。