杰理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在蓝牙播放歌曲时,中断接收数据会丢字节,实测确实如此,有知道如何修改的朋友望不吝赐教,多谢。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
杰理AC692X开发用户手册是一本面向开发者的指南,旨在帮助他们更好地了解和使用杰理AC692X芯片进行应用开发。 该手册首先会介绍杰理AC692X芯片的基本特点和硬件结构,包括处理器核心、内存、外设等,并详细说明了芯片的引脚分布和功能。开发者可以通过了解芯片的硬件构成,更有效地进行硬件设计和布局。 接下来,手册会详细介绍AC692X芯片的软件开发环境和工具链,包括支持的开发语言、编译器、调试工具等。这些工具能够帮助开发者进行固件开发、编译和调试,提高开发效率。 在软件开发方面,手册会介绍AC692X芯片的软件开发框架和API接口,开发者可以通过这些接口进行功能开发和集成。手册还会提供一些示例代码和项目实践,以帮助开发者更好地理解和应用这些接口。 此外,手册还包含了AC692X芯片的性能优化和电源管理相关的内容,开发者可以通过优化代码和合理管理电源,提高设备的性能和续航能力。 最后,手册还会介绍AC692X芯片的测试和调试方法,包括如何利用debug接口进行硬件和软件的调试,帮助开发者定位和解决问题。 总之,杰理AC692X开发用户手册通过详细的介绍和实例,为开发者提供了一个全面的指南,帮助他们更好地学习和使用AC692X芯片进行应用开发。无论是初学者还是有一定经验的开发者,都能从中获得有益的知识和指导。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JaLLs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值