[STM32C0] STM32C011J6M6 adc操作

[复制链接]
16|10
观海 发表于 2026-5-9 14:52 | 显示全部楼层 |阅读模式
/* 读取 ADC1 通道 8 的原始值(12 位) */
uint16_t ADC1_ReadChannel8(void)
{
    uint16_t adc_value = 0;

    /* 1. 启动 ADC 转换 */
    HAL_ADC_Start(&hadc1);

    /* 2. 等待转换完成(超时 100ms) */
    if (HAL_ADC_PollForConversion(&hadc1, 100) == HAL_OK)
    {
        /* 3. 读取转换结果 */
        adc_value = HAL_ADC_GetValue(&hadc1);
    }

    /* 4. 停止 ADC(单次模式,可选,下次启动前会重新校准) */
    HAL_ADC_Stop(&hadc1);

    return adc_value;
}

/* 读取电压值(单位:mV) */
float ADC1_GetVoltage(void)
{
    uint16_t raw = ADC1_ReadChannel8();
    float voltage = (raw * 3300.0f) / 4095.0f;  // 参考电压 3.3V,12 位分辨率
    return voltage;
}


int main(void)
{
    HAL_Init();
    SystemClock_Config();   // 系统时钟配置
    MX_GPIO_Init();
    MX_ADC1_Init();

    uint16_t adc_raw;
    float adc_v;

    while (1)
    {
        adc_raw = ADC1_ReadChannel8();
        adc_v = (adc_raw * 3.3f) / 4095.0f;

        // 打印或使用 adc_v ...
        HAL_Delay(500);
    }
}



通道映射:不同 STM32 系列 ADC1 通道 8 的引脚不同:

F1 系列 → PB0

F4 系列 → PB0 或 PC2(取决于型号)

G0 系列 → 请查阅数据手册。

校准:首次上电建议调用 HAL_ADCEx_Calibration_Start(&hadc1) 进行校准。

多通道:若需要扫描多个通道,需配置扫描模式和 DMA。


————————————————
版权声明:本文为CSDN博主「Miko-one」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42949957/article/details/160283673

公羊子丹 发表于 2026-5-10 08:12 | 显示全部楼层
楼主这篇TinyML实战太实用了!我之前在H7上部署模型经常HardFault,后来才知道是内存没对齐,按你说的加__attribute__((aligned(16)))就稳了,太感谢!
周半梅 发表于 2026-5-10 08:13 | 显示全部楼层
想问下楼主,STM32F411跑你这种1D CNN够不够用?我手头只有F4,怕Flash和RAM扛不住,有没有实测过的经验可以分享下。
帛灿灿 发表于 2026-5-10 08:14 | 显示全部楼层
数据漂移这个坑我真踩过!实验室准得很,一上产线就拉胯,后来按你说的做数据增强,准确率直接回升,这招太关键了。
童雨竹 发表于 2026-5-10 08:15 | 显示全部楼层
我一直用TFLM,没想到Cube.AI能快这么多,回头我就把项目迁移过去试试,顺便问下量化时边界样本要怎么筛选更高效?
万图 发表于 2026-5-10 08:16 | 显示全部楼层
哈哈TinyML以前觉得高大上,看完你这篇感觉也没那么玄乎,就是量化、内存对齐、数据增强三件套,新手也能快速上手了。
Wordsworth 发表于 2026-5-10 08:17 | 显示全部楼层
楼主有没有试过在Cortex-M0+上跑最小模型?我想做超低功耗节点,不知道能不能跑得动简单的二分类,求指点。
Bblythe 发表于 2026-5-10 08:18 | 显示全部楼层
我建议刚入门的朋友先从振动检测这种1D数据入手,比图像简单太多,不容易被显存和算力劝退,一步步来更稳。
Pulitzer 发表于 2026-5-10 08:19 | 显示全部楼层
探针调试工具probe-rs我第一次听说,比OpenOCD还快?回头我装一个试试,做TinyML实时日志太需要这种工具了。
Uriah 发表于 2026-5-10 08:20 | 显示全部楼层
楼主提到NPU自动映射,STM32N6真的能一键跑模型吗?不用手动切算子?如果是这样那开发效率直接起飞。
Clyde011 发表于 2026-5-10 08:21 | 显示全部楼层
我在量化时经常遇到边界样本误判,按你说的加重边界样本训练后确实好很多,不过想问下阈值一般设多少比较合适?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

4581

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0