乐于分享
好东西不私藏

【AI开发STM32 LESSON3】Trae CN AI软件开发STM32F4 ADC DMA自动生成代码——开发板验证

【AI开发STM32 LESSON3】Trae CN AI软件开发STM32F4 ADC DMA自动生成代码——开发板验证

 在前面两篇的基础上,再加上ADC DMA
【AI开发STM32 LESSON1】Trae CN AI软件开发STM32 LESSON1——GPIO
【AI开发STM32 LESSON2】Trae CN AI软件开发STM32F4  USART自动生成代码
一、首先打开Trae软件,打开文件夹
选择自己的工程模板,不要让trae自动生成,自动生成的有些问题
二、输入自己的需求
ctrl+u
然后就开始自动生成代码了
需要稍微等一会,这个有时候速度慢一些
生成完成后,会有声音提示你
打开KEIL工程,开始编译
编译出错,继续把错误喂给AI
修改之后还是错,继续喂给他
修改后编译通过
打开代码看下,因为我输入需求的时候,让他给我对ADC的结果进行滤波,所以会有一个ADC滤波函数
void Adc_Filter(void){    u8 ch, i, j;    u32 sum;    u16 temp;    for(ch = 0; ch < ADC_CHANNEL_NUM; ch++)    {        for(i = ADC_SAMPLE_NUM - 1; i > 0; i--)        {            ADC_FILT_BUF[ch][i] = ADC_FILT_BUF[ch][i - 1];        }        ADC_FILT_BUF[ch][0] = ADC_DMA_BUF[ch];        for(i = 0; i < ADC_SAMPLE_NUM - 1; i++)        {            for(j = i + 1; j < ADC_SAMPLE_NUM; j++)            {                if(ADC_FILT_BUF[ch][i] > ADC_FILT_BUF[ch][j])                {                    temp = ADC_FILT_BUF[ch][i];                    ADC_FILT_BUF[ch][i] = ADC_FILT_BUF[ch][j];                    ADC_FILT_BUF[ch][j] = temp;                }            }        }        sum = 0;        for(i = 1; i < ADC_SAMPLE_NUM - 1; i++)        {            sum += ADC_FILT_BUF[ch][i];        }        ADC_RESULT[ch] = sum / (ADC_SAMPLE_NUM - 2);    }}
粗略看了一下,应该就是标准的滤波方法,去除最大和最小值后,进行平均值计算,挺好
三、仿真测试实际情况
将PA1接3.3V
PA2接0V
PA3接3.3V
PA4接0V
仿真结果
ADC_DMA_BUF[0]  0xFFF   3.3V PA1
ADC_DMA_BUF[1]  0x000   0V PA2
ADC_DMA_BUF[2]  0xFFE   3.3V PA3
ADC_DMA_BUF[3]  0x000   0V PA4
仿真结果与实际对应上,GOOD
后续可以进行更加复杂的应用