STC32G12K128-ADC
最近开发一个12VBMS的项目,为了降成本和提高开发周期,硬件工程师选择了一款国产MCU作为主控,基本上能满足功能要求
项目主要模块就是AD采样,CAN报文发送,故障诊断
今天记录一下AD采样这部分
//=============================================== //ADC初始化函数 //=============================================== void adc_init(void) { //所有ADC引脚配置高阻输入 P0M1 |= 0x7c; P0M0 &= ~0x7c; P1M1 |= 0x03; P1M0 &= ~0x03; //ADC_CONTR |= 1<<4; //使能PWM ADCTIM = 0x3f; //设置ADC内部时序 EADC=0; //禁止ADC转换中断 ADCCFG |= 1<<5; //转换结果右对齐 ADCCFG |= 0xC; //设置ADC时钟/2/16 ADC_CONTR |= 1<<7; //打开电源 delay_ms(10); } //=============================================== //ADC获取通道数字量,channelNum=0~15 //=============================================== unsigned short GetADCresult(unsigned char channelNum) { ADC_RES = 0; ADC_RESL = 0; ADC_CONTR = (ADC_CONTR & 0xF0) | 0x40 | channelNum; //启动 AD 转换 _nop_(); _nop_(); _nop_(); _nop_(); while((ADC_CONTR & 0x20) == 0) ; //wait for ADC finish ADC_CONTR &= ~0x20; //清除ADC结束标志 return (((unsigned short)ADC_RES << 8) + ADC_RESL); }
后面根据要求,对通道结果进行滤波。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!