本帖最后由 videre 于 2011-4-6 11:49 编辑
IDE是IAR1.2
单步调试时,ADC的所有寄存器值都写不进去,总是复位值
是不是还有什么寄存器没有配置
/***************************************************
初始化ADC1采样
*****************************************************/
void ADC1_init(void)
{
ADC1_CR1 = 0x00; // ADC转换模式=单次, 关闭ADC
ADC1_CR2 = 0x04; // 1x ADC时钟,采样时间48个ADC时钟周期
ADC1_SQR1 = 0x80; //关闭DMA
}
/***************************************************
显示电池电量
ADC1通道0,端口PA6
*****************************************************/
void Show_Battery(void)
{
ADC1_init();
unsigned int AD_Battery;
ADC1_CR1 = 0x01; // 使能ADC转换
delay_us(50); // 延时一段时间,至少7uS,保证ADC模块的上电完成
ADC1_SQR4 = 0x01; //选择通道0
ADC1_CR1 = 0x03; // 开始ADC转换
delay_us(50);
while(!(ADC1_SR & (1<<0)));// 等待ADC结束
AD_Battery = ADC1_DRH<<8; // 读出ADC结果的高8位
AD_Battery = AD_Battery & ADC1_DRL;
if(AD_Battery > 1800)
LCD_WriteIconString(90,0,"WX"); // battery volt-meter full
else
if(AD_Battery > 1200)
LCD_WriteIconString(90,0,"UV"); // battery volt-meter half
else
LCD_WriteIconString(90,0,"ST"); // battery volt-meter empty
} |