杰理AC692X---UART2驱动(发送+中断接收)

SDK中给出demo基本上都是UART1的demo,那么要用到UART2怎么办?

代码请看:

#if 1 ///200203  JIM   UART2 DRIVER FOR JL
void user_uart_write(char a)
{
    JL_UART2->BUF = a;
    __asm__ volatile("csync");
    while((JL_UART2->CON & BIT(15)) == 0);//TX IDLE

}


void user_uart_err(void)
{
    user_uart_write(0);
}
void user_uart_nocmd(void)
{
    user_uart_write(1);
}

void user_uart_ok(void)
{
    user_uart_write(2);
}

void user_uart_send_init(void)
{
    user_uart_write('O');
    user_uart_write('K');
}



void user_common_uart_isr(u8 uto_buf, void *p, u8 isr_flag)
{
    if (UART_ISR_TYPE_DATA_COME == isr_flag) {
        switch (uto_buf)
        {
            case 0x00:///播放暂停
                task_post_msg(NULL, 1, MSG_BT_PP);
                user_uart_ok();
            break;
            case 0x01:///上一曲
                task_post_msg(NULL, 1, MSG_BT_PREV_FILE);
                user_uart_ok();
            break;
            case 0x02:///下一曲
                task_post_msg(NULL, 1, MSG_BT_NEXT_FILE);
                user_uart_ok();
            break;
            case 0x03:///音量加
                task_post_msg(NULL, 1, MSG_VOL_UP);
                user_uart_ok();
            break;
            case 0x04:///音量减
                task_post_msg(NULL, 1, MSG_VOL_DOWN);
                user_uart_ok();
            break;

            default:
                user_uart_nocmd();
            break;
        }
    }
}
static s32 user_test_uart_init(u32 baud)
{
    u32 status = 0;

    JL_IOMAP->CON1 |= BIT(15) | BIT(14);
    JL_PORTC->OUT |= BIT(4) ;
    JL_PORTC->DIR |= BIT(5) ;
    JL_PORTC->DIR &= ~BIT(4) ;

    JL_UART2->BAUD = (UART_CLK / baud) / 4 - 1;
    uart_info[2].callback_fun = user_common_uart_isr;
    IRQ_REQUEST(IRQ_UART2_IDX, uart2_isr_fun);
    JL_UART2->CON =  BIT(13) | BIT(12) | BIT(10) | BIT(5) | BIT(7) | BIT(3) | BIT(0);

    user_uart_send_init();
    return 0;
}
#endif

找个地方调用 user_test_uart_init即可。user_uart_write是串口发送一个字节,user_common_uart_isr是串口接收中断,当串口接收到数据时会进入串口接收中断,每收到一个字节中断一次。

2020.06.11更新 :

朋友反馈UART2在蓝牙播放歌曲时,中断接收数据会丢字节,实测确实如此,有知道如何修改的朋友望不吝赐教,多谢。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jim天河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值