求大神帮我看看,调了一个晚上,,串口和pwm毫无变化。。。
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "driverlib/uart.h"
#include "driverlib/pwm.h"
#include "driverlib/rom.h"
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
uint16_t cThisChar;
int right,left;
void
Inituart(void)
{
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
ROM_UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
ROM_UARTEnable(UART0_BASE);
ROM_IntMasterEnable();
ROM_UARTIntStatus(UART0_BASE, true);
ROM_UARTFIFODisable(UART0_BASE);
ROM_IntEnable(INT_UART0);
ROM_UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
}
int
PWMInit (void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB4_M0PWM2);
GPIOPinConfigure(GPIO_PB5_M0PWM3);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4|GPIO_PIN_5);
PWMGenConfigure(PWM0_BASE, PWM_GEN_1,
PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1,100);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 100);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 100);
PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT| PWM_OUT_3_BIT, true);
PWMGenEnable(PWM0_BASE, PWM_GEN_1);
return(0);
}
int
cthischarconfigue()
{
if( cThisChar=='e')
{
right=100;
left=100;
}
else if(cThisChar=='d')
{
left=0;
right=0;
}
else if(cThisChar=='f')
{
if(left>=right)
{
if(left<=50)
{
do
{
left++;
right--;
}
while((left-right>=25)&&(right==0));
if(left-right<20)
{
right=20;
left=20;
do
{
left++;
right--;
}
while(left-right>=25);
}
}
else
{
left=50;
right=50;
do
{
left++;
right--;
}
while(left-right>=25);
}
}
}
else if(cThisChar=='s')
{
if(right>=left)
{
if(right<=50)
{
do
{
left--;
right++;
}
while((right-left>=25)&&(left==0));
if(right-left<20)
{
left=20;
right=20;
do
{
right++;
left--;
}
while(right-left>=25);
}
}
else
{
right=50;
left=50;
do
{
left--;
right++;
}
while(left-right>=25);
}
}
}
return 0;
}
int
UART0IntHandler(void)
{
uint32_t ui32Status;
ui32Status = ROM_UARTIntStatus(UART2_BASE, true);
ROM_UARTIntClear(UART2_BASE, ui32Status);
ROM_UARTIntDisable(UART0_BASE, UART_INT_RX | UART_INT_RT);
PWMGenDisable(PWM0_BASE, PWM_GEN_1 );
PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT| PWM_OUT_3_BIT, false);
while(true!=ROM_UARTCharsAvail(UART0_BASE));
cThisChar=UARTCharGet(UART0_BASE);
UARTCharPut(UART0_BASE, cThisChar);
cthischarconfigue();
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, right);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, left);
PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT| PWM_OUT_3_BIT, true);
PWMGenEnable(PWM0_BASE, PWM_GEN_1);
ROM_UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
return 0;
}
int
main(void)
{
ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
Inituart();
PWMInit ();
while(1);
}

