
stm32
文章平均质量分 65
k-kun
技术项目请私信联系我
展开
-
stm32f103使用hal库函数读写内部flash
在写数据的逻辑上是比较简单的,因为hal库将底层已经进行了封装,步骤就是解锁flash->擦除要写入的扇区->清除CR寄存器的PER位(这个本来应该在擦除里面的,基础库就是这样做的,但HAL库里面没写)->写入数据->上锁flash。原创 2023-12-07 17:32:39 · 4072 阅读 · 0 评论 -
stm32f103使用RT-Thread组件fal读写内部flash
本次使用RT-Thread studio编写,使用为5.02完整版,目的是将内部flash进行分区,可以直接在内部flash存储数据。原创 2023-12-05 10:57:20 · 1949 阅读 · 0 评论 -
rt-thread studio中新建5.02版本报错
先吐槽一下,rt-thread studio出现BUG真多,好多时间都是在找BUG,但里面用好多控件还是挺好用的,真是又爱又恨,所以一般使用功能不多的话还是用keil多一点。创建5.02版本工程之后直接进行编译,直接会报下面这个错误:资源 路径 位置 类型 expected '=', ',', ';', 'asm' or '__attribute__' before 'void' board.c /rt1035.02/driver原创 2023-12-04 11:35:37 · 858 阅读 · 0 评论 -
rt-thread studio中新建5.0不能用
在使用RT-Thread studio创建新工程5.0版本的时候,结果发现新建完成之后程序不能正常运行,但是创建4.10版本的时候却能运行,那肯定是新版本出现了BUG。原创 2023-12-04 11:18:16 · 683 阅读 · 0 评论 -
stm32一种步进电机查表法驱动
对于stm32芯片来说,步进电机的驱动由于要在中断中不断计算下一次脉冲的时间而极其消耗算力,使用计算的方法对于芯片的算法消耗更高,特别是在f1这种算力比较低的芯片上,这时候使用查表法是一种比较靠谱的方式,这里只给出部分代码思路。当然使用查表法的缺点就是在算力够用的情况下相比计算会没有那么平滑,但是在使用更多电机的时候查表法表现更好,计算会由于算力不足出现卡顿的情况。原创 2023-12-01 15:54:17 · 1048 阅读 · 0 评论 -
STM32f407掉电检测PVD功能
最近在做一个项目需要用到掉电检测,然后保存数据,发现stm自带有PVD功能,就拿来用一下做个记录吧。本文测试基于stm32f407板子。原创 2023-11-25 09:35:59 · 1413 阅读 · 0 评论 -
RT_ASSERT断言中#号的作用
在嵌入式操作系统中经常会看到RT_ASSERT断言的存在,但在对这个断言分析的时候,遇到#EX这个符号,实在看不明白作用,于是只能上网找资料慢慢分析了。原创 2023-11-22 16:09:34 · 739 阅读 · 0 评论 -
FreeRTOS基础(四)动态任务创建
动态创建任务就是任务的任务控制块以及任务的栈空间所需的内存,均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,我们将动态任务创建分为三步,第一就是将宏configSUPPORT_DYNAMIC_ALLOCATION 配置为 1 ,这个是动态创建线程的config配置,第二步是定义函数入口参数,第三步是编写任务函数。原创 2023-11-14 14:51:32 · 351 阅读 · 0 评论 -
FreeRTOS基础(三)FreeRTOSConfig.h文件详解
FreeRTOS 的配置基本是通过在 FreeRTOSConfig.h 中使用“#define”这样的语句来定义宏定义实现的。在 FreeRTOS 的官方 demo 中,每个工程都有一个 FreeRTOSConfig.h 文件,我们在使用的时候可以参考这个文件,甚至直接复制粘贴使用。在cubeMX生成的时候选择的配置其实也是更改FreeRTOSConfig.h文件。原创 2023-11-11 09:57:28 · 613 阅读 · 0 评论 -
FreeRTOS基础(二)cubeMX生成FreeRTOS
在cubeMX出现之前,移植操作系统一般都是手动移植的,但这个方法效率低,而且不容易查找错误,那么有了st公司的cubeMX之后,想要使用什么操作系统直接一键生成就好了,简单好用,所以一般情况均使用cubeMX直接生成操作系统。原创 2023-11-10 17:47:00 · 289 阅读 · 0 评论 -
FreeRTOS基础(一)FreeRTOS概念
实时操作系统全名为real time os,简称RTOS,强调的是实时性,其主要作用就是将单片机运行的时间分成一个一个的时间片,再根据调度器将时间片分成一个个任务,再将延时函数处理成将任务挂起,这样就不会占用单片机资源。原创 2023-11-09 17:17:26 · 373 阅读 · 0 评论 -
MATLAB生成stm32程序
在学习PID的时候,突然看到这么一片文章,使用STM32MatTarget和stm32cube生成嵌入式算法代码,就直接去官网搜了一下,结果STM32MatTarget 4.4.2这个包已经不受官网支持了,但却发现了替代的东西,那就在这个基础上进行生成stm32代码吧。由于我手边没有带有USB资源stm32f4的板子,所以就没办法直接下载,在我修改GPIO为我自己板子呼吸灯的GPIO后,使用直接生成的.hex文件下载到板子中,程序正常运行,完成。原创 2023-08-29 15:52:28 · 1683 阅读 · 1 评论 -
rt-thread完整版printf函数的映射
这个函数就可以通过字符uart1查找到串口1的设备了,当然前提还是串口1进行初始化挂载到设备树上了。但这明显不是我想要的,我想要的是将不同的打印函数映射到不同的串口上面,rt_kprintf函数好说,只需要一步步去查看调用就能找到最终在那个串口进行打印的,但printf函数明显是调用的库函数,这个不太好查找。在使用rt-thread nano版本的时候,我们只使用了rt-thread的内核,所以串口函数都是自己写的,但在使用完整版的时候,串口是挂载在设备上面的,那么怎么将打印函数映射到自己想要的串口上呢。原创 2023-08-01 11:07:33 · 1275 阅读 · 0 评论 -
stm32 keil宏定义的使用
在编写代码的时候经常会用到一些宏定义,使用宏定义可以使我们的代码更加规范,而且使用选择类型的宏定义还可以使我们编写出来的代码更小,也更利于程序的移植与修改。常用的一些宏定义有#define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif,还有一个找了好久才找到的defined,没错,这个前面没有加#。#define 定义一个预处理宏#undef 取消宏的定义#if 编译预处理中的条件命令,相当于C语法中的if语句。原创 2023-07-10 10:04:23 · 2952 阅读 · 0 评论 -
stm32存储float数据到内存
在使用内存存储数据的时候,有时候发现存储的数据不是整数,但内存里的数字都是二进制的文件,所以需要一种可以将float存储为二进制并且可以读出来的方法。原创 2023-07-08 17:42:03 · 1756 阅读 · 0 评论 -
MDK keil警告解决合集
原因是变量可能不会被初始化而导致错误,将变量声明时赋予初始值即可。原创 2023-06-08 10:59:36 · 1549 阅读 · 0 评论 -
rt-thread studio显示当前工程已损坏/当前设备名称为空
我今天新换了电脑,新安装了rt-thread studio后重新导入文件,点击下载的时候总是出现设备名为空,去网上找原因的时候有建议重装studio,结果重装了也还是这样,那就只能自己慢慢找原因了,也写下这篇文章,有遇到一样问题的可以参考下。在设置的debugger里面看到有一个device name,那就看下后面写的支持的设备名都是什么。点击打开网站发现原来写的是支持的架构,我使用的是M4的架构,那就写上cortex-M4,问题解决。原创 2023-05-05 14:15:08 · 500 阅读 · 0 评论 -
RT-Thread Studio编译错误及解决方法
RT-Thread Studio编译错误及解决方法原创 2023-03-29 10:31:09 · 4650 阅读 · 2 评论 -
RT-Thread Studio编译警告及解决方法
RT-Thread Studio编译警告及解决方法原创 2023-03-29 09:58:37 · 788 阅读 · 0 评论 -
rt-thread手动移植时线程开启就会卡死
rt-thread移植原创 2023-03-10 14:35:09 · 541 阅读 · 0 评论 -
我的笔记——立即数,循环右移
什么是立即数百度上是这么说的:立即数通常是指在立即寻址方式指令中给出的数。可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。那看的是一脸懵,后面以ARM汇编编译器为例:立即数方式:每个立即数由一个8位的常数循环右移偶数位得到。其中循环右移的位数由一个4位二进制的两倍表示。如果立即数记作,8位常数记作immed_8,4位的循环右移值记作rotate_imm,则有:=immed_8循环右移(2*rotate_imm)公式给的不错,但对原创 2021-10-29 02:49:12 · 4121 阅读 · 3 评论 -
小白笔记——IIC详解
关于stm32上IIC定义硬件连接IIC的时序定义IIC为Inter-Integrated Circuit,其实应该为IICbus的简称,所以中文名为集成电路总线,是一种串行通信总线,使用的是多主从架构,一般用于低速通信,是由飞利浦公司在1980年提出,I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。IIC可以在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传原创 2021-03-17 20:47:59 · 3522 阅读 · 7 评论