2.关于RT-Thread 移植SPI NRF24L01_☆摔得流行★的博客-程序员宝宝

技术标签: 总结  

一、描述

我默认你有良好的基础,使用过RT-Thread Studio、CubeMX等软件开发程序,所以文章只会讲解细节,毕竟时代在变化。

对于NRF24L01,作为从机与stm32使用SPI协议进行通信,你得先了解写SPI协议,什么是CPOL、CPHA,配置他们有什么用,推荐看下原子哥视频,简单,速度快,最好标准库3.5裸机也写下程序,了解下结构体对相关寄存器的配置,毕竟使用CubeMX或IDE配置实在是太简单了,当然也忘得快。当然你想速成也可以。

二、CubeMX或CubeIDE配置程序

对于配置NRF24L01的哪些寄存器实现配置哪些模式、什么发送速率,我就不讲解了,有特殊需求的可以自己查看数据手册。

为了快速开发,这里使用CubeIDE配置好基本代码框架,配置和NRF24L01通信要求一样就可以了,比如8位数据MSB(高位在前),分频值256,时钟极性(CPOL)为低,采样边沿(CPHA)为第一边沿。 

 三、对于RT-Thread Studio对工程配置

然后将刚才配置CubeIDE有关SPI的相应的代码复制到RT-Thread工程board.c文件,这一点,你根据board.h的注释进行配置即可,这里就不讲解了,比如我复制代码里的部分截图如下。

 四、有关NRF24L01的代码移植

这里我使用的还是原子个的例程,当然得注意他的代码是SPI的初始化和NRF24L01的初始化时分开的,而且得考虑SPI引脚是否与其他器件如W25Qxx连接着。当然也可以将原子哥有关SPI和NRF24L01配置的文件合并,让将那个合并的文件复制待RT-Thread工程中,当然还得配置相关的小细节如SPI结构体句柄宏定义重定向等等,这点你慢慢体会,移植成功后,你就可以实现短距离无线通信了,还有重要的一点,你移植成功的这套代码可以适配淘宝卖的各种同类型但距离更远的NRF24L01模块。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44826637/article/details/119787106

智能推荐

Android APK签名原理和过程详解_wurui8的博客-程序员宝宝

关注微信号:javalearns   随时随地学Java或扫一扫随时随地学Java在Android 系统中,所有安装 到 系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个 permission的protectionLevel为signature,那么就只有那些跟该permission所在的程

如何让CControlBar派生类显示出来,并能动态改变大小_冰咖啡的博客-程序员宝宝

首先,要重载两个虚拟函数 virtual CSize CalcDynamicLayout( int nLength, DWORD dwMode );  和virtual CSize CalcFixedLayout( BOOL bStretch, BOOL bHorz ); 这样,就可以控制它浮动时的大小并能够停靠CControlBar派生类,如果需要在停靠过程中动态改变窗口的大小,还需响应消息  

WebAssembly简介_xiangzhihong8的博客-程序员宝宝_webassembly介绍

WebAssembly, 简称WASM, 是一种以安全有效的方式运行可移植程序的新技术,主要针对Web平台。 与 ASM.js类似, WASM的目标是对高级程序中间表示的适当低级抽象,即,WebAssembly代码旨在由编译器生成而不是由人来写。WebAssembly程序剖析实际上,称之为“模块(module)”,是因为使用WebAssembly并没有“程序”和“库”之间的区别,只有“模块...

PWM定时器timer0学习笔记_虎皮猫猫大人的博客-程序员宝宝

PWM定时器timer0学习笔记:一、定时器timer0代码中用到的寄存器有哪些?这些寄存器功能是什么?初始化中涉及到这些寄存器的位的含义是什么?:TCFG0功能是:定时器的配置寄存器,可以设置第一个预分频器和第二个预分频器的预分频系数。定时器0,1使用第一个预分频器;定时器2,3,4使用第二个预分频器。设置:第 0-7位。含义是 :65= 01000001,设置第一个预分

Response.setHeader("Content-Disposition", "attachment; filename=" + fileName+".xls");file.Name为中文则乱码_漠冰的痛的博客-程序员宝宝

Response.setHeader("Content-Disposition", "attachment; filename=" + fileName+".xls");如果file.Name为中文则乱码。解决办法是方法1:response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEn

js-----普通函数和箭头函数的区别_王七七的七七七七呀丫丫丫的博客-程序员宝宝

普通函数和箭头函数的区别: this指向问题: 普通函数 this 指向 window,实例化时指向 实例化对象 ,事件绑定时指向 事件源, 严格模式下,指向undefined 箭头函数 this 指向 是通过定义 箭头函数时 箭头函数所处的上下文语境确定 书写问题: 写法不同,箭头函数只能用表达式的形式 箭头函数不能实例化 箭头函数不能改变 this 指向 参数问题: 箭头函数 没有 arguments ,只有剩余参数 箭头函数没有原型属性 箭...

随便推点

SWD Connect/Transfer Source Code_weixin_34190136的博客-程序员宝宝

Serial Wire Debug interfaceThe Serial Wire Debug protocol operates with a synchronous serial interface.This uses a single bidirectional data signal, and a clock signal.This section gives an over...

MySQL中文参考手册5(安装MySQL上)_hem的博客-程序员宝宝

MySQL中文参考手册5(安装MySQL上)转载 译者:晏子〖返回〗〖转发〗译者:晏子 ([email protected])主页:http://linuxdb.yeah.net4 安装MySQL本章描述怎样获得并安装MySQL: 对于你能从其获得MySQL的站点列表,见4.1 怎样获得MySQL。 要了解支持哪些平台,见4.2 MySQL支持的操作系统。 可获得MySQL的多个版本

(七)vue开发 - transition之弹窗动画_、不知不觉、的博客-程序员宝宝_vue动画

页面上需要弹出一个列表供用户选择,通过简单的v-show控制,感觉体验上总要差那么一点,于是加上了vue的transition,最终实现的效果就是,点击选择银行时,银行列表从下面一点点滑动上来,选择完成后,慢慢滑动 下去,贴上代码template> div id="app"> transition name="delay"> form clas

有序列表_风云来的博客-程序员宝宝

1、列表基类template class CBList{public:typedef CBList ListClass;protected:T* m_pData;INT_PTR m_tMaxCount;INT_PTR m_tCount;public:CBList()//初始化时,内存为空{m_pData = 0;m_tMaxC

(dp)ZJNU-G - Research Productivity Index_会飞的小蛇的博客-程序员宝宝

ZJNU-G - Research Productivity Index思路:和牛客的C思路一样,QAQ。代码:#include<bits/stdc++.h>#define pii pair<int,int>#define ll long long#define cl(x,y) memset(x,y,sizeof(x))#define ct cerr<...

Ruby on Rails学习心得(一)配置Ruby on Rails_chijin6756的博客-程序员宝宝

草草草。。。。。。。终于配好了Ruby on Rails的环境了。。。。。。 弄了我三天啊,悲剧的,我决定把这三天的血泪使写下来。 第一次,我是用Ubuntu的apt-get安装的,安装的非常简单, sudo apt-get install ruby sudo apt...

推荐文章

热门文章

相关标签