标题:
分享华大CORTEX M0+ 低功耗ARM机串口主机数据发送示例程序
[打印本页]
作者:
deepskin1213
时间:
2018-2-2 15:17
标题:
分享华大CORTEX M0+ 低功耗ARM机串口主机数据发送示例程序
需要完整文件的请加
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)
******************************************************************************/
作者:
deepskin1213
时间:
2018-11-26 09:20
技术贴顶一下
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0