☆ 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)
{ }
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);#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
版权声明:本文为博主原创**,转载请附上博文链接!
|