void
__error__(char *pcFilename, uint32_t ui32Line)
{
}
#endif
//*****************************************************************************
//
// UART0中断处理程序
//
//*****************************************************************************
void
UART0IntHandler(void)
{
uint32_t ui32Status;
//
// 获取中断状态
//
ui32Status = UARTIntStatus(UART0_BASE, true);
//
// 清除中断
//
UARTIntClear(UART0_BASE, ui32Status);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x1<<0);//B2管脚置0 对应RESETAB
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_3, 0x1<<0);//B3管脚置0 对应RESETCD
PWMGenDisable(PWM1_BASE, PWM_GEN_2 );//禁能PWM发生器
//禁能PWM输出状态
PWMOutputState(PWM1_BASE, PWM_OUT_4_BIT| PWM_OUT_5_BIT, false);
//
j=UARTCharGetNonBlocking(UART0_BASE);//接收串口数据
while(UARTCharsAvail(UART0_BASE))
{
//
// 读取UART中的字符并发送
//
UARTCharPutNonBlocking(UART0_BASE,
UARTCharGetNonBlocking(UART0_BASE));
}
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_4, j);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_5, j);
//使能PWM输出状态
PWMOutputState(PWM1_BASE, PWM_OUT_4_BIT| PWM_OUT_5_BIT, true);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x1<<2);//H2管脚置高 对应RESETAB
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_3, 0x1<<3);//H3管脚置高 对应RESETCD
//
// 使能PWM发生器
PWMGenEnable(PWM1_BASE, PWM_GEN_2);
}
//*****************************************************************************
//
// 向UART发送字符.
//
//*****************************************************************************
void
UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)
{
//
// 有字符需要发送就循环
//
while(ui32Count--)
{
//
// 向UART写入字符
//
UARTCharPutNonBlocking(UART0_BASE, *pui8Buffer++);
}
}
//*****************************************************************************
//
//PWM初始化
int
PWMInit (void)
{
//
// PWM不分频
//
SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_2|GPIO_PIN_3);//配置2,3管脚为输出
//配置PF0,PF1分别为M1PWM4,M1PWM5
GPIOPinConfigure(GPIO_PF0_M1PWM4);
GPIOPinConfigure(GPIO_PF1_M1PWM5);
// 配置PF0,PF1为PWM的输出管脚
GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_1);
//
// Configure the PWM1 to count down without synchronization.
//配置GEN2递减计数模式不同步模式
PWMGenConfigure(PWM1_BASE, PWM_GEN_2,
PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
//设置PWM周期
PWMGenPeriodSet(PWM1_BASE, PWM_GEN_2,100);
//设置PWM占空比
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_4, 1);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_5, 1);
//使能PWM输出状态
PWMOutputState(PWM1_BASE, PWM_OUT_4_BIT| PWM_OUT_5_BIT, true);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x1<<2);//H2管脚置高 对应RESETAB
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_3, 0x1<<3);//H3管脚置高 对应RESETCD
//
// 使能PWM发生器
PWMGenEnable(PWM1_BASE, PWM_GEN_2);
return(0);
}
//********************************************************************
//UART0初始化
int UART0Int(void)
{
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
//
// Configure the UART for 115,200, 8-N-1 operation.
//
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
//
// 提示输入数据
//
UARTSend((uint8_t *)"Enter text: ", 12);
return(0);
}
//
//*****************************************************************************
//主函数
int
main(void)
{
//
//设置时钟周期为16MHZ
//
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
//
//使能用到的外设
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能B端口,PB2、PB3分别对应RESET_AB,RESET_CD
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1); //使能M1PWM外设
//
// Enable processor interrupts.
PWMInit();
UART0Int();
//
IntMasterEnable();
//
// 使能UART0中断
//
IntEnable(INT_UART0);
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
// 循环等待UART0中断
//
while(1)
{
}
}
想用UART接收的数据调节占空比,没成功感觉 j=UARTCharGetNonBlocking(UART0_BASE);//接收串口数据
有问题但是不知道怎么改正 |