本帖最后由 gaoyang9992006 于 2022-11-16 17:29 编辑
首先搞清楚ADC通道映射到IO上的序列
比如我们使用PA2引脚,查看芯片手册,发现该引脚对应AIN22通道
新建工程,在MCC里启用如下外设功能,并配置PA2引脚为ADC0上的通道
如果不看手册,通过这里也可以查看到所在的通道
然后我们要用串口输出,串口开发板自带的使用了UART0
另外需要在IO配置里启用他们
如果ADC配置里选择了左对齐,应注意结果,如果想要保留所有数据,则需要右移4位即可,关闭这个功能,直接读即可
参考电压选择VDD即可。
之后我们生成代码,并进入main.c完成测量工作
#include "mcc_generated_files/system/system.h"
#include "mcc_generated_files/timer/../timer/delay.h"
/*
Main application
*/
int main(void)
{
SYSTEM_Initialize();
while(1)
{
printf("Hello world !\n");
DELAY_milliseconds(2000);
printf("%d\n",ADC0_GetConversion(ADC_MUXPOS_AIN22_gc)>>4);//设置了左对齐,那么咱数据就右移回来
DELAY_milliseconds(2000);
}
}
这里唯一不爽的是一定要使用头文件中的通道宏,如果能在MCC里就实现用户自定义的映射就好了,哈哈。
接下来用导线链接PA2到GND,和到VDD测试。
非常的好,接到GND就是0,接到VDD就是满刻度4095
|