打印
[方案相关]

华大HC32F003.UART例程分享

[复制链接]
590|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
HC32F003 系列是一款 Low Pin Count、宽电压工作范围的 MCU。集成 12 位 1M sps 高精度SARADC 以及集成了比较器,多路 UART,SPI,I2C 等丰富的通讯外设,具有高整合度、高抗干扰、高可靠性的特点。HC32F003 内核采用 Cortex-M0+ 内核,配合成熟的 Keil μVision 调试开发软件,支持 C 语言及汇编语言,汇编指令。

使用特权

评论回复
沙发
自动化陈稳|  楼主 | 2020-10-27 23:40 | 只看该作者
适用领域:小家电,充电器,重合闸,遥控器,电子烟,燃气报警器,数显表,温控器,记录仪等行业

使用特权

评论回复
板凳
自动化陈稳|  楼主 | 2020-10-27 23:41 | 只看该作者
华大MCU单片机资料分享连接
HC32F003 HC32F005 HC32L110 HC32L136 HC32F030 HC32M140 HC32F146 HC32L150 HC32L156
作者:虹芯侠客1
来源:CSDN
原文:https://blog.csdn.net/jetson024/article/details/84619088
版权声明:本文为博主原创**,转载请附上博文链接!

使用特权

评论回复
地板
自动化陈稳|  楼主 | 2020-10-27 23:42 | 只看该作者
样例使用说明
/****************************************************************************/
/ \file main.c
**
** A detailed description is available at
** [url=home.php?mod=space&uid=48136]@link[/url] 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’)
****************************************************************************/
/

使用特权

评论回复
5
自动化陈稳|  楼主 | 2020-10-27 23:43 | 只看该作者
** \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)
{

使用特权

评论回复
6
自动化陈稳|  楼主 | 2020-10-27 23:44 | 只看该作者
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

使用特权

评论回复
7
自动化陈稳|  楼主 | 2020-10-27 23:44 | 只看该作者
}
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;

使用特权

评论回复
8
自动化陈稳|  楼主 | 2020-10-27 23:45 | 只看该作者
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;

使用特权

评论回复
9
BettyBerry| | 2020-10-27 23:46 | 只看该作者
感谢分享 能问一下F003 的具体参数吗

使用特权

评论回复
10
自动化陈稳|  楼主 | 2020-10-27 23:55 | 只看该作者
#if 1
stcBaud.bDbaud = 0u;//双倍波特率功能
stcBaud.u32Baud = 2400u;//更新波特率位置
stcBaud.u8Mode = UartMode1; //计算波特率需要模式参数
pclk = Clk_GetPClkFreq();
timer=Uart_SetBaudRate(UARTCH1,pclk,&stcBaud);

使用特权

评论回复
11
自动化陈稳|  楼主 | 2020-10-27 23:56 | 只看该作者
stcBtConfig.enMD = BtMode2;
stcBtConfig.enCT = BtTimer;
Bt_Init(TIM1, &stcBtConfig);//调用basetimer1设置函数产生波特率
Bt_ARRSet(TIM1,timer);
Bt_Cnt16Set(TIM1,timer);
Bt_Run(TIM1);

使用特权

评论回复
12
自动化陈稳|  楼主 | 2020-10-27 23:57 | 只看该作者
#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)
******************************************************************************/

使用特权

评论回复
13
yanruiqi| | 2020-10-28 21:04 | 只看该作者
提醒:HC32F0 这片子的UART  不支持 7位数据位!

使用特权

评论回复
14
凯复Kane| | 2020-10-28 23:04 | 只看该作者
谢谢楼上提醒 我还没认真看呢 不过F003 是个不错的板子

使用特权

评论回复
15
BettyBerry| | 2020-10-28 23:29 | 只看该作者
感谢分享 FC32F003 UART不错的板子

使用特权

评论回复
16
慢动作| | 2020-10-31 22:48 | 只看该作者
yanruiqi 发表于 2020-10-28 21:04
提醒:HC32F0 这片子的UART  不支持 7位数据位!

为什么?

使用特权

评论回复
17
慢动作| | 2020-10-31 22:48 | 只看该作者
好吧。手册说不能,就是不能,没有理由的。

使用特权

评论回复
18
慢动作| | 2020-10-31 22:49 | 只看该作者
F003 确实是个不错的板子

使用特权

评论回复
19
rickluo| | 2020-11-1 10:19 | 只看该作者
感谢楼主分享!



使用特权

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

本版积分规则

72

主题

1182

帖子

1

粉丝