STM32单片机读写2通道带PGA16位ADC-AD7705软件例程源码,可以做为你的学习设计参考。 int main(void) { uint16_t adc1, adc2; /* 由于ST固件库的启动文件已经执行了CPU系统时钟的初始化,所以不必再次重复配置系统时钟。 启动文件配置了CPU主时钟频率、内部Flash访问速度和可选的外部SRAM FSMC初始化。 系统时钟缺省配置为72MHz,如果需要更改,可以修改: \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c 中配置系统时钟的宏。 */ bsp_Init(); PrintfLogo(); /* 打印例程Logo到串口1 */ bsp_InitTM7705(); /* 初始化配置TM7705 */ if (g_TM7705_OK == 0) { printf("未检测到 AD7705\r\n"); } else { printf("已检测到 AD7705\r\n"); TM7705_CalibSelf(1); /* 自校准。执行时间较长,约180ms */ adc1 = TM7705_ReadAdc(1); TM7705_CalibSelf(2); /* 自校准。执行时间较长,约180ms */ adc2 = TM7705_ReadAdc(2); } while (1) { bsp_Idle(); /* 空闲时执行的函数,比如喂狗. 在bsp.c中 */ TM7705_Scan2(); /* 扫描两个个ADC通道, 无等待的 */ { /* 读取扫描结果 (结果定时读取即可) */ adc1 = TM7705_GetAdc1(); adc2 = TM7705_GetAdc2(); /* 打印采集数据 */ { int volt1, volt2; /* 计算实际电压值(近似估算的),如需准确,请进行校准 */ volt1 = (adc1 * 5000) / 65535; volt2 = (adc2 * 5000) / 65535; printf("CH1=%5d (%5dmV) CH2=%5d (%5dmV)\r", adc1, volt1, adc2, volt2); } } } }