AI辅助Stm32l031项目开发调试板子之按键跟adc

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的数据也正常获取了

调试这类外设时,就是按照对应的操作手册来编程实现,需要耐心,方法,然后实操就调出来了,要有一定的调试方向,这个需要在平时的项目中进行积累,按照自己的方法和套路来就行。

三、综合功能

略,整机的综合功能,将在下一篇博文中进行调通,并给出整个工程的完整代码,下篇见。

相关推荐
gscsded23 分钟前
MCUboot裸机移植实战
单片机·嵌入式硬件·arm
北京盛世宏博1 小时前
多协议以太网温湿度变送器:Modbus TCP/UDP/SNMP 协议应用场景详解
单片机·tcp/ip·udp·传感器·温湿度
HRTOS2 小时前
HRTOS 内核 BUG 修复:任务等待对象未初始化导致的异常唤醒问题
单片机·嵌入式硬件·算法·51单片机
@MMiL2 小时前
SImulink: PowerGui下的信号FFT分析
单片机
List<String> error_P2 小时前
UART串口通信示波器波形测试
嵌入式硬件·示波器
番茄灭世神2 小时前
PN学堂GD32教程第12篇——SPI与Nor Flash
c语言·stm32·单片机·嵌入式·gd32·总线协议
狂奔蜗牛(bradley)3 小时前
EtherCAT 主站拓扑判定的三级防护:从去抖到振荡检测
人工智能·嵌入式硬件·fpga开发·架构
HRTOS3 小时前
HRTOS 测试框架完善:为中断验证增加中断来源校验机制
经验分享·单片机·嵌入式硬件·51单片机
FPC_小西3 小时前
您知道嵌入式开发中八大常用接口与总线有哪些吗?
人工智能·单片机·嵌入式硬件·pcb工艺·hdi高密度互联
逐光者9333 小时前
STM32项目——秒表
stm32·单片机·嵌入式硬件