/*========================================================================================================= *?Function?:?int16_t?ADC_UsbDNegative(void) *?Describe?:?獲取ADC_Key通道數(shù)值 *?Input????:?void *?Output???:?void *?Return???:?void *?Record???:?2021/11/29 ==========================================================================================================*/ int16_t?ADC_Key(void) { ????UINT8?i?=?0; ????UINT16?AdcValue=0; ????ADC_ExtSingleChSampInit(SampleFreq_3_2,ADC_PGA_0); ????ADC_ChannelCfg(?0?); ????adclen?=?0; ????ADC_ClearITFlag(); ????PFIC_EnableIRQ(?ADC_IRQn?); ????ADC_StartUp(); ????while(?adclen?<?12?); ????PFIC_DisableIRQ(?ADC_IRQn?); ????for(?i?=?2;?i?<?12;?i++?) ????????AdcValue?+=?abcBuff[i]; ????AdcValue?/=?10; ????return?AdcValue; } __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void?ADC_IRQHandler(?void?)?????????//adc中斷服務(wù)程序 { ??if(?ADC_GetITStatus()?) ??{ ????ADC_ClearITFlag(); ????if(?adclen?<?12?) ????{ ??????abcBuff[adclen]?=?ADC_ReadConverValue(); ??????ADC_StartUp();????????????????//?作用清除中斷標(biāo)志并開(kāi)啟新一輪采樣 ????} ????adclen++; ??} }
請(qǐng)問(wèn)一下為什么程序每次會(huì)卡在while(adclen<12)這個(gè)地方導(dǎo)致程序死機(jī),IO口做了浮空輸入初始化
如果將采樣改為
????for(?i?=?0;?i?<?12;?i++?) ????{ ????????abcBuff[i]?=?ADC_ExcutSingleConver();?? ????}
不使用中斷的話是可以正常采樣的
熱門(mén)產(chǎn)品 :
CH592: RISC-V內(nèi)核BLE5.4無(wú)線MCU