请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R 工具/软件:Code Composer Studio
我想创建一个程序、在 引脚5.6和2.4上为我提供 PWM 信号、我尝试执行此操作、但没有成功、因为我的代码无法正常工作。
在引脚2.4和5.6时、是否有人可以帮助我提供 P.W.M.的程序示例?
我的代码是:
/* DriverLib 包括*/ #include "driverlib.h" //标准包括*/ #include #include /* Timer_A PWM 配置参数*/ Timer_A_PWMConfig pwmConfig = { //uint_fast16_t 时钟源; Timer_A_CLOCKSOURCE_SMCLK、 //uint_fast16_t 时钟源分频器; Timer_A_CLOCKSOURCE_divider _1、 //uint_fast16_t timerPeriod; 1300、 //uint_fast16_t compareRegister; Timer_A_CAPTURECOMPARE 寄存器_1、 //uint_fast16_t compareOutputMode; Timer_A_OUTPUTMODE_RESET_SET、 //uint_fast16_t dutyCycle; 10 }; // Timer_A PWM 配置参数*/ Timer_A_PWMConfig pwmConfig2 = { //uint_fast16_t clockSource; Timer_A_CLOCKSOURCE_SMCLK、 //uint_fast16_t 时钟源分频器; Timer_A_CLOCKSOURCE_divider _1、 //uint_fast16_t timerPeriod; 1300、 //uint_fast16_t compareRegister; Timer_A_CAPTURECOMPARE 寄存器_1、 //uint_fast16_t compareOutputMode; Timer_A_OUTPUTMODE_RESET_SET、 //uint_fast16_t dutyCycle; 10 }; int main (void) { /*停止看门狗*/ MAP_WDT_A_HOLDTimer(); int a、b、c、directie、dir; /*将 MCLK 设置为128Khz 的 REFO 以实现 LF 模式将 SMCLK 设置为64Khz */ MAP_CS_setReferenceOscillatorFrequency (CS_REFO_128KHZ); MAP_CS_initClockSignal (CS_MCLK、CS_REFOCLK_SELECT、CS_CLOCK_DELUGER_1); MAP_CS_initClockSignal (CS_SMCLK、CS_REFOCLK_SELECT、CS_CLOCK_DEVIDER_2); MAP_PCM_setPowerState (PCM_AM_LF_VCORE0); // PWM -引脚- 5.6 - TIMER_A2_BASE // PWM -引脚- 2.4 - TIMER_A0_BASE //将 GPIO2.4配置为 PWM 的外设输出 MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P5、GPIO_PIN6、GPIO_PRIMARY_MODULE_Function); MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN4、GPIO_PRIMARY_MODULE_Function); //将 Timer_A 配置为具有大约20ms 的周期 MAP_Timer_A_generatePWM (TIMER_A2_base、&pwmConfig); MAP_Timer_A_generatePWM (TIMER_A2_base、&pwmConfig2); b = 40; C = 30; directie = 0; dir = 0; while (1) { MAP_Timer_A_generatePWM (TIMER_A2_base、&pwmConfig); MAP_Timer_A_generatePWM (TIMER_A2_base、&pwmConfig2); //-------------------------------------------------------- 如果(dir == 2) { C = c - 10; pwmConfig2.dutyCycle = c; if (c = 40){ Dir = 0; } for (a=620;a>0;a--); } 其他 { pwmConfig2.dutyCycle = c; C = c + 10; if (c = 100){ Dir = 2; } for (a=620;a>0;a--); } //-------------------------------------------------------- if (directie = 1) { b = b - 10; pwmConfig.dutyCycle = b; if (b = 40){ directtie = 0; } for (a=620;a>0;a--); } 其他 { pwmConfig.dutyCycle = b; b = b + 10; if (b = 170){ directtie = 1; } for (a=620;a>0;a--); } //----------------------------} }