AI辅助Stm32l031项目开发基础准备

AI辅助Stm32l031项目开发基础准备

AI时代,工具好用到飞起,用来学习嵌入式是一个不错的帮手,省事。自己平时擅长中小型程序的嵌入式开发,这次使用AI带来一篇测光表的项目开发。

一、测光表项目简介

测光表是一种用来测量光的强度的仪器。在摄影中, 测光表被用来确定适当的曝光时间。在胶片感光度和快门速度已知的情况下, 测光表给出获得最佳曝光的光圈值。测光表也被用来控制照明的亮度,或者被用作手持的仪器, 确保光强符合拍摄的要求。

在本次项目方案中使用Stm32l031这颗ic来进行一个简易的实现方案。

二、使用的电子资源

三、电子功能

工作模式和待机模式切换

按键唤醒和测光功能

两路ADC电阻识别(快门盘和光圈盘)

IIC通讯测光元件数据采集

曝光状态显示(欠曝、正常、过曝)

低功耗设计

ADC数据滤波

四、编程实现

将功能需求发给AI,让它帮我编程,我只进行调试就简便了。

shell 复制代码
这个是一个测光表的产品的嵌入式开发项目文件资源,这个测光表的玩法是这样:系统由一个按键,一个串口2(调试日志使用),2个红色指示灯,一个绿色指示灯,两路adc电阻识别,一个IIC通讯的测光元器件,小型电池供电。有工作模式和待机模式。工作模式只工作60s,按下按键进行测光,然后波动两个adc的电阻指示(一个盘称之为快门盘,一个盘称之为光圈盘,本质上是adc数据的应用),结合测光元件获得的数据进行综合运算,对本次测光进行显示,有完全欠曝显示,完全过曝显示,刚好曝光正常显示绿灯,有欠曝一档,过曝一档的显示,需要设计一些宏进行调参,可参考我写的代码片段。电池供电产品,考虑低功耗,工作10s后如果没有操作adc则进行灭灯进行省电,60s无操作进入低功耗模式,单击测光按键进行测光并唤醒,adc数据考虑滤波操作。大致功能需求如上,考虑一次开发多端部署,开发完成这个项目,下一个类似的项目也可以进行复用,请开始编程完成这个任务,我将对你的编程代码在我的硬件上进行调试

把明确的功能的需求发给trae,我这里是使用trae来辅助编程,然后AI生成了一堆代码,看下AI生成的函数片段,还行可以理解。

复制代码
/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_ADC_Init();
  MX_USART2_UART_Init();
  MX_TIM2_Init();
  /* USER CODE BEGIN 2 */
  
  // 初始化AI_code系统
  System_Init();
  
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    // 运行测光主函数
    Meter_Main();
    
    // 短暂延时
    HAL_Delay(100);
  }
  /* USER CODE END 3 */
}

/**
 * @brief 测光主函数
 */
void Meter_Main(void)
{
    // 检查系统状态
    if (g_system_status == SYSTEM_SLEEP) {
        return;
    }
    
    // 执行测光
    if (g_meter_flag) {
        // 读取光强数据
        Read_als_data();
        g_light_intensity = calculateLux();
        g_last_light_intensity = g_light_intensity;
        
        // 清除测光标志
        g_meter_flag = 0;
        
        // 更新操作时间
        g_last_operation_time = g_system_time;
    }
    
    // ADC数据处理
    ADC_Process();
    
    // 计算曝光状态
    g_exposure_status = Calculate_Exposure();
    
    // LED显示控制
    if (g_system_time - g_last_operation_time < LIGHT_OFF_DURATION) {
        g_led_enable = 1;
        LED_Display(g_exposure_status);
    } else {
        g_led_enable = 0;
        LED_Off();
    }
    
    // 低功耗管理
    if (g_system_time >= WORK_MODE_DURATION) {
        LowPower_Enter();
    }
    
    // 调试输出
    Debug_Output();
}

将AI编程的进行编译,然后报了一些错误

将在下一篇博文进行调试通过。

相关推荐
AOI小白新手上路8 分钟前
韦东山IMX6ULL快速入门路线
嵌入式硬件
仙魁XAN16 分钟前
【WorkBuddy·基础入门】第 四 篇 :模式、技能、专家、连接器一次讲清
人工智能·workbuddy·workbuddy 基础入门·workbuddy 工具
呆萌很19 分钟前
torch.nan_to_num 函数
人工智能
糖糖单片机设计21 分钟前
基于 STM32 的智能净水器系统
stm32·单片机·嵌入式硬件
2601_9583529022 分钟前
还要写 AEC 算法?0 代码 + 6 个引脚,F-18 让通话清晰度提升 300%
人工智能·算法·降噪消回音
zcmodeltech24 分钟前
火电厂模型能演示冷态启动和故障处理吗?——基于STM32与Modbus RTU的集控实训控制系统设计
数据结构·stm32·单片机·嵌入式硬件·能源
千里码aicood30 分钟前
基于机器学习的雷达低慢小目标识别技术的研究
人工智能·机器学习
llilian_1633 分钟前
标准时间间隔发生器应用解决方案 脉冲发生器 时间测量仪
大数据·网络·人工智能·功能测试·单片机·嵌入式硬件·51单片机
世岩清上40 分钟前
展厅数字内容同质化严重,怎样打造专属叙事风格?
大数据·前端·javascript·人工智能·html·音视频·展厅改造
幻影123!41 分钟前
AlphaZero 五子棋实战(一):单卡从零自举,我的v36 最终版配置
人工智能·强化学习·马尔科夫·决策过程