请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R 我正在使用 MSP432 Launchpad (修订版1.0)进行一个项目、我想以44.1kHz 的频率对音频进行采样。 我已经配置好了 ADC、工作正常、但我的计时器有问题。
在我的计时器 ISR 中、我只需切换输出引脚以使用示波器进行分析。 中断重复发生、但不返回主 while (1)循环。 我不是清除标志还是应该清除的内容?
我的板在 VCORE1工作模式下以48MHz 运行。 我在下面添加了我的代码。 抱歉、如果有一些问题、这是我第一次尝试与 MSP432P401R 一起进行项目。
#include "msp.h" #define A0 BIT5 #define startConversion() ADC14->CTL0 |= ADC14_CTL0_SC void VCORE1(); void CLK_init(); void ADC_init(); void TIMER_init(); //注释 *@ 48MHz,per=20.83ns * void CLK_init() ;void ADC_titrt = t_tt;void CTL_t1;void T = t_t_tid_t_t_t_t&tr = tr;t_tid_tr = t_tr = t_t_t_tr;t_t&t_t_tr = t_t_t_t_t_ //在将时钟设置为48MHz 之前进入 VCORE1模式__delay_cycles (1000);//等待 VCORE 为时钟更改做好准备的延迟 clk_init ();//将时钟设置为48MHz ADC_init ();//初始化 ADC,等待计时器启动转换 timer_init (); NVIC_EnableIRQ (ADC14_IRQn); NVIC_EnableIRQ (TA0_0_IRQn); _startConversion (_ );// while (1); } void ADC14_IRQHandler (void) { value = ADC14->MEM[0]; startConversion (); } void TA0_0_IRQHandler (void) { P2->OUT ^= BIT7; } void VCORE1 () { while (PCM->CTL0 & CTL1_PCM_CTL0) ; while ( void CTLPM0_CTLPM0_CTL0_PCM_ += 0xPCM_CCM_DRM_);while (b_CTL0_CTLPM0_CTLPM_CTL0_CTLPM0_CTL0_PCM_+++++++)+= 0xPCM_CCM_CCM_ BUSY = 0xPCM_CTL0_CCM_++++++ //解锁 CS 寄存器 CS->CTL0=CS_CTL0_DCOEN | CS_CTL0_DCORSEL_5;//选择24MHz 时钟速度 CS->CTL1=CS_CTL1_INIT_3 | CS_CTL1_SELM_3;//使用 DCOCLK 作为 MCLK 的源,SMCLK = ~ CEL0 (CS + INIT_3);CS_CLK = CC_CLK + CEL0 (CS + CEL0) void)寄存器//将 ADC 引脚设置为输入 P5->SEL0 |= A0;//选择 ADC 作为端口功能 ADC14->CTL0=ADC14_CTL0_SHS_0|//使用 SC 位开始转换 ADC14_CTL0_SHP|//?? ADC14_CTL0_ON;//打开 ADC14->CTL1上的 ADC 模块=ADC14_CTL1_RES_14BIT;//设置14位分辨率 ADC14->IER0 =ADC14_IER0_IE0;//在 A0上完成转换时启用中断 ADC14->CTL0|=ADC14_CTL0_ENC;//启用转换(不启动任何) } void timer_init () { timer_A0->CCTL[0]=timer_A_CCTLN_CCIE;//启用 CC 中断 TIMER_A0->CTL=TIMER_A_CTL_tassel_2|//选择 SMCLK 作为计时器 TIMER_A_CTL_ID_3的源|//将时钟除以8 (这将为计时器时钟产生6MHz) TIMER_A_CTL_MC_1|//向上计时器 TIMER_A_CCR_L_0_6kHz ; /清除计时器计时器=4136kHz;/>40kHz = 6kHz;/>40kHz