打印
[综合信息]

华大HC32F003☆ ---UART例程分享(部分一)

[复制链接]
1284|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LED2013|  楼主 | 2020-8-7 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

☆ 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

                                样例使用说明
  • 1

/****************************************************************************/
/ \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);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

}
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)
{

}
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;

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

#if 1
stcBaud.bDbaud = 0u;//双倍波特率功能
stcBaud.u32Baud = 2400u;//更新波特率位置
stcBaud.u8Mode = UartMode1; //计算波特率需要模式参数
pclk = Clk_GetPClkFreq();
timer=Uart_SetBaudRate(UARTCH1,pclk,&stcBaud);

stcBtConfig.enMD = BtMode2;stcBtConfig.enCT = BtTimer;Bt_Init(TIM1, &stcBtConfig);//调用basetimer1设置函数产生波特率Bt_ARRSet(TIM1,timer);Bt_Cnt16Set(TIM1,timer);Bt_Run(TIM1);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

#endif
Uart_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);
}

/******************************************************************************

  • EOF (not truncated)
    ******************************************************************************/
作者:虹芯侠客1
来源:CSDN
原文:https://blog.csdn.net/jetson024/article/details/84619088
版权声明:本文为博主原创**,转载请附上博文链接!


使用特权

评论回复
沙发
八层楼| | 2020-9-4 13:16 | 只看该作者
了解了 谢谢楼主

使用特权

评论回复
板凳
观海| | 2020-9-4 13:16 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
guanjiaer| | 2020-9-4 13:17 | 只看该作者
额 排版不行啊

使用特权

评论回复
5
heimaojingzhang| | 2020-9-4 13:18 | 只看该作者
看的我头疼

使用特权

评论回复
6
keaibukelian| | 2020-9-4 13:21 | 只看该作者
没看太明白

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2377

主题

29385

帖子

24

粉丝