- 打卡等级:偶尔看看III
- 打卡总天数:41
- 最近打卡:2025-04-12 15:59:55
注册会员
- 积分
- 74
|
本帖最后由 tailimo 于 2024-9-4 22:14 编辑
我使用ADC10与13通道读取电位器的ad值 ,通过PWM输出给灯(PWM测试过是正常的),
供电与ADC_Vref为3.1v左右
一个通道输入为0v时,另外一个通道可以正常输出10位ad值
当其中一个通道输入电压值大于另外一个通道大约1v时 , 输入电压值小的其ad值将变为0左右(指 存在一个1v左右压差)
子函数
void ADCInit(void)
{
ADC_CONTR = 0x00; //关闭adc
ADCCFG = 0xf0; //右对其
ADCTIM = 0x3d; //300K
}
unsigned int ADC10_Start(void)
{
ADC_CONTR = 0xca; //启动adc10通道
while(!(ADC_CONTR&0x20)); //判断是否完成
ADC10value=256*ADC_RES;
ADC10value+=ADC_RESL;
ADC_CONTR = 0x80; //清除标志
return ADC10value; //返回ADC值
}
unsigned int ADC13_Start(void)
{
ADC_CONTR = 0xcd; //启动adc13通道
while(!(ADC_CONTR&0x20)); //判断是否完成
ADC13value=256*ADC_RES;
ADC13value+=ADC_RESL;
ADC_CONTR = 0x80;
return ADC13value; //返回ADC值
}
void ADC_Open(void)
{
ADC_CONTR = 0x80; //开启adc
_nop_();
}
主程序main
P_SW2 = 0x80;
初始化......
unsigned int a=0,b=0;
ADC_Open();
while(1)
{
a = ADC10_Start();
b = ADC13_Start();
PWM_82_CCR_Value(a); //写入PWM8_2的CCR寄存器
PWM_4N_CCR_Value(b); //写入PWM4N的CCR寄存器
}
|
|