【龙芯1B例程】:串口中断实验

龙芯(只供学习,不可商用)

文章目录


前言

一、串口中断是什么?

二、开发步骤

1.龙芯1B串口驱动函数(内置)

2.串口中断示例代码

3.代码示例图

总结


前言

文章参考官方各类书籍,以及网络知识,如有侵权,请联系我立马删帖道歉!!!谢谢各位的关注,大家的关注才是我不断更新的动力!前段时间更新了串口的使用,但是忘了更新串口中断的使用,特此补充!有关串口的具体知识欢迎大家去浏览以前的文章!


一、串口中断是什么?

串口中断从大体上来讲,就是当串口数据寄存器接受到数据(串口正在工作中),这时候就会进入串口中断源,执行串口中断程序中的任务,并不影响串口程序正常工作。

注:龙芯1B嵌入式开发板是没有中断优先级,这一点于stm32的不同。

二、开发步骤

1.龙芯1B串口驱动函数(内置)

源代码:ls1x‐drv/uart/ns16550.c

头文件:ls1x‐drv/include/ns16550.h

#define BSP_USE_UART4                // Console_Port 控制台串口

#define BSP_USE_UART5                // Console_Port 控制台串口

需要使用哪一个串口就打开哪个串口(bsp.h)

以下是内部函数对串口的初始化设置(参数可自行修改):

#ifdef BSP_USE_UART4                 
static NS16550_t ls1b_UART4 =  
{
    .BusClock  = 0,                  
    .BaudRate  = 115200,
    .CtrlPort  = LS1B_UART4_BASE,
    .DataPort  = LS1B_UART4_BASE,
    .bFlowCtrl = false,              
    .ModemCtrl = 0,
    .bIntrrupt = true,               
    .IntrNum   = LS1B_UART4_IRQ,
    .IntrCtrl  = LS1B_INTC0_BASE,
    .IntrMask  = INTC0_UART4_BIT,
    .dev_name  = "uart4",
};
// to do initialize
// 总线频率,初始化时填充
// 默认速率
// 串口寄存器基址
// by user needed
// 使用中断方式
// 系统中断号
// 中断寄存器
// 中断屏蔽位
// 设备名称

2.串口中断示例代码

代码如下:

/*
 * uart_utp.c
 *
 * created: 2022/8/10
 *  author: 
 */
#include "ns16550.h"
#include "ls1b_gpio.h"

char buff[256];
void UART4_test(void)//执行任务
{
    ls1x_uart_read(devUART4,buff,255,NULL);
    printk("%x==%x==%x\r\n",buff[0],buff[1],buff[2]);
}

void uart4_interrupt(int vector, void * param)
{
    UART4_test();
}
/*
    devUART1---rx=gpio_50
    devUART2---rx=gpio_54
    devUART3---rx=gpio_56
    devUART4---rx=gpio_58
    devUART5---rx=gpio_60
*/
void uart_utp_init(void)
{
    ls1x_uart_init(devUART4,NULL); //初始化串口
    ls1x_uart_open(devUART4,NULL); //打开串口
    ls1x_disable_gpio_interrupt(58);
    ls1x_install_gpio_isr(58,INT_TRIG_EDGE_UP,uart4_interrupt,NULL);//中断初始化
    ls1x_enable_gpio_interrupt(58);
}

3.代码示例图


联系我们

                vx ——>  buildupup     公众号   嵌入式up   如果文章对您有帮助,请打赏一元呗,感谢支持,分享不易,码字不易。希望对大家帮助!


最怕一生碌碌无为,还安慰自己平凡可贵。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式up

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

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

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

打赏作者

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

抵扣说明:

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

余额充值