华大 HC32L30E8PA 低功耗串口设置

编程入门 行业动态 更新时间:2024-10-10 08:18:59

华大 HC32L30E8PA  低功耗<a href=https://www.elefans.com/category/jswz/34/1769224.html style=串口设置"/>

华大 HC32L30E8PA 低功耗串口设置

初玩华大芯片开发

我是把低功耗串口当普通串口使用.

记录下串口设置以备以后忽然忘记
华大芯片库开发还是和STM32有些不同,串口设置也有些不同
官方给的例程相对简单.
我习惯STM32和STM8设置,校验位为:无校验位

华大芯片 库,模式3只能设置奇偶校验,串口助手设置无校验,数据出差,让我折腾了两天.

我们开发大多数都是习惯性的无校验位.

华大芯片设置成模式1 ,把设置校验位代码//注释掉就可以了.


#define lPUART1_REC_LEN  			200  	//定义USART1最大接收字节数
u8  lPUART1_RX_BUF[lPUART1_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符 
u16 lPUART1_RX_STA=0;         		//接收状态标记	
u16 u16Scnt;//波特率设置//串口管脚初始化
void Lpuart_PortInit(void)
{stc_gpio_config_t stcGpioCfg;	DDL_ZERO_STRUCT(stcGpioCfg);stcGpioCfg.enDir =  GpioDirOut;//端口初始化Gpio_Init(GpioPortA,GpioPin0,&stcGpioCfg);//TXGpio_SetAfMode(GpioPortA,GpioPin0,GpioAf2);stcGpioCfg.enDir =  GpioDirIn;//stcGpioCfg.enPuPd = GpioPu;Gpio_Init(GpioPortA,GpioPin1,&stcGpioCfg);//RXGpio_SetAfMode(GpioPortA,GpioPin1,GpioAf2);
}void Lpuart_Init(void)
{// stc_lpuart_sclk_sel_t stcSclk;stc_lpuart_config_t  stcConfig;//stc_lpuart_irq_cb_t stcLPUartIrqCb;//stc_lpuart_multimode_t stcMulti;//stc_lpuart_baud_t stcBaud;//DDL_ZERO_STRUCT(stcConfig);//DDL_ZERO_STRUCT(stcLPUartIrqCb);//DDL_ZERO_STRUCT(stcMulti);//DDL_ZERO_STRUCT(stcBaud);////DDL_ZERO_STRUCT(stcSclk);Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);//外设模式时钟使能Sysctrl_SetPeripheralGate(SysctrlPeripheralLpUart1,TRUE);Lpuart_PortInit();//管脚初始化stcLPUartIrqCb.pfnRxIrqCb   = RxIntCallback;//中断服务函数入口地址stcLPUartIrqCb.pfnTxIrqCb   = NULL;stcLPUartIrqCb.pfnRxFEIrqCb = NULL;stcLPUartIrqCb.pfnPEIrqCb   = NULL;stcLPUartIrqCb.pfnCtsIrqCb  = NULL;stcConfig.pstcIrqCb = &stcLPUartIrqCb;stcConfig.bTouchNvic = TRUE;if(TRUE == stcConfig.bTouchNvic){EnableNvic(LPUART1_IRQn,IrqLevel3,TRUE);}stcConfig.enStopBit = LPUart1bit;//停止位/stcConfig.enRunMode = LPUartMode1;//模式1stcMulti.enMulti_mode = LPUartNormal;//正常模式LPUart_SetMultiMode(LPUART1,&stcMulti);//多机模式设置////LPUart_SetMMDOrCk(LPUART1,LPUartEven);//偶校验LPUart_Init(LPUART1, &stcConfig);//串口初始化LPUart_SetClkDiv(LPUART1,LPUart8Or16Div);//采样分频stcBaud.u32Sclk = Sysctrl_GetPClkFreq();stcBaud.enRunMode = LPUartMode3;stcBaud.u32Baud = 9600;u16Scnt = LPUart_CalScnt(LPUART1,&stcBaud);//波特率计算LPUart_SetBaud(LPUART1,u16Scnt);//波特率值设置LPUart_ClrStatus(LPUART1,LPUartRC);//清 接收中断请求LPUart_EnableIrq(LPUART1,LPUartRxIrq);//使能接收中断LPUart_EnableFunc(LPUART1,LPUartRx);//使能数据收发
}//接收中断
void RxIntCallback(void)
{lPUART1_RX_BUF[lPUART1_RX_STA]=LPUart_ReceiveData(LPUART1);//读数据lPUART1_RX_STA++;	
}
测试代码
u8 xxx=0;
void USERT_SEND(void)
{if(lPUART1_RX_STA>5)//接收到数据{for(xxx=0;xxx<lPUART1_RX_STA;xxx++){LPUart_SendData(LPUART1,lPUART1_RX_BUF[xxx]);}lPUART1_RX_STA=0;}
}

在主函数内循环,

新手入门,多多指教

更多推荐

华大 HC32L30E8PA 低功耗串口设置

本文发布于:2024-03-04 07:01:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1708563.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:串口   低功耗   HC32L30E8PA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!