马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
需要完成文件的联系QQ:3386208645/*********************************************/ /**本样例主要涉及串口主从机数据收发功能 ******/ /* 说明: **********/ /* 配置P35、P36为UART收发端口 **********/ /* 配置波特率38400bps **********/ /* 配置BaseTime1自动重载周期 **********/ /* 使能UART收发功能 **********/ /********************************************/
#include "uart.h" #include "bt.h" #include "gpio.h"
#define T1_PORT (3) #define T1_PIN (3)
uint8_t u8TxData[10] ={0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00}; uint32_t u32RxData[10]; uint8_t u8TxCnt=0,u8RxCnt=0; void SysTick_Handler(void) { static uint8_t u8val = 0; Gpio_SetIO(T1_PORT, T1_PIN, u8val); u8val = !u8val; } void TxIntCallback(void) {
Uart_SendData(UARTCH1, u8TxData[u8TxCnt]); u8TxCnt++; if(u8TxCnt>10) u8TxCnt=0; } void RxIntCallback(void) { u32RxData[u8RxCnt++]=Uart_ReceiveData(UARTCH1); if(u8RxCnt>9) u8RxCnt=0; } void ErrIntCallback(void) { } int32_t main(void) { uint16_t timer,i=0; uint32_t pclk; stc_clk_config_t stcCfg; stc_uart_config_t stcConfig; stc_uart_irq_cb_t stcUartIrqCb; stc_uart_multimode_t stcMulti; stc_uart_baud_config_t stcBaud; stc_bt_config_t stcBtConfig;
en_uart_mmdorck_t enTb8;
DDL_ZERO_STRUCT(stcConfig); DDL_ZERO_STRUCT(stcUartIrqCb); DDL_ZERO_STRUCT(stcMulti); DDL_ZERO_STRUCT(stcBaud); DDL_ZERO_STRUCT(stcBtConfig); stcCfg.enClkSrc = ClkXTH; stcCfg.enHClkDiv = ClkDiv1; stcCfg.enPClkDiv = ClkDiv1; Clk_Init(&stcCfg); Gpio_InitIOExt(3,5,GpioDirOut,TRUE,FALSE,FALSE,FALSE); Gpio_InitIOExt(3,6,GpioDirOut,TRUE,FALSE,FALSE,FALSE); Gpio_SetIO(3,5,1); Gpio_SetIO(3,6,1); Gpio_SetFunc_UART1TX_P35(); Gpio_SetFunc_UART1RX_P36();
Clk_SetPeripheralGate(ClkPeripheralBt,TRUE); Clk_SetPeripheralGate(ClkPeripheralUart1,TRUE);
stcUartIrqCb.pfnRxIrqCb = RxIntCallback; stcUartIrqCb.pfnTxIrqCb = TxIntCallback; stcUartIrqCb.pfnRxErrIrqCb = ErrIntCallback; stcConfig.pstcIrqCb = &stcUartIrqCb; stcConfig.bTouchNvic = TRUE; stcConfig.enRunMode = UartMode3; stcMulti.enMulti_mode = UartMulti; enTb8 = AddrOrOdd; Uart_SetMMDOrCk(UARTCH1,enTb8); stcConfig.pstcMultiMode = &stcMulti; stcBaud.u8Dbaud = 0u; stcBaud.u32Baud = 38400u; stcBaud.u8Mode =UartMode3; pclk =Clk_GetPClkFreq(); timer=Uart_SetBaudRate(UARTCH1,pclk,&stcBaud); stcBtConfig.enMD = BtMode2; stcBtConfig.enCT = BtTimer; Bt_Init(TIM1, &stcBtConfig); Bt_ARRSet(TIM1,timer); Bt_Cnt16Set(TIM1,timer); Bt_Run(TIM1); Uart_Init(UARTCH1, &stcConfig); Uart_ClrStatus(UARTCH1,UartTxEmpty); Uart_EnableFunc(UARTCH1,UartRx); Uart_SendData(UARTCH1,0xC0); while(0 == Uart_GetStatus(UARTCH1,UartTxEmpty)); enTb8 = DataOrEven; Uart_SetMMDOrCk(UARTCH1,enTb8); Uart_ClrStatus(UARTCH1,UartTxEmpty); while(i<10) { Uart_SendData(UARTCH1,u8TxData); while(0 == Uart_GetStatus(UARTCH1,UartTxEmpty)); Uart_ClrStatus(UARTCH1,UartTxEmpty); i++; } while(1); }
/****************************************************************************** *EOF (not truncated) ******************************************************************************/
|