OSAL串口接收发送数据流程简介

         串口工作在DMA接收发送模式,只是简单的说一下各个函数的调用关系,函数的具体代码太多我也没看都看明白,要是了解了调用关系,大概就能使用串口了,不会太迷茫;

<span style="font-size:14px;">    
    main();                                                             /*  主函数                          */           
        -> HalDriverInit();                                             /*  硬件初始化函数                  */                    
            -> HalUARTInit();                                           /*  串口初始化函数                  */  
                -> HalUARTInitDMA()或者 -> HalUARTInitISR();            /*  初始化管脚位置及工作方式        */  
   
    SimpleBLETest_Init();                                               /*  用户任务初始化函数              */      
        -> NPI_InitTransport(NpiSerialCallback);                        /*  配置串口数据结构及设置回调函数  */            
            -> HalUARTOpen();                                           /*  打开串口                        */
                -> HalUARTOpenDMA();                                    /*  设置串口接收发送数据的参数      */

    osal_start_system();                                                /*  系统开始运行                    */
        -> osal_run_system();                                           /*  系统一直循环运行这个函数        */
            -> Hal_ProcessPoll();                                       /*  查询数据,比如串口数据          */
                -> HalUARTPoll();                                       /*  查询串口                        */
                    -> HalUARTPollDMA();                                /*  查询串口                        */
                        -> HalUARTRxAvailDMA();                         /*  计算接收缓冲区字节数长度        */
                        -> dmaCfg.uartCB(HAL_UART_DMA-1, evt);          /*  回调函数,即 NpiSerialCallback  */
                            -> NPI_ReadTransport();                     /*  读取接收数据                    */
                                -> HalUARTRead();                       /*  读取接收数据                    */
                                    -> HalUARTReadDMA();                /*  读取接收数据                    */
                            -> 用户处理接收数据的地方,以数据环回发送为例
                            -> NPI_WriteTransport();                    /*  串口发送数据                    */
                                -> HalUARTWrite();                      /*  串口发送数据                    */
                                    -> HalUARTWriteDMA();               /*  串口发送数据                    */
                              
                              
                              
                               ......
        -> osal_run_system();                                           /*  系统一直循环运行这个函数        */
    </span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值