我是靠谱客的博主 忧郁黑米,最近开发中收集的这篇文章主要介绍nrf52840的uart0与uart1双串口使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

nrf52840的uart0与uart1双串口使用

项目原使用nrf52832,后面由于项目需要用到双串口,改用nrf52840,官方的例程没看到使用uart1的,找遍全网都没找到uart1的使用资料,有些不负责任的网文居然说40也只有一个uart,吓得俺赶紧又查看了一次datesheet,O得K、木鸭梨
在这里插入图片描述
SDK代码uart驱动中,搜索到uart1的驱动部分,说明官方驱动有uart1支持的
在这里插入图片描述
自己动手,丰衣足食吧,下面以nRF5_SDK_17.0.0_9d13099版本,在examplesble_peripheralble_app_uartpca10056的例程上修改
1:在配置文件中,启用下面两项,如果没有的加上
// UART1_ENABLED - Enable UART1 instance
//==========================================================
#ifndef UART1_ENABLED
#define UART1_ENABLED 1
#endif
// UART1_CONFIG_USE_EASY_DMA - Default setting for using EasyDMA
#ifndef UART1_CONFIG_USE_EASY_DMA
#define UART1_CONFIG_USE_EASY_DMA 1
#endif
2:修改app_uart库,主要修改了app_uart_fifo.c文件,官方的APP层,原来只支持单个uart0的操作,改为支持多instance
在这里插入图片描述
app_uart.h中,定义obj
在这里插入图片描述

代码上传到https://download.csdn.net/download/chhen168/12688127,把我上传的‘nrf52840的uart0与uart1双串口_uart’替换到nRF5_SDK_17.0.0_9d13099componentslibrariesuart里的文件即可,可用对比软件对比旧的,查看修改项
3:使用就简单了,定义两个uart实例
在这里插入图片描述
调用初始化,完事
在这里插入图片描述
注意1:官方例程里的uart0初始化要去掉
在这里插入图片描述
注意2:APP层的代码,只修改了FIFO的文件,如果不使用FIFO,app_uart.c要参照app_uart_fifo.c修改里面的几个函数

注意3:需要在uart定义文件里,定义下面两个函数,printf需要用到,原来的app_uart_get改为支持多uart,不适用了
uint32_t _app_uart_get(uint8_t * p_byte)
{
return app_uart_get(&uart1, p_byte);
}

uint32_t _app_uart_put(uint8_t byte)
{
return app_uart_put(&uart1, byte);
}

测试结果,木鸭梨
在这里插入图片描述
不会编辑,将就看吧

最后

以上就是忧郁黑米为你收集整理的nrf52840的uart0与uart1双串口使用的全部内容,希望文章能够帮你解决nrf52840的uart0与uart1双串口使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部