ARM入门笔记部件

汤羹 2020年12月15日

ARM入门笔记(5)

通过A/D转换,能够正确读取外部模拟输入通道的电压值。

二.实验程序和参数设置

1 连接器选项设置和启动代码都与上个实验相同

2 C语言的代码

#i nclude AT91SAM7S64.h

#i nclude Board.h

volatile unsigned int EXT_AD_Val[4]; //定义A/D转换结果值

int main(void)

{unsigned char i;

*AT91C_ADC_CR = AT91C_CKGR_MOSCEN; //ADC的软件复位,即清除ADC的所有寄存器

*AT91C_PMC_SCER = AT91C_CKGR_MOSCEN;//使能系统时钟寄存器的处理器时钟

*AT91C_PMC_PCER = 1 91C_ID_ADC; //使能ADC时钟

*AT91C_PIOA_PDR = EXT_AD0 | EXT_AD1; //禁止管脚的I/O口功能,使作为模拟输入功能

*AT91C_ADC_MR= 0x0f1f3f00; //软件起动,10位分辨率,128分频

*AT91C_ADC_CHER = 0x33; //使能通道0,1,4,5

非议我斗不过他们

*AT91C_ADC_CHDR = 0xcc; //禁能通道2,3,6,7

*AT91C_ADC_IDR= 0xfffff; //禁止所有ADC中断

while (1)

{ *AT91C_ADC_CR = 0x2; //起动转换

while(1)

{ if ((*AT91C_ADC_SR) 0x33)//等待转换结束

{ EXT_AD_Val[0] = (*AT91C_ADC_CDR0) 0x3ff;//读取10Bit的结果值

EXT_AD_Val[1] = (*AT91C_ADC_CDR1) 0x3ff;

EXT_AD_Val[2] = (*AT91C_ADC_CDR4) 0x3ff;

EXT_AD_Val[3这部卡通片的录像带应该是自己的父亲当年收藏的] = (*AT91C_ADC_CDR5) 0x3ff;

for (i = 0; i

break;

}

}

}

}

三.总结

执行ADC的软件复位,将清除ADC的所有相关寄存器,因此必须在设置ADC相关寄存器之前执行。

呼和浩特妇科习惯性流产哪家好
南宁哪医院治疗男科好
药物拮抗作用
友情链接: 最全的天长美食攻略