各位帮忙我看看是哪里配置出问题了,一直没法输出,主函数调用
void USART1_Sendchar(u8 Data)
{
while(Uart_GetStatus(UARTCH1,UartTC)==RESET);//等待字符发送完成
Uart_SendData(UARTCH1,Data);
}
串口1配置如下
/***************************************************************************
* 函 数 名: usart_init
* 功能说明: 串口初始化函数
* 形 参:
* 返 回 值:
* 说 明:
***************************************************************************/
void usart_init( u32 buad)
{
stc_uart_config_t stcCfg;
stc_uart_baud_t stcBaud;
stc_uart_multimode_t stcMulti;
stc_gpio_config_t stcGpioCfg;
DDL_ZERO_STRUCT(stcGpioCfg);
DDL_ZERO_STRUCT(stcMulti);
DDL_ZERO_STRUCT(stcCfg);
DDL_ZERO_STRUCT(stcBaud);
//外设时钟配置
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);//GPIO时钟使能
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);//UART1外设模块时钟使能
//IO配置
stcGpioCfg.enDir = GpioDirOut;
Gpio_Init(GpioPortD,GpioPin0,&stcGpioCfg); //配置PD0 为UART1 TX
Gpio_SetAfMode(GpioPortD,GpioPin0,GpioAf3); //配置PD0 复用功能
stcGpioCfg.enDir = GpioDirIn;
Gpio_Init(GpioPortD,GpioPin1,&stcGpioCfg); //配置PD1 为UART1 RX
Gpio_SetAfMode(GpioPortD,GpioPin1,GpioAf3); //配置PD1 复用功能
//usart1配置
stcMulti.enMulti_mode = UartNormal;//正常工作模式
Uart_SetMultiMode(UARTCH1,&stcMulti);//多主机单独配置
stcCfg.enRunMode = UartMode3; //模式3
stcCfg.enStopBit = Uart1bit; //1位停止位
stcCfg.bTouchNvic =TRUE; //使能中断
Uart_SetMMDOrCk(UARTCH1,UartEven); //偶校验
Uart_Init(UARTCH1, &stcCfg); //串口初始化
Uart_SetClkDiv(UARTCH1,Uart8Or16Div);//采样分频,模式1/3选择16分频
//波特率配置
stcBaud.u32Pclk = Sysctrl_GetPClkFreq();
stcBaud.u32Baud=buad;
stcBaud.enRunMode=UartMode3;
Uart_CalScnt(UARTCH1,&stcBaud);
//串口中断使能
Uart_ClrStatus(UARTCH1,UartRC); ///<清接收请求
Uart_ClrStatus(UARTCH1,UartTC); ///<清发送请求
Uart_EnableIrq(UARTCH1,UartRxIrq); ///<使能串口接收中断
//Uart_EnableIrq(M0P_UART0,UartTxIrq); ///<使能串口接收中断
EnableNvic(UART1_IRQn, IrqLevel3, TRUE); ///<系统中断使能
}
/************************************************
函数:Uart1_IRQHandler
功能:
输出参数:
输入参数:
************************************************/
//UART1中断函数
void Uart1_IRQHandler(void)
{
if(Uart_GetStatus(UARTCH1, UartRC)) //UART1数据接收
{
Uart_ClrStatus(UARTCH1, UartRC); //清中断状态位
Uart_ReceiveData(UARTCH1); //接收数据字节
}
if(Uart_GetStatus(UARTCH1, UartTC)) //UART1数据发送
{
Uart_ClrStatus(UARTCH1, UartTC); //清中断状态位
}
} |