蓝牙BLE芯片PHY6222之串口收发

串口1初始化

void uart1_init(void)
{
	uint8 I=0;
    uart_Cfg_t cfg_user =
    {
        .tx_pin = GPIO_P31,
        .rx_pin = GPIO_P32,

        .rts_pin = GPIO_DUMMY,
        .cts_pin = GPIO_DUMMY,
        .baudrate = 115200,
        .use_fifo = TRUE,
        .hw_fwctrl = FALSE,
        .use_tx_buf = FALSE,
        .parity     = FALSE,
        .evt_handler = ProcessUartData,
    };

    hal_gpio_pin_init(GPIO_P31, OEN);
    hal_gpio_pin_init(GPIO_P32, IE);
    //m_uartCtx.enable = FALSE;
    int ret = hal_uart_init(cfg_user, UART1); //uart init
    if(ret == PPlus_SUCCESS)
        LOG("uart1 init SUCCESS...\n");
    else
        LOG("uart1 init fail...\n");

}

串口中断回调

int cmdlen = 0;
#define AT_CMD_LENGTH_MAX            1024
uint8_t cmdstr[AT_CMD_LENGTH_MAX];
__ATTR_SECTION_SRAM__ static void ProcessUartData(uart_Evt_t* evt)
{

        osal_memcpy((cmdstr + cmdlen), evt->data, evt->len);//µþ¼ӷţ¬´󓚱6ז½ڻᲺɺ¶എ֐¶ύ
        cmdlen += evt->len;

        osal_stop_timerEx( key_TaskID, KEY_DEMO_CYCLE_TIMER );
        osal_start_timerEx( key_TaskID, KEY_DEMO_CYCLE_TIMER, 5);
				
}

在任务中初始化串口1

    hal_uart_deinit(UART1);
    uart1_init();
    osal_start_reload_timer(key_TaskID, KEY_DEMO_ONCE_TIMER, 1000);//TX

串口1发送数据

    if( events & KEY_DEMO_ONCE_TIMER)
    {

        int ret = hal_uart_send_buff(UART1, tx_data, sizeof(tx_data));
        if(ret == PPlus_SUCCESS)
            LOG("uart send  ok\tsize==%d\n", sizeof(tx_data));
        else
            LOG("uart send fail\n");

        return (events ^ KEY_DEMO_ONCE_TIMER);
    }

串口1接收数据

串口1接收到的数据,用串口0打印出来验证数据是否完整且正确

    if( events & KEY_DEMO_CYCLE_TIMER)
    {

        LOG("rx_data==");
        for(int i = 0; i < cmdlen; i++)
            LOG("%d", cmdstr[i]);
        LOG("\rrx_data_len=%d\n", cmdlen);

        cmdlen = 0;
        osal_memset(cmdstr, 0, AT_CMD_LENGTH_MAX);

        return (events ^ KEY_DEMO_CYCLE_TIMER);
    }

实现效果

收发正常
在这里插入图片描述

demo传送门

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值