| ☆ HC32F003 系列是一款 Low Pin Count、宽电压工作范围的 MCU。集成 12 位 1M sps 高精度SARADC 以及集成了比较器,多路 UART,SPI,I2C 等丰富的通讯外设,具有高整合度、高抗干扰、高可靠性的特点。HC32F003 内核采用 Cortex-M0+ 内核,配合成熟的 Keil μVision 调试开发软件,支持 C 语言及汇编语言,汇编指令。 ☆适用领域:小家电,充电器,重合闸,遥控器,电子烟,燃气报警器,数显表,温控器,记录仪等行业。☆ 华大MCU单片机资料分享连接 HC32F003 HC32F005 HC32L110 HC32L136 HC32F030 HC32M140 HC32F146 HC32L150 HC32L156
 样例使用说明
 /****************************************************************************// \file main.c
 **
 ** A detailed description is available at
 ** @link Sample Group Some description @endlink
 **
 ** - 2017-05-17 1.0 cj First version for Device Driver Library of Module.
 **
 ******************************************************************************/
 /****************************************************************************** Include files******************************************************************************/
 #include “ddl.h”
 #include “uart.h”
 #include “bt.h”
 #include “lpm.h”
 #include “gpio.h”
 
 /****************************************************************************** Local pre-processor symbols/macros (’#define’)******************************************************************************/
 
 /****************************************************************************** Global variable definitions (declared in header file with ‘extern’)******************************************************************************/
 
 /****************************************************************************** Local type definitions (‘typedef’)******************************************************************************/
 
 /****************************************************************************** Local function prototypes (‘static’)******************************************************************************/
 
 /****************************************************************************** Local variable definitions (‘static’) *******************************************************************************/
 
 /****************************************************************************** Local pre-processor symbols/macros (’#define’)*/
 #define T1_PORT (3)
 #define T1_PIN (3)
 /
Function implementation - global (‘extern’) and local (‘static’)****************************************************************************/
 /
 
 
 ** \brief Main function of project**
 ** \return uint32_t return value, if needed
 **
 ** This sample
 **
 ******************************************************************************/
 //uint8_t u8TxData[10] = {0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00};//“HUADA MCU!”;
 uint8_t u8TxData[10] = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
 uint32_t u32RxData[10];
 uint8_t u8TxCnt=0,u8RxCnt=0;
 void TxIntCallback(void)if(u8TxCnt<10){    M0P_UART1->SBUF = u32RxData[u8TxCnt];    u8TxCnt++;}else //if(u8TxCnt>10){    u8TxCnt = 0;    Uart_ClrStatus(UARTCH1,UartTxEmpty);       Uart_DisableIrq(UARTCH1,UartTxIrq);    Uart_EnableIrq(UARTCH1,UartRxIrq);}{
 }void RxIntCallback(void)
 {
 u32RxData[u8RxCnt]=Uart_ReceiveData(UARTCH1);
 u8RxCnt++;
 if(u8RxCnt>=10)
 {
 Uart_DisableIrq(UARTCH1,UartRxIrq);
 Uart_EnableIrq(UARTCH1,UartTxIrq);
 u8RxCnt = 0;
 M0P_UART1->SBUF = u32RxData[0];
 u8TxCnt = 1;
 }
 }void ErrIntCallback(void)
 {
 }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);DDL_ZERO_STRUCT(stcLpmCfg);stcLpmCfg.enSLEEPDEEP = SlpDpDisable;//时钟部分配置stcCfg.enClkSrc = ClkXTH;stcCfg.enHClkDiv = ClkDiv1;stcCfg.enPClkDiv = ClkDiv1;Clk_Init(&stcCfg);Gpio_InitIO(T1_PORT,T1_PIN,GpioDirIn); Gpio_InitIO(0,3,GpioDirOut);Gpio_SetIO(0,3,1);Gpio_InitIOExt(3,5,GpioDirOut,TRUE,FALSE,FALSE,FALSE);   Gpio_InitIOExt(3,6,GpioDirOut,TRUE,FALSE,FALSE,FALSE); //通道端口配置Gpio_SetFunc_UART1TX_P35();Gpio_SetFunc_UART1RX_P36();//外设时钟使能Clk_SetPeripheralGate(ClkPeripheralBt,TRUE);//模式0/2可以不使能Clk_SetPeripheralGate(ClkPeripheralUart1,TRUE);stcUartIrqCb.pfnRxIrqCb = RxIntCallback;stcUartIrqCb.pfnTxIrqCb = TxIntCallback;stcUartIrqCb.pfnRxErrIrqCb = ErrIntCallback;stcConfig.pstcIrqCb = &stcUartIrqCb;stcConfig.bTouchNvic = TRUE;stcConfig.enRunMode = UartMode1;//测试项,更改此处来转换4种模式测试stcMulti.enMulti_mode = UartNormal;//测试项,更改此处来转换多主机模式,mode2/3才有多主机模式enTb8 = DataOrEven;Uart_SetMMDOrCk(UARTCH1,enTb8);stcConfig.pstcMultiMode = &stcMulti;int32_t main(void)
 {
 uint16_t timer;
 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;
 stc_lpm_config_t stcLpmCfg;
 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
 #if 1stcBtConfig.enMD = BtMode2;stcBtConfig.enCT = BtTimer;Bt_Init(TIM1, &stcBtConfig);//调用basetimer1设置函数产生波特率Bt_ARRSet(TIM1,timer);Bt_Cnt16Set(TIM1,timer);Bt_Run(TIM1);stcBaud.bDbaud = 0u;//双倍波特率功能
 stcBaud.u32Baud = 2400u;//更新波特率位置
 stcBaud.u8Mode = UartMode1; //计算波特率需要模式参数
 pclk = Clk_GetPClkFreq();
 timer=Uart_SetBaudRate(UARTCH1,pclk,&stcBaud);
 #endifUart_Init(UARTCH1, &stcConfig);
 Uart_EnableIrq(UARTCH1,UartRxIrq);
 Uart_ClrStatus(UARTCH1,UartRxFull);
 Uart_EnableFunc(UARTCH1,UartRx);
 #if 0 //休眠模式测试
 while(1 == Gpio_GetIO(T1_PORT,T1_PIN));//注意:如果用户修改进入深度休眠的话,此处不能屏蔽
 Lpm_Config(&stcLpmCfg);
 Lpm_GotoLpmMode();
 Gpio_SetIO(0,3,0);
 #endif
 while(1);
 }
 /****************************************************************************** 作者:虹芯侠客1EOF (not truncated)******************************************************************************/
 
 来源:CSDN
 原文:https://blog.csdn.net/jetson024/article/details/84619088
 版权声明:本文为博主原创**,转载请附上博文链接!
 
 
 
 |