This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件: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--); } //----------------------------} }
我解决了这个问题、我的代码是:
/********* * * MSP432P401R * MSP432P401R * ------------ * /|\| | * || | * -|RST P2.4 |-->底部的伺服电机输出 PWM * | P5.6 |-->顶部伺服电机的输出 PWM * | | * (小部分 /* 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 //将 PIN 配置为 PWM 的外设输出 MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN4、GPIO_PRIMARY_MODULE_Function); MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P5、GPIO_PIN6、GPIO_PRIMARY_MODULE_Function); b = 40; C = 30; directie = 0; dir = 0; while (1) { //将 Timer_A 配置为具有大约20ms 的周期 MAP_Timer_A_generatePWM (TIMER_A2_base、&pwmConfig); MAP_Timer_A_generatePWM (TIMER_A0_BASE、&pwmConfig2); //\/--- 引脚-5.6---- //// 如果(dir == 2) { C = c - 10; pwmConfig.dutyCycle = c; if (c = 30){ Dir = 0; } for (a=620;a>0;a--); } 其他 { pwmConfig.dutyCycle = c; C = c + 10; if (c = 100){ Dir = 2; } for (a=620;a>0;a--); } //\/--- 引脚-2.4----- //// if (directie = 1) { b = b - 40; pwmConfig2.dutyCycle = b; if (b = 40){ directtie = 0; } for (a=620;a>0;a--); } 其他 { pwmConfig2.dutyCycle = b; b = b + 40; if (b = 160){ directtie = 1; } for (a=620;a>0;a--); } //-------------------------------------------------------- // } }