工具与软件:
您好!
我将使用 msp430f6779A 控制器、并使用 emlib 和使用计量 GUI TI 工具生成的代码。 所有时钟初始化与生成的代码相同。 当我进行看门狗复位时、我的控制器不会通电。 我已经通过在所有初始化之前将引脚变为高电平进行测试、以测试代码是否卡在时钟初始化的 while 循环中。 有时控制器通电但10位 ADC (这种情况是在我将时钟切换到 MCLK 时、ADC 10为 ACLK、但 ADC 10位开始工作时)和24位 Σ-Δ ADC 不起作用、但如果我给上电复位、所有这些问题都会得到解决。 请提供帮助。
我附加用于时钟初始化(32.7698kHz 晶体上没有外部电容器)和10位 ADC 初始化的代码。
时钟初始化:-
mclkFreq = 25165824;
static void hal_system_ClockInit(uint32_t mclkFreq) { PMM_setVCore(PMM_CORE_LEVEL_3); UCS_turnOnLFXT1(UCS_XT1_DRIVE_0, UCS_XCAP_0); UCS_initClockSignal( UCS_FLLREF, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1); UCS_initClockSignal( UCS_ACLK, UCS_XT1CLK_SELECT, UCS_CLOCK_DIVIDER_1); UCS_initFLLSettle( mclkFreq/1000, mclkFreq/32768); }
ADC 10 初始化:-
ADC10_A_init(ADC10_A_BASE, ADC10_A_SAMPLEHOLDSOURCE_SC, ADC10_A_CLOCKSOURCE_MCLK, ADC10_A_CLOCKDIVIDER_2); ADC10_A_enable(ADC10_A_BASE); /* * Base Address for the ADC10_A Module * Sample/hold for 16 clock cycles * Enable Multiple Sampling */ ADC10_A_setupSamplingTimer(ADC10_A_BASE, ADC10_A_CYCLEHOLD_16_CYCLES, ADC10_A_MULTIPLESAMPLESENABLE); //Configure Memory Buffer /* * Base Address for the ADC10_A Module * Use input A3 * Use positive reference of AVcc * Use negative reference of AVss */ ADC10_A_setResolution(ADC10_A_BASE, ADC10_A_RESOLUTION_10BIT); ADC10_A_configureMemory(ADC10_A_BASE, ADC10_A_INPUT_A3, ADC10_A_VREFPOS_AVCC, ADC10_A_VREFNEG_AVSS);