- 博客(76)
- 收藏
- 关注
原创 STM32 定时器初始化完成后立马进入更新中断的原因分析
在STM32 定时器使用HAL初始化完成,并开启更新中断后,即使定时器时间还未到,立马就会进入一次更新中断服务函数。定时器具体配置如下。实际表现为,初始化完成之后立马就进入了更新中断。后续更新中断也是正常触发的,只有第一次不正常。
2023-12-30 14:40:22
717
原创 Hard Fault定位利器——开源组件CmBacktrace
记录学习过程。在MCU的开发中,由于程序设计的疏忽或者没有考虑到的一些异常情况,非常容易触发Hard Fault,在开发前期阶段触发Hard Fault时,我们可以通过连接调试工具利用keil比较容易定位到问题所在,但是如果已经处于快接近成品阶段,有时不那么容易能接上调试器了。或者说,这个Hard Fault非常难触发,我们也不可能一直接上调试器等着。所以这里可以使用CmBackTrace开源组件,帮助我们不需要连接调试器就可以定位到问题原因。
2023-12-17 22:45:50
2074
1
原创 GD32 定时器输入捕获模式测量PWM占空比和频率
利用GD32 定时器的PWM输入捕获模式来实现PWM波形的占空比和频率的测量。相应的简介可以参考GD32用户手册中关于定时器输入捕获的章节,PWM输入捕获模式是输入捕获模式的一个特例。(记录自己学习过程,如有错误请留言指出)
2023-12-02 18:28:03
4260
1
原创 嵌入式开源组件——LwRB(RingBuffer)的移植和应用
LwRB 是一个针对嵌入式系统优化的通用FIFO(先进先出)缓冲区库,之前的名称叫做RingBuffe,不知道作者在V2.0.0版本时,修改名称为了LwRB。以下为主要的一些特性:用 C (C11) 编写,兼容size_t 数据类型平台无关,无特定架构的代码实现 FIFO(先进先出)缓冲区无动态内存分配,数据为静态数组使用优化的内存复制,而不是循环来读取/写入内存中的数据作为管道使用时,线程安全,只有单个写入和单个读取条目作为管道使用时,单写和单读条目的中断安全。
2023-09-17 16:32:02
1837
1
原创 正点原子I.MX6ull应用编程 看门狗实验 /dev/watchdog: Device or resource busy
注意这里提示了 watchdog watchdog0: watchdog did not stop ,说明我们已经关闭了看门狗喂狗,但是呢看门狗的计时还是在进行,如果我们没有及时启动自己的喂狗程序,程序跑一会就会重启。按着正点原子<<I.MX6U嵌入式Linux C应用编程指南>>学习看门狗应用编程,在运行程序的时候出现 open error: /dev/watchdog: Device or resource busy。可以看到已经成功运行了,没有出现之前看门狗被占用的情况了。
2023-09-02 15:15:04
575
原创 正点原子I.MX6ull应用编程 feertype库使用时找不到字体文件
在正点原子linux应用编程文档中对freetype库使用的代码中,运行起来需要输入字体文件的路径,按文档中的路径/usr/share/fonts/font.ttf下面并没有这个字体文件。我们直接拷贝到开发板下面路径即可了。然后命令行运行程序,输入字体文件的路径即可显示。比如这里选用华文宋体,打开属性,这个是一个TTF格式的字体文件。这个时候,我们就直接打开自己win电脑,找到对应的中文字体库。
2023-08-29 23:52:42
181
原创 正点原子I.MX6ull应用编程移植 zlib 出现libz.so.1: cannot open shared object file: No such file or directory
你再重启机器之后,就会出现连网络都ping不通了,开启各种报错,这里先记录一下。在学习正点原子imx6ull Linux应用编程手册时,在第二十一章 在LCD上显示png图片中,需要移植zlib。各位一定要谨慎执行呀,删除了后网络都不通,文件也无法拷贝,连通过U盘都拷贝不过去了(链接文件无法拷贝),没办法只有重新烧录系统了,这个坑目前没有找到这么好解决,自己记录一下。记录自己学习I.MX6ULL中遇到的问题和踩过的坑。
2023-08-23 22:48:34
221
4
原创 EasyFlash在GD32F303CC上面的移植
主要是修改ef_cfg.h文件。GD32F303CC用于手册里面的描述,可以知道一个页大小为2KB,支持编程写入16bit或者32bit。基本修改的宏定义如下,具体含义参考注释。// 芯片FLASH的扇区大小或者说页大小 查询手册我使用芯片页大小为2K// FLASH支持的写入bit位数 查询手册 支持16bit和32bit 但是EasyFlash不支持 16bit// 使用内部FLASH来存储 存储的起始地址为 0x0803F000,即从252KB开始储存。
2023-07-01 22:52:27
653
原创 JLINK驱动、接线、接口模式、硬件都没问题,JLINK仍然读不到芯片的解决办法
今天遇到一个奇葩的问题,JINK驱动、接线、模式设置,硬件啥都没有问题,就是JINK连不到芯片,读不到芯片。自己平时都是用SWD模式,然后直接JLINK的GND 、SWDIO、SWCLK直接接上,一般我不会接VCC,应该板子会有单独的供电。问题就出在这里了,不接VCC居然不行。从官方给的资料了解到,J-Link使用目标板参考电压来创建调试信号的电平,因此该引脚必须与芯片的电源引脚连接,以获取正确的目标板参考电压。出现上面这种0V的情况,就要检查芯片的供电情况及Vtref引脚的连接情况了。
2023-07-01 21:22:02
3897
原创 KEIL5 只有下载程序后不运行,只有在调试模式下多次点击全速运行代码才能跑起来的解决办法
最近,使用KEIL5下载调试时遇到了一个很奇怪的现象,下载程序后哪怕是断电重启设备,程序都无法运行,在Flash Dowmload 下已经设置了Reset and Run。只有在Debug模式下,且多次点击全速运行,才能够把程序跑起来。最后解决办法,发现是Keil 设置里面没有开启Use MicroLIB ,如图所示开启后就可解决这个问题了。
2023-07-01 20:35:36
3163
2
原创 GD32 SPI 查询方式和DMA方式在全双模式下效率区别
发现SPI传输数据的过程中,SCK的时钟频率为3.703M符合我们设置的CLK频率,但是我们发现两个SPI的字节之间有一段SCK是空闲的,从逻辑分析仪上看时间高达1.95us,比SPI传输一个自字节的时间还长,在极大的影响了SPI的传输速率。其实这个空闲时间正是MCU在搬运SPI的数据。到底是不是这么回事呢,我们提升SPI的SCK速率,来继续观察。
2023-06-24 21:34:01
3194
2
原创 mosquitto搭建的MQTT服务器用户权限配置
一、前言作为项目上的配置记录,担心以后自己都忘了自己是如何配置的了。接一年前的博文,在ubuntu上成功搭建MQTT服务器后,并已经稳定使用了一年(具体的搭建过程,可以详细参考这边博文,写的非常的详细。ubuntu上搭建MQTT服务器)。现在在项目上遇到了一个这样的问题,如果我不去控制每个连接账号的权限,任意让知道了账号和密码的人都可以订阅任何主题,和发布任何主题,这显然是不可行的。例如,我为客户开放一个主题,但是他却可以修改主题,去订阅其他消息,我不想让他推送消息,可他却可以自由推送消息。好在Mosqu
2020-12-03 20:35:00
3723
1
原创 树莓派设置开机自启动python程序
好记性不如烂笔头网上只是提供了3种操作方法,我尝试过两种,将自己实验成功的一种方式记录一下,自己选用的这种也在最简单的一种。sudo vim /etc/rc.local直接在其中添加自己需要开机启动的python程序,以及路径。需要注意,一定要做exit 0 之前进行添加。记录自己遇到的问题:我不是很清楚这个rc.local脚本是开机启动什么时候调用,因为我python程序中使用了树莓派外挂载的一个2T的硬盘,我发现这样启动程序没有跑起来,我猜想可能是我自己写的python程序中设计到硬盘操作
2020-08-05 23:14:22
6578
原创 将树莓派中默认python2切换python3
好记性不如烂笔头,记录自己设置的笔记查看当前默认python版本安装好系统后,默认的python版本应该石2.7通过命令行即可查看python如下图所示。目前系统默认使用的是python2。在系统中,其实是python2,python3都安装了的。通过以下命令即可查看whereis python从中可以看出系统是带有python2.7 和 python 3.7的。切换python版本不是很建议卸载python2,万一哪天还用呢,我们只需要修改软链接即可,将默认设置为python
2020-08-05 22:55:11
9808
1
原创 树莓派开启SSH、VNC远程桌面、开启root账号以及换国内镜像源码等
好记性不如烂笔头,记录一下树莓派装机后的一些常规操作,开始SSH、VNC远程桌面以及开启root权限和换镜像源等操作
2020-08-05 22:27:04
2153
原创 Word中相邻的两页无法没有对齐的解决方法
目录自我吐槽Word中出现相邻两页无法对齐现象解决方法修改后的效果为自我吐槽好久都没更新博客了,最近太忙了,各种乱七八糟的报告压得我喘不过气。在写实验报告册的过程中,发现给的word模块中相邻两页总是对不齐,也算记录下,记性越来越差了。Word中出现相邻两页无法对齐现象如下图所示,word文档的上下两页总是对不齐,打印出来是歪的。解决方法点击布局,页面设置的下来菜单如图所示。在页面设置中,找到布局,将页眉和页脚中的奇偶页不同中的选中取消即可。修改后的效果为...
2020-07-08 20:35:05
15843
4
原创 嵌入式Linux —— 学习迷茫之路
不知不觉,博客似乎也成为了自己记录学习道路上的一些迷茫的一个小日记。可能也是自己疫情期间在家呆了4个月的时间,也可能是最近课程压力比较大,或者是最近和导师聊了下之后的想法,还有最近自己学习嵌入式linux上的一些问题,种种导致了最近心态有些变化。先自我简介下,目前某高校研一学渣,长期在各种课程中挣扎。本科时一直在搞单片机,其实现在回头看看自己以前,完全是一个出于爱好。本科也参加过很多的比赛,认...
2020-04-26 17:50:05
1123
4
原创 基于STM32的门禁系统源码分享
哈哈哈,今晚把电脑里面以前做的库存都分享出来了。给大家一个参考吧。这个的功能好像还有点多,有一年了,我也记不清了。我记得是有 一个门禁的指纹录入,门禁的RFID卡录入,显示当前刷卡或者按指纹的是谁,以及开锁功能。还可以通过短信功能发送考勤信息到手机上面。不过这些没用数据库,录入的人是存在FLASH里面的样,记不清了。需要的人自取吧。材料清单:1. 1块STM32F103...
2020-04-18 22:18:31
8170
6
原创 基于STM32坡度检测的源码
大四的时候帮同学代做的毕设源码。分享出来吧,给大家一个参考。这个有点简单,当时我都怀疑为什么这个都可以当毕设题目。功能好像是可以检测坡度显示到屏幕上,然后坡度大于多少后,就会通过蓝牙向手机发送报警信息。我自己都不好意思分享,需要同学自取吧。材料清单:1. 1块STM32F103ZET6单片机2. 1块显示屏3. 1个蓝牙模块源码链接如下链接:http...
2020-04-18 22:00:29
774
原创 基于STM32的指纹识别源码
我记得这是我去年给同学做的毕设吧,当电脑里吃灰了。分享出来吧,给大家一个参考。功能我有点记不清了,好像是可以读取指纹,录入指纹,删除指纹,判断当前指纹是哪个的。写的也很烂需要的人自取吧。材料清单:1. 1块STM32F103ZET6单片机2. 1块显示屏3. 1个AS608指纹模块4. 好像还有个矩阵键盘源码链接如下链接:https://p...
2020-04-18 21:53:16
6214
7
原创 基于STM32胎压检测程序源码
为大家奉献一个简单的源码。主要实现对汽车胎压的检测以及温度的检测,然后通过无线模块发送出去。另外一边有一个无线接收模块接收数据,一个小的显示屏显示数据。这是为同学做的一个简单的毕设,只是实现了简单的功能。需要的话就自取源码吧,自己根据注释连接实物,应该就可以直接用的。 材料清单: 1. 两块STM32F103C8T6单片机 2. 两个NRF2401无线通信模块 3. 一...
2020-04-18 21:39:31
2001
2
原创 C语言中 static 关键字的使用方面总结
现在才发现自己的C语言烂得一塌糊涂,很多基本的概念与使用自己都没有搞清,各种混淆在一起。static 关键字用于代码块内部的变量声明时这一种在平常用的比较多,下面给出了一个代码示例。static关键字修改了变量的存储属性,本来局部变量应该存放在运行堆栈中,每次函数调用时再自动创建,函数调用完毕再自动销毁。但是static 将其修改成了静态变量,其存储在内存中了,所以就算是函数调用完毕其值...
2020-04-18 21:07:25
413
原创 避免使用 int* a, b, c 这种声明指针的方式
C语言是一门灵活的语言,有时不好的编码习惯,往往会带来意想不到的错误。 首先来看看一下这种声明方式。 int* a ;和 int *a; 一个*是挨着int ,一个是挨着a。那有什么不同吗? 答案是没有,都是一个指向int类型的指针。 但是,如果是以下这种写法呢?又该如何理解。int* a, b, c; 很可能把这条语句误解为把 a,b,c 3个变...
2020-04-18 20:41:40
367
原创 ubuntu 桌面版如何设置固定IP地址
最近在学习嵌入式linux开发,需要使用网络和虚拟机中ubuntu系统进行通信调试,发现IP有时老是自动就改变了,调试极为不方便,索性就设置为固定IP算了。(做个记录,发现自己记性越来越差了,很多东西过一段时间就不知道怎么弄的了,年龄大了哎) 1.先查看一下当前的IP是多少通过其中可以知道当前IP地址为 192.168.1.102 2. 检验自己想要设置IP地址是否被占用...
2020-04-10 16:12:00
11500
原创 typedef int (*init_fnc_t)(void) 如何理解
最近在看uboot启动流程源码中看到了这一个用法,特此记录学习。截取u-boot部分代码出来如下:typedef int (*init_fnc_t)(void);static init_fnc_t init_sequence_f[] = { setup_ram_buf, setup_mon_len, initf_console_record}typedef...
2020-04-08 23:18:17
2182
原创 关于个人对UART+DMA +串口空闲中断的理解与疑惑
以下只是个人根据自己实际项目的使用在论坛里看到的一些交流的理解,欢迎大家指出其中理解错误的地方。1. 我为什么选择了 串口+DMA+空闲中断模式 在网上去搜索会看到很多的资料与简介,甚至还有许多实例程序,这里我就不在重复介绍。当初我选择这种模式来进行处理接收串口数据有以下几个原因。1. 实际中我是用串口去接收一种船舶上发出的报文数据(AIS数据),你当成GPS就行了。这种数据...
2020-03-19 17:16:48
3555
1
原创 从0到1写RT_Thread内核 ——— 临界段保护的实现
临界段通俗的解释就是一段不能被打断执行的代码,比如说再对内部FLASH进行写入时,可以加上临界段的保护,多线程对一个全局变量的操作时,加上临界段的保护可以避免一些意外的情况发生。比如这个线程在进行对此全局变量加操作,其他线程又在减操作。 对临界段的打断都是中断的产生,无论是外部中断,还是线程切换(PenSV中断)。所以对临界段的保护一般都是在这段时间内进行关中断操作。 以下为Cor...
2020-02-26 16:06:58
401
原创 RT_thread 使用4G模块Air720H对STM32进行OTA远程无线升级
接上一篇博文,使用了在线升级的STM32程序的方法。此篇博文将利用4G模块Air720H,使用AT指令集,通过HTTP协议从云端服务器下载新版固件,从而实现对STM32的远程无线程序升级。 前面关于前期准备工作,在此不再累述 具体可以参考上一篇博文...
2020-02-22 16:59:26
5877
2
原创 从0到1写RT_Thread内核 ——— 线程切换中的汇编代码分析与常用的ARM汇编指令
结合野火的<<RT_Thread内核实现与应用开发实战>> 进行学习从0开始写RT_Thread的内核,从而达到对实时系统内核的了解和对C语言和汇编的提高。
2020-02-22 16:03:06
1623
原创 快速搭建一个简易的HTTP服务器用于文件分享与下载
需要快速搭建一个简易的HTTP服务器进行文件的分享与下载。主要有以下两种方法:1. 使用python 来实现import http.serverimport socketserverPORT = 8002Handler = http.server.SimpleHTTPRequestHandlerwith socketserver.TCPServer(("", PORT...
2020-02-14 17:23:57
9280
原创 RT_thread STM32通用Bootloader 做OTA升级
项目上需要做设备的远程升级更新程序,从而避免每次更新程序时都需要去现场烧录的麻烦。从而学习探索了RT提供的OTA功能。 RT-Thread 开发团队提供了通用的 Bootloader。开发者通过该 Bootloader 即可直接使用 RT-Thread OTA 功能,轻松实现对设备端固件的管理、升级与维护。" 引用于官方资料文档。 主要参考资料: 1.官方文档资料ht...
2020-02-09 15:38:18
24082
15
原创 RT_thread 配置STM32串口后,RX悬空一直接收到古怪数据 0A 0D 回车换行
受新型冠状病毒的影响,响应国家号召,乖乖呆在家里。没事的时候学习RT_thread。 居然遇到了这样的一个奇葩问题,配置好的串口3 RX出现一直接收0A 0D 数据的问题。 现象如下: 当不开启16进制显示的时候一直在刷空白。更加奇怪的现象还有:1. 当我裸核心板时,就是RX上什么都不接,没有这种异常输出。2. 当我在RX上插上一根杜邦线(一头插RX,...
2020-02-03 19:34:01
2032
1
原创 RT_thread AT组件URC 数据处理遇到的问题
记录自己采坑的过程,不认真看函数。 采用RT_thread官网给出的 AT Client URC 数据处理的例子 。参考https://www.rt-thread.org/document/site/programming- manual/at/at/#at-client-urc主要代码如下:static void urc_conn_func(const char *dat...
2020-01-31 21:40:46
3512
1
原创 RT_thread 独立看门狗 watchdog 不断自动复位的解决方法
记录一下,这个问题把我坑惨了,搞了3天都没有解决,甚至都有点怀疑人生了。本着学习的态度跑一遍官网给的各种案例,再慢慢学习用到项目上,结果上来就闷头一棒。 可能是这点坑了自己,我并没有直接从官网上去下载最新源码。我用了之前RT_thread来重庆培训的时候拷贝给我的源码。我一看 这不有个 v4.0.1 版本的吗,一想现在不也就最高 v4.0.2。从这里开始我就入坑了,之前利用的那些串口、...
2020-01-13 18:32:33
4594
原创 RT_Thread 硬件定时器使用
初学对RT_thread 许多配置的流程不熟悉,记录一些基本的操作。下面将简单介绍如何在RT_Thread中使用硬件定时器3,来进行重复定时中断。代码使用RT_Thread 硬件定时器给的一个例子,https://www.rt-thread.org/document/site/programming-manual/device/hwtimer/hwtimer/硬件定时器设备使用示例...
2020-01-10 15:46:47
3340
1
原创 RT_Thread 文件系统的使用
官方参考资料文件系统资料 https://www.rt-thread.org/document/site/programming-manual/filesystem/filesystem/ 文件系统应用 https://www.rt-thread.org/document/site/application-note/components/dfs/an0012-dfs/整个文...
2019-11-15 17:14:57
2847
原创 RT_thread能力认证考试RCEA培训——第二周: 外设+文件系统学习
要求 熟悉RT-Thread外设的使用。 使用开发板上的SPI FLASH做文件系统,熟悉文件系统的使用,熟悉命令。可以参考的文档有:书籍、文档中心 前提 熟悉RT-Thread外设的使用。文档中心中提供很多设备的手册,开发板支持的都可以试试。 外设资料:https://www.rt-thread.org/document/site/programming-...
2019-11-11 20:07:33
697
原创 RT_Thread ——外设I2C的使用
主要内容参考官方文档https://www.rt-thread.org/document/site/programming-manual/device/i2c/i2c/官方文档中采用的是通过IO口模拟来实现I2C(即软件I2C),软件I2C相对于硬件I2C有着更好的移植性。通过env配置打开I2C 有时候打开env配置时,会发现并没有I2C这个选型,如下图所示: 这...
2019-11-11 20:05:07
4368
原创 RT_Thread 使用UART+DMA接收导致数据分包输出问题
直接使用官方给出的例子,具体参考https://www.rt-thread.org/document/site/programming-manual/device/uart/uart//* * 程序清单:这是一个串口设备 DMA 接收使用例程 * 例程导出了 uart_dma_sample 命令到控制终端 * 命令调用格式:uart_dma_sample uart3 * 命令解释:...
2019-11-11 14:59:44
2634
原创 Air720H模块MQTT协议的AT指令流程
之前项目需要使用MQTT协议进行数据传输,初期选用的是SIM7600CE模块,确实花了很多的时间去调试稳定性,最后也调通了(可以参考之前的博客SIM7600CE MQTT),后面经过对比后还是选择了Air720H模块,不仅仅价格便宜了一半,而且超级稳定。目前使用中的设备,最多的一天要上传30W条数据上来,一个月流量大约1.5G。 具体AT指令流程如下://开机模块自检 输出以下信息...
2019-11-06 11:21:04
3933
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人