初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2018-7-14
- 在线时间
- 17 小时
|
5金钱
今天与遇到问题了,关于模拟看门狗网上资料特别少。大家帮我看看为什么我配置的模拟看门狗触发不了呢。
[mw_shl_code=c,true]void Adc2_init(void){
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStru;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC2,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_Init(GPIOC,&GPIO_InitStructure);
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //<=14Mhz //ADC 2 IN15
ADC_DeInit(ADC2); //important
ADC_InitStru.ADC_ContinuousConvMode=ENABLE;
ADC_InitStru.ADC_DataAlign=ADC_DataAlign_Right; //数据右对齐
ADC_InitStru.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStru.ADC_Mode=ADC_Mode_Independent;
ADC_InitStru.ADC_NbrOfChannel=1; //开启一个采样通道
ADC_InitStru.ADC_ScanConvMode=DISABLE;
ADC_SoftwareStartConvCmd(ADC2, ENABLE);
ADC_Init(ADC2,&ADC_InitStru);
ADC_RegularChannelConfig(ADC2, ADC_Channel_15, 1, ADC_SampleTime_71Cycles5 );
ADC_Cmd(ADC2,ENABLE);
ADC_ResetCalibration(ADC2);
while(ADC_GetCalibrationStatus(ADC2)) continue;
ADC_StartCalibration(ADC2);
while(ADC_GetCalibrationStatus(ADC2)) continue;
ADC_AnalogWatchdogSingleChannelConfig(ADC2,ADC_Channel_15); //配置模拟看门狗
ADC_AnalogWatchdogThresholdsConfig(ADC2,0,0x800);
ADC_AnalogWatchdogCmd(ADC2,ADC_AnalogWatchdog_SingleRegEnable);
// ADC_AnalogWatchdogCmd(ADC2,ENABLE);
ADC_ITConfig(ADC2,ADC_IT_AWD,ENABLE);//
NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
NVIC_Init(&NVIC_InitStructure);
}
void ADC1_2_IRQHandler(void)
{
// ADC_ITConfig(ADC1,ADC_IT_AWD,DISABLE);
if(SET == ADC_GetFlagStatus(ADC2,ADC_FLAG_AWD))
{
// ADC_ClearFlag(ADC2,ADC_FLAG_AWD);
In_Protect=0;
ADC_ClearITPendingBit(ADC2,ADC_IT_AWD);
}
// ADC_ITConfig(ADC1,ADC_IT_AWD,ENABLE);
}[/mw_shl_code]
|
最佳答案
查看完整内容[请看2#楼]
至此,问题已经解决了。还好想起了在网上查配置看门狗资料的时候看到的一个帖子,说是上阈值和下阈值颠倒了,刚才一看果然是的。
应该改成这样 ADC_AnalogWatchdogThresholdsConfig(ADC2,0x800 ,0);
外国人和中国人的思维还真不一样。
其实配置的时候这些函数都是我在博客上copy的,但是发个有这样错误的帖子就不应该了吧,难道自己的代码不去测试就贴出来了。
既然问题解决了,准备回宿舍。。。。
|