请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R 因此、我有用于为电机创建2个 PWM 输出的代码、然后我有用于3个(将是7个) ADC 引脚的代码、这些引脚用于声纳传感器。 我已经为 ADC 设置了用于中断的比较器。 仅当我测试这些时、它们就能正常工作... PWM 可以通过按钮中断进行更改、然后运行电机。 ADC 引脚显示值并相应地通过 ISR 中断以点亮 LED。 现在我尝试将这两者结合起来、我希望 ADC ISR 能够更改 PWM 占空比并输出新值、 但是、当我测试代码时、ADC ISR 对 PWM 完全没有影响、它会更改我可以通过 CCS 界面上的"Expressions"看到的占空比值、 但物理输出不会改变、我想知道我为什么需要做什么。 以下是我的代码:
/* DriverLib 包括*/ #include /*标准包括*/ #include #include /* for usleep()*//#include //#include /* TI-RTOS 头文件*/ #include //#include /*电路板头文件*/ //#include "Board.h" //*静态*/ uint16_t resultsBuffer[3];//缓冲器以保存每个声纳传感器的 ADC 读数 // DLUG 部分:2.6.2.25 |注册 ADC 中断的中断处理程序。 // void ADC14_registerInterrupt (void (* ADC14_IRQHandler)(void)); void PWMConfigure (void);//设置 PWM void ADCConfigure (void);//设置 ADC void InitDCO (void);//更改 DCO Sonarive (void)的运行频率; SonarTwo (void); void (void (void );void (void);void (void);void (void);void (void (void);void (void) void SonarSix (void); void SonarSeven (void); void 应急停止(void); volatile uint32_t ii; /******** 右侧电机的 Timer_A PWM 配置参数***** *按住命令并单击 Timer_A_PWMConfig 以查看 pwmConfigR 是 typedef 结构_Timer_A_PWMConfig *S1用于右侧电机*/ Timer_A_PWMConfig pwmConfigR = { Timer_A_CLOCKSOURCE_SMCLK、// PWM 运行时钟源 Timer_A_CLOCKSOURCE_DEVIDER_1、//时钟源 SMCLK 的分频器 4800、//周期 Timer_A_CAPTURECOMPARE 寄存器3、 Timer_A_OUTPUTMODE_RESET_SET、 4200//启动时占空比为5[V](2.5[V])的50%、因此电机不会移动。 }; /******** 左侧电机的 Timer_A PWM 配置参数***** *S2用于左侧电机*/ Timer_A_PWMConfig pwmConfigL = { Timer_A_CLOCKSOURCE_SMCLK、 Timer_A_CLOCKSOURCE_divider _1、 4800、 Timer_A_CAPTURECOMPARE 寄存器_4、//使 P2.7正常工作是因为 TA0.4 Timer_A_OUTPUTMODE_RESET_SET、 4200 }; /********* 两个电机的结束定时器_A_PWMConfig *电机以方向和速度为一个输入。 51-100%占空比是正向速度(5[V]最大值、 *更高占空比是更快的正向速度)、0-49%占空比是反向速度(0[V]最大值、较低占空 比*周期是更快的反向速度)、50%是无运动(2.5[V])。 * *我们希望使用大约一半的每个方向占空比、因为我们不想快速运行。 每个方向 *具有2400级速度。 每种模式的一半是1、200级速度。 正向可以具有 * 2、401-4、800的占空比、而反向可以具有0 - 2、399的占空比。 我们将使用前向:2、401-3、600和 *后向:1、200 - 2、399 */ ********* 启动 main******** / int main (void) { /*停止 WDT */ MAP_WDT_A_HOLDTimer(); PWMConfigure();//设置 PWM ADCConfigure();//设置 ADC MAP_Interrupt_enableSlepOnIsrExit(); /*正在休眠*/ while (1) { //SonarThree();//当物体在1-2英尺之间时,右侧绿�