- 博客(74)
- 资源 (2)
- 收藏
- 关注
原创 RTThread实际开发问题统计
因为这两个管脚是需要打开JTAG的复用功能的,所以在。中断,我这就没有具体去找中断的配置,我是直接在。里面的实现给注释掉的。因为代码中默认开启了。这两个函数就可以了。
2023-07-30 13:56:10
251
原创 关于rtthread的I/O设备模型
从官方给的架构可以看出,官方是将IO设备的使用分成了三层。IO设备管理层:也就是正常用户接触的一层,用户直接调用该层接口实现IO设备的操作。例如代码中的device.c文件设备驱动框架层:这一层可以称为中间层了,因为对于大多数设备来说,无非就是等操作,所以这里将许多serial都抽象话,实现这几个功能,供上层IO设备管理层调用。比如代码中的serial.c模块。设备驱动层:这层就是具体的驱动设备了,这层需要具体到IO设备,进行相应的适配。这层需要实现的几个option有等操作方法。
2023-07-30 13:38:29
334
原创 NB模块-QS100-默认demo
start上一节我们介绍过QS100的编译,这节我们介绍下如何使用QS100开发板进行下载以及运行基础的demo。先介绍下基本的软件工程结构:APPLIB – 一些第三方库ARCH – 因为这芯片是基于M3内核的,一些关于M3内核的启动文件和内核文件DOC – 接口文档说明DRIVERS – 一些外设接口文件,源文件在下面以库的形式提供firmware – 编译生成后的文件KERNEL – 系统内核,有多个系统,目前使用的是ZeusOSSYSAPP – 系统的一些app实现TARGETS
2022-03-27 21:58:07
1124
原创 ESP32-BLE学习1-建立简单的server
start学习之前,我想尝试使用ESP32的demo建立一个简单的server与手机接进行最基本的数据通信。这里有BLE的简单讲解BLE资料因为BLE的连接是具有主从机特性的,就像SPI,USB一些请求只能由主机端发起,连接也需要主机端发起。所以手机要想连上ESP32,就得将ESP32设置为从机模式。从资料上可以看到,从机端通过Notify通知主机,所以从机就是GATT Server。在进行ESP32 的demo学习之前,得大体看下ESP32的蓝牙组成,ESP32支持经典蓝牙和低功耗蓝牙4.2,
2022-03-19 21:48:47
1508
原创 NB模块-QS100-环境配置说明
简介QS-100是河北骑士智能科技有限公司(以下简称"骑士科技")推出的一款基于芯翼XY1100平台的工业级NB-IoT无线通讯模组,拥有高性能、超低功耗、广域覆盖和外围电路简单等特点,方便开发,易于客户快速导入产品设计。QS-100模组支持多种网络协议,默认支持如TCP/UDP,HTTP,MQTT等。同时QS-100模组具有丰富的外围接口,可支持中国移动OneNET、中国电信IoT、中国联通云、华为OceanConnect以及阿里云等物联网云平台,为客户的应用提供极大的便利。直接截取官网的,这里有个
2021-11-19 17:08:53
6871
原创 合宙lua库详解-sms
文章目录简介初始化发送简介短信是我们经常使用的,在手机上使用也就是直接编写文本就可以将内容发送出去。但是我们实际使用过程却是很复杂的。短信有许多的编码,7bit,8bit,文本等等。下图就是PDU编码格式图:MO短信PDU格式(模块端发送)MT短信PDU格式(模块端接收)第一眼看上去,一脸懵逼,下面我们一一道来。合宙lua库的短消息收发是根据AT指令进行收发的,接下来就对照上图看下库里面是怎么处理的吧。初始化local function init() if cpinReady
2021-11-18 10:24:27
1018
原创 合宙lua库详解-ril
简介肝了这么久的讲解,一个评论和点赞都没有,没有一丝丝反馈,没有一丝丝赞扬。难受哦!!!但是我还得肝,必须肝出一个赞。如果大家能给点反馈,给点一键三连,我肝的更起劲。大家的评价是我前进最大的鼓舞。好了,吐了这么多的苦水,我们接着来肝lua的库,本来今天我准备说一下短信的库的,但是短信的发送是基于AT指令的,用到了ril模块,所以我们先来说一下ril库。ril库主要是通过虚拟通道与底层进行AT交互,什么是虚拟通道尼,可以理解为是两个队列,一个是发送,一个是接收,底层有数据的时候往接收队列里面填充并抛
2021-11-16 20:05:19
1330
2
原创 合宙lua库详解-socket
文章目录简介START建立连接发送数据接收数据关闭连接简介作为通讯的基础,只要你上网就需要用到lua的socket模块,即使使用mqtt,http等其它模块间接也调用了socket模块接口。所以对于socket的分析显得非常重要。在分析之前请准备一些基础知识:lua的协程lua的元表对于数据业务的使用,我们一般就会使用到:建立连接发送数据接收数据关闭连接下面就从这几个方面进行分析:START可以看到这个socket的函数主要创建了一个元表,这个元表贯穿socket的全部使用
2021-11-11 11:52:33
4382
2
原创 合宙lua库详解-sys
文章目录简介QUESTIONSTARTsys.init(0,0)sys.runlua内部消息机制简介LuatOS现阶段变得越来越热门,主要由上海合宙通信科技有限公司推出的嵌入式脚本系统。该系统具有短小精悍的特点。对于LuatOS开发(下面简称Lua开发)的人都知道,开发合宙的产品需要具有下面几个部分:底层lua固件上层应用脚本脚本库底层lua固件,这点我们大概不需要怎么关心,主要是在原有的平台上合成了lua虚拟机,并添加了许多底层接口。上层应用脚本,也就是客户的脚本,主要根据脚本库提供的接口
2021-11-10 10:41:44
3502
2
原创 lwip-简介
文章目录简介层次划分传输过程简介lwip的介绍就不累赘了,网上有许多教程。这里推荐野火的<<《[野火]LwIP应用开发实战指南—基于野火STM32》—20210122.pdf>>介绍的非常详细。(该文档我已上传到资源了)我们记录主要是一些用法。在说各种应用协议的使用之前,先说下网络基本的协议栈,这对于我们去学习,理解都有很大的帮助,更有助于我们记忆。脑海里有个基本的框架。层次划分OSI层次根据ISO制定的就是标准的七层协议:实际上对于嵌入式来说许多协议也用不上,所以lw
2021-11-04 17:26:48
917
原创 LWIP-readme
文章目录简介例程讲解协议讲解常见问题简介对于网络这块包含的东西实在太多,一时之间不知道从何说起。我的想法是先从基础的运输层说起,因为现在许多的应用协议,比如:mqtt,http,DNS等等都是基于运输层的,另外运输层本身就可以用来传输数据,就是我们常说的socket。至于运输层下面的IP层,因为我们写应用接触的不多,后面可以简单介绍下。但是整个lwip的协议架构还是得记录下,这对记忆和理解都有莫大的帮助。我们介绍传输层的协议,利用rtthread的例子,主要分为几个部分:例程讲解copy整个例
2021-11-03 10:59:40
281
原创 单片机UART的收发设计
文章目录简介配置流程配置时钟源初始化GPIO初始化USART初始化定时器初始化中断初始化使能收发寄存器简介UART传输是我们实际应用开发中最常用的一种串行通信方式。关于通信方式有许多种类:串行,并行,单工,半双工,全双工,异步,同步等等。波特率是衡量通信速度的单位。比如2400bps = (1个停止位+1个结束位+8位数据位)* 240,也就是一秒钟传输240个字节。在单片机中,当每次来数据的时候,都会产生中断,这个中断函数调用的地方是在启动文件(.s)中调用的,函数名也是固定的,所以我们只需要重构这
2021-11-02 16:53:02
463
原创 stm32 ADC的使用
文章目录简单了解原理寄存器简单了解ADC(Analog to Digital Converter),顾明思义,就是模数转换器,模拟信号转换为数字信号。STM32一般有两个ADC,每个ADC又有多个通道,每个通道与GPIO一一对应。ADC转换有多种模式选择,单次,连续,扫描,间断等。转换后的数字,按照右对齐或者左对齐,存储在16位寄存器中。(一般是右对齐,左对齐主要针对一些精度不够,比如只有8位,那么数据就不需要转换,忽略8个位即可)通道对应关系:原理基本所有的外设都要经过下面的过程:
2021-11-01 10:39:55
1479
原创 2021-10-29
2021.10.29随笔昨晚玩了很长时间的游戏后,突然觉得整个人都不好了,时间过得飞快,但是自己好多时间都浪费在打游戏上了。是没事可干吗?不尽是,这是事情很杂,很乱,不知从何入手。于是就思考了很多,直到凌晨才想通透。我们现在的社会,资讯知识充斥着网络中,杂且乱。如果我们不学会管理的方法,就会被淹没。不管好的坏的资讯,知识随意灌输,又没有学会加以整理区分,如此反复循环,最终会变得无所事事,毫无目的。如何突破尼?整理总结,教以如何学习归纳总结。(还未寻得,有知道的伙伴,希望可以评论相告)记录
2021-10-29 09:10:53
4081
原创 GD32的时钟和systick学习记录
文章目录简介时钟树主频简介如果把每个外设都看成独立的个体的话,包括GD32本身。那么时钟就相当于心跳。所以说只要想外设工作,必须先使能其时钟源。下面主要介绍下系统主频,RTC,看门狗的时钟源,举三反一,其它的问题就对比看下就行了。时钟树该图是STM32的时钟树,GD32也差不多,只不过经过锁相环倍频器PLL之后得到108M的SYSCLK,而STM32是72M的频率。该图是从左往右看,从图中可以看出主要时钟来源有图标的1,2,3,4,分别是:1:HSI 内部RC振荡器,提供8M时钟频率
2021-03-09 13:28:19
2591
原创 GD32/ST32的中断优先级分组记录
文章目录简介优先级的定义代码详解1. 配置分组2. 使能中断简介简单来说NVIC就是个嵌套向量中断控制器,控制着整个芯片中断相关的功能。NVIC相关结构体定义在文件:core_cm3.h中。 关于中断寄存器主要有:ISER(使能中断),ICER(失能中断),IP(用来设置中断优先级) 优先级的定义GD32或者ST32使用4个bit来表示中断优先级,优先级又被分为抢占优先级和子优先级。数值越小,优先级越高。如果抢占优先级相同的话,就比较子优先级,如果抢占优先级和子优先级都相同的话,就比较硬件中
2021-03-09 10:29:26
5611
1
原创 lua多线程lanes的测试
文章目录背景编译准备1. 下载源码2. 安装MinGW,Cmake3. 安装lua for windows代码测试背景因为原始的lua代码不支持多线程,多数用的都是协程。这样对于多任务的,需要定时刷新状态的应用就不太理想。为什么不支持尼? 因为lua状态机的维护是一个全局变量,这样多线程会导致维护成本高。lanes?lanes是一个支持lua多线程的开源库,通过维护不同的lua状态机实现多线程。线程间通信使用linda对象。编译准备1. 下载源码github地址2. 安装MinGW,
2021-03-01 19:33:19
1216
1
原创 ESP8266_RTOS_IDF在WSL中的编译
文章目录什么是WSL打开WSL功能打开服务安装linux系统ESP8266_RTOS_IDF linux下的环境搭建安装编译工具链安装依赖包:安装工具链获取SDK开始编译什么是WSLWSL(Windows Subsystem for Linux) 适用于Linux的Windows子系统通俗点说:有人习惯了windows下面开发,但是有些东西的开发又需要linux,这时候装个双系统尼,来回切换太麻烦,所以windows就开发了个功能叫做windows子系统,该子系统就是linux系统。可以解决wind
2020-12-13 23:26:41
500
原创 ESP8266_RTOS_IDF的使用介绍
文章目录简介准备工作编译环境编译工具链SDK代码配置环境变量helloword打开环境编译常用开发板怎么使用工具下载尼?简介第一次摸到这东西不知道是个啥,头脑中纵有万条思绪不知从何下手。ESP8266_RTOS_IDF后面简称为idf。idf其实是乐鑫设计的一款带有操作系统的SDK,采用cmake脚本编译,配合强大的python使整个结构看起来很清晰,使用起来也更方便。components里面是一些接口库文件。examples是一些demo,也就是轮子,拿来组组就OK了。具体架构可能需要时间研究再说
2020-12-10 21:16:08
4244
原创 FLASK-mysql
目录大体思路数据库的安装和使用1.创建库2.进入库3.运行库2.数据库操作最近想仔细学习下后台技术了,其中很重要的部分就是数据库,下面讲解FLASK搭配mysql实现数据库管理大体思路要实现数据库管理操作需要以下部分:数据库的安装和使用数据库框架(对数据库操作封装了)综上这次需要的部分就是:FLASK+flask-sqlalchemy+mysql数据库的安装和使用...
2020-03-22 20:38:00
221
原创 32位数值转化为8位IP地址
#define u8 unsigned char#define u32 unsigned int#define SWAP32(ipValue) ((u32)(((ipValue) & 0xff) << 24) | \ (((ipValue) & 0xff00) << 8) | \ (((ipValue) >>...
2020-01-03 13:39:00
629
原创 bin文件转const数组
是否有时候需要将一个bin文件下载到flash中去,但是又不知道以何种方式下载进去。这时候我们可以将bin文件转化为const数组,然后在代码中直接调用就可以了。但是需要怎么转化尼?UE工具可以但是转化起来有点麻烦,那就写个简单的转化函数吧,配合windows编译工具链就可以实现(在我前面的博客有具体的安装运行方法),废话不多说,上代码#include <stdio.h>...
2019-12-10 09:58:00
456
原创 DMA+UART实现串口不定长接收和发送功能
目录简介基本功能了解UART简介需要用到单片机的人基本上都需要用到串口功能,看了好多教程提供的是中断接收和发送功能。但是通过中断收发数据有不少弊端。其一:中断影响程序的运行速度。(想想发一个字节中断就中断一次,难受!!!)其二:频繁中断丢数据的概率大了很多。有没有方法解决这两个隐患尼?DMA( Direct Memory Access)直接存储器访问,强大的小老二。专门帮CPU干些劳...
2019-12-04 17:04:00
548
原创 DMA+USART重定义打印接口
**打印接口这东西对于开发者来说实在太有用了,没LOG调试起来的程序让人抓狂,所以在开启我的stm32之旅时,首先需要实现的功能就是建立一个打印接口。我的程序都是在UCOSII中实现的。**主要程序功能1. 调用打印接口2. 打印接口功能:格式化转化后将数据copy到循环队列中。并发送信号量。3. diag_task功能:等待信号量,收到信号量后,判断循环队列是否为空,不为空的...
2019-11-29 15:48:00
229
原创 FTP初探
##简介**FTP在TCP/IP中在TCP/UDP上一层,属于应用层,通常用来管理文件。正常的FTP交互需要建立两条链接,一条用来发送命令,一条用来传送数据。FTP服务器的默认命令端口是21端口,数据端口是20端口**FTP工作流程FTP的工作模式分为主动模式和被动模式,主动模式和被动模式的区别就是数据通道建立的方式不同。1. 主动模式客户端与服务器建立命令通道。通过命令...
2019-11-26 16:17:00
248
原创 ESP8266-lua开发
ESP8266目前使用最广泛的WIFI,无论作为DIY还是项目量产都是不错的选择,下面记录ESP8266的lua开发过程。##开发四大件1. 环境搭建2. 编辑器3. 编写应用4. 下载工具+调试工具环境搭建lua脚本是直接运行的,不需要编译,直接下载到模块去,通过lua解释器直接调用解释运行。和python一样。这里也就省去了搭建环境的步骤了。但是需要下载具有...
2019-11-25 22:11:00
590
原创 GPIO常见问题分析
1. GPIO中断1. GPIO中断处理函数中千万不要写耗时的处理函数。2. 中断防抖一般使用定时器,通过定时器的回调判断GPIO的电平,当然在电平变化的时候可能再来中断,就关闭定时器重起定时器。3. 一般GPIO中断回调函数的调用可以写在一个线程中。当防抖成功之后,抛消息给这个线程...
2019-11-22 17:32:00
1126
原创 新装系统简介
以前的固态是SATA接口的。开机,打开软件都比较慢,所以买了一个NVME接口的SSD。现在需要重新装一个系统,并且把以前的系统盘给格式化,用作其它盘。但是装系统的时候遇到一些问题。下面分享一下这次的经历,1. 装机工具U盘当作系统盘。制作系统盘使用的是软碟通。(https://jingyan.baidu.com/article/f79b7cb30027179144023e00.h...
2019-11-17 15:20:00
200
原创 STM32_SPI
简介SPI 的全称是"Serial Peripheral Interface", 意为串行外围接口。SPI 接口主要应用在 EEPROM、FLASH、 实时时钟、 AD 转换器, 还有数字信号处理器和数字信号解码器之间。 SPI是一种高速的, 全双工, 同步的通信总线。主要有四根线,NSS,CLK,MISO,MOSINSS:片选(常常为设备资源有限,外挂设备多个时使用)MISO:...
2019-11-12 14:39:00
257
原创 notepad++插件总结
编辑代码追踪程序的运行逻辑时,常常进入某个文件之后想回退到之前的怎么办尼?notepad++这款简单的编辑工具用的人非常多,非常便捷,但是刚安装的时候不具有,回退,前进的功能。需要安装一个插件。回退,前进插件插件名:Location Navigate安装步骤:插件->插件管理->可用->搜索Location Navigate然后勾选上安装即可下图是我已...
2019-11-11 11:31:00
252
原创 移植UCOSII注意的问题
移植UCOSII其实并不难,现在网上的资料又那么多。但是要弄懂要花上不少时间。现在来说说移植需要注意的几个问题吧。**参考文档 <>**>PendSV:主要应用于系统任务切换 NVIC:负责芯片的中断管理##准备下载源码:http://micrium.com/page/downloads/ports/st/stm32,当然网上也有很多,可以自行下载。官网下载...
2019-11-09 10:40:00
1517
原创 stm32入门准备
最近工作中碰到不少嵌入式底层得东西,所以想抽时间学学嵌入式得底层了。stm32这款产品很友好,入门不难,外设很全。所以准备入手学习了。网上看了很多,很杂,现在总结一下入门的几个正确姿势。**1.stm32入门前准备* 器件准备stm32板子一枚,我用的是stm32f103c8t610块钱一枚。下载器,用的是STLINK V2,10快一枚,全系stm都支持。若干杜邦线,led灯...
2019-11-07 16:20:00
337
原创 vmware无法挂载共享文件夹
The following will configure the Shared Folders clients with the default options:For VMware Tools - Shared Folders kernel mode client use the following mount command:mount -t vmhgfs .host:/ /mn...
2019-11-01 14:19:00
893
原创 C常见问题
1.越界没有给一个变量申请足够大的内存,而copy大于该内存的数据int main(){char a;char *str=&a;strcpy(str,"hello");printf(str);return 0;}2.字节对齐问题typedef struct{ char a; short b; int c;}struct_size_t...
2019-07-24 16:29:00
260
原创 费曼学习法
在网上看到一个人写的费曼学习法,觉得挺有道理(自己深有体会)。特此记录分享一下。物理学家费曼的学习方法——教会别人:Cover 迅速把需要学习的资料看过一遍,看的时候尽量理解,但不理解的地方也不要死磕,先标记。Debug 拿出纸笔,试图把学习内容从头到尾跟别人讲清楚,讲不清楚的部分就是你不懂的部分。或者刷题+对答案,找到自己答错或者不会的地方。Insight 对于自...
2019-07-15 11:44:00
170
原创 结构体组包和指针函数的函数指针
直接上代码#include <stdlib.h>#include <stdio.h>#include <string.h>typedef struct{ char name[10]; int age; int high;}student;//结构体组包void test_pack(){ char...
2019-07-12 18:41:00
206
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人