scoopydoo 发表于 2025-2-9 21:12:54

[笔记] 码农再战 AI,通过系统时钟初始化代码识别 MCU

就在刚刚,为了测试 AI 对代码的理解能力,在 VS Code 中让 Copilot 分析了一段代码,选用的是预览版的 o1 模型,代码片段如下:

/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/** Configure the main internal regulator output voltage
*/
HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);

/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
    Error_Handler();
}

/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
    Error_Handler();
}
}

AI 略作思考就给出了回答,俺看了一下觉得它的分析中规中矩没啥毛病,但是更像是官话套话,就决定给它上点手段,追问了一句:你知道这是什么型号 MCU 的代码吗?

AI 又思考了几秒钟,说根据代码的特征看,应该是 STM32G0 系列的微处理器。

这个回答完全正确,但是它说是根据代码片段分析出来的,俺表示怀疑,这家伙肯定是偷看了代码的其他部分,甚至项目里的其它文件才扽出结果的。

于是俺又问它,你根据什么特征分析出来,具体说说好吗。于是 AI 给出了如下的回答 (原回答是英文,机器翻译成中文的):

我认出了 STM32G0 系列,因为代码使用了 HSI 分频器字段(“HSIDiv”),它出现在 STM32G0 HAL 驱动程序中。此外,功率调节功能(`HAL_PWREx_ControlVoltageScaling`)和整体时钟配置与G0系列参考一致。这种外设调用的组合表明该微控制器来自 STM32G0 系列。

感觉这次交锋好像是 AI 占了上风,因为俺已经无力分辨它的回答是正确的,还是一本正经的胡说八道了 ...... :L

suvsu 发表于 2025-2-9 22:17:03

现在有好多人在挑战AI 谢谢楼主分享!他只是个学习型专门抄人家的综合后来回答里会得到一些意想不到的东西:lol

lxa000 发表于 2025-2-10 00:21:07

AI 写代码还是不大行。
我试过好几个 AI 了。

bj549 发表于 2025-2-10 08:59:22

厉害,厉害,真厉害...

JuncoJet 发表于 2025-2-10 09:01:37

代码感觉还行,AI画电路图那是不行
太过于抽象

量子隧道 发表于 2025-2-10 09:32:29

虽然无法判断最后一段的正确性,但是看它的回答确实看起来很专业

scoopydoo 发表于 2025-2-10 11:41:05

量子隧道 发表于 2025-2-10 09:32
虽然无法判断最后一段的正确性,但是看它的回答确实看起来很专业

后来俺又追问它有没有任何可能 STM32 的其它系列也存在这种组合,它回答说:

它最常用于 STM32G0 设备,但相同的代码模式也可出现在具有类似 HAL 功能的其他 STM32 系列中。检查设备头文件(例如,stm32g0xx.h)或您的项目配置可以确认这一点。

scoopydoo 发表于 2025-2-10 12:37:42

本帖最后由 scoopydoo 于 2025-2-10 12:52 编辑

JuncoJet 发表于 2025-2-10 09:01
代码感觉还行,AI画电路图那是不行
太过于抽象

这个恐怕要等各大厂商在自家的 EDA 软件里集成 AI 了 :lol

lizhifeng 发表于 2025-3-18 16:52:02

试过叫ai写arduino点亮tft屏幕的例子,他这边抄那边炒,抄回来的煞有介事 但是编译不了
页: [1]
查看完整版本: [笔记] 码农再战 AI,通过系统时钟初始化代码识别 MCU