本人刚刚入职,最近使用了华大家的芯片,国产芯片的一些初始化对于一些单片机的新玩家真的算是比较繁琐,有些注释写的也不太容易让人理解
所以我整理了一下官方的资料并加上自己写的一些功能以及额外的注释,如果有使用这款低功耗芯片的可以参考
首先是串口的初始化和使用
void Uart0_Init(void)
{
uint16_t timer=0;
uint32_t pclk=0;
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;//基础定时器配置结构体
DDL_ZERO_STRUCT(stcUartIrqCb);//清空数据函数
DDL_ZERO_STRUCT(stcMulti);
DDL_ZERO_STRUCT(stcBaud);
DDL_ZERO_STRUCT(stcBtConfig);
Gpio_InitIOExt(0,1,GpioDirOut,FALSE,FALSE,FALSE,TRUE); //配置01引脚为输入模式RX
Gpio_InitIOExt(0,2,GpioDirOut,FALSE,FALSE,FALSE,TRUE);//配置02引脚为输出模式TX
//通道端口配置
Gpio_SetFunc_UART0_RXD_P01();//RX输入
Gpio_SetFunc_UART0_TXD_P02();//TX输出
//外设时钟使能
Clk_SetPeripheralGate(ClkPeripheralBt,TRUE);//模式0/2可以不使能
Clk_SetPeripheralGate(ClkPeripheralUart0,TRUE);//使能串口时钟
stcUartIrqCb.pfnRxIrqCb = RxIntCallback;//设置接收中断函数
stcUartIrqCb.pfnTxIrqCb = NULL;//设置发送中断为空
stcUartIrqCb.pfnRxErrIrqCb = ErrIntCallback;//设置接收错误中断函数
stcConfig.pstcIrqCb = &stcUartIrqCb;//将中断函数结构体指针赋值给串口配置
stcConfig.bTouchNvic = TRUE;//NVIC中断控制器使能标志
stcConfig.enRunMode = UartMode1;//测试项,更改此处来转换4种模式测试
//stcMulti.enMulti_mode = UartNormal;//测试项,更改此处来转换多主机模式,mode2/3才有多主机模式
stcConfig.pstcMultiMode = &stcMulti;//将中断回调函数结构体指针赋值给串口配置结构体
stcBaud.bDbaud = 0u;//不使能

最低0.47元/天 解锁文章

2743

被折叠的 条评论
为什么被折叠?



