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

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

三、综合功能

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

相关推荐
灯琰14 小时前
# STM32L051K6U6 IAP Bootloader 开发踩坑实录
stm32
菜鸟的学习日记、4 小时前
GPIO的几种模式——以STM32为例
stm32·单片机·嵌入式硬件·gpio
辰哥单片机设计4 小时前
STM32智能睡眠检测系统
stm32·单片机·嵌入式硬件
隔窗听雨眠6 小时前
在STM32上跑通TinyML:从模型训练到推理优化的完整实战指南
stm32·单片机·嵌入式硬件
ryanuo78 小时前
Mac(M芯片)上进行嵌入式开发遇到的问题
嵌入式硬件·macos·开发板
机器视觉知识推荐、就业指导9 小时前
为什么同一个引脚不能同时做按键和串口
stm32·单片机·嵌入式硬件
崇山峻岭之间9 小时前
单片机基本定时器实验
单片机·嵌入式硬件
DS小龙哥9 小时前
基于ESP32设计的智能养蜂监测系统
stm32·单片机·嵌入式硬件·物联网·华为云
夜月yeyue10 小时前
STM32 DMA 双缓冲采样
linux·stm32·单片机·嵌入式硬件·系统架构
西城微科方案开发11 小时前
SIC8P370D2L-PLP16 8位OTP单片机 低功耗多功能MCU详解
单片机·嵌入式硬件