自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 【FreeRTOS快速入门-02】任务管理

钩子函数的作用有这些: 执行一些低优先级的、后台的、需要连续执行的函数 测量系统的空闲时间:空闲任务能被执行就意味着所有的高优先级任务都停止了,所以测量空闲任 务占据的时间,就可以算出处理器占用率。这个要先讲一下时间片的概念。rtos将时间分为固定的时间片,时间片是最小的任务执行周期,通过轮转时间片上运行的任务来实现并发。前面说了,空闲任务中会执行真正的删除任务操作,因此一个系统中如果没有空闲任务执行的机会,很可能就崩了。任务删除要看是否启用空闲任务,如果空闲任务没有执行,那么任务删除实际上是没有执行的,

2024-10-17 01:05:10 721

原创 【FreeRTOS快速入门-01】内存管理

freertos中对内存做了管理。分为4种方式。不同方式有不同的优缺点,用户可以根据自己的需求来选择自己的内存管理模型。freertos中可以选择若干种内存分配方式,但一般而言就是看内存空间是否连续,来选择heap4还是heap5.

2024-10-17 00:31:57 324

原创 【FreeRTOS快速入门-00】简介

最近在学习Free-RTOS,为了更好地理解与掌握rtos相关原理,我将学习的过程记录下来,做成系列文档,巩固记忆与方便后续回看。后面会将这篇文章作文总览,将后续系列文章做成索引放到下面。

2024-10-17 00:31:48 96

原创 stm32 cubeide(类Eclipse )提示报错”undefined reference to xxx “找不到文件 解决方法

3、若持续报错,检查是否添加了源文件夹。常见于手动添加了文件夹,但并未包含到工程中。1、查看调用的文件内是否引用该函数原型所属文件。若没有,需要添加引用的文件。2、是否包含该库文件。

2024-10-06 17:52:14 232

原创 自用嵌入式代码注释模板。可用于cubeide 自动生成模板配置

本模板适配Doxygen,可用作工程新建文件模板,统一编码风格。

2024-10-05 16:37:30 397

原创 理解“电角度”

在学习霍尔传感器时,接触到一个新的概念,“电角度”。不知道在讲什么,为什么出现一个电角度的概念,转多少度就说多少度呗。因为我们在计算实际转过的角度的时候,我们是根据霍尔传感器所经过的高低电平周期来计算的,因此我们需要通过霍尔传感器的周期来计算实际转过的角度。所以说,这个电角度就是单独看霍尔传感器所经历的周期个数。所以抽象一下,转一圈 = 极对数 * 霍尔传感器一个高低周期的角度。也就是 实际转的圈数 = 极对数 * 霍尔传感器n个高低周期的角度。由图所示,转一圈在霍尔传感器的每一相上代表的就是一高一低。

2024-09-29 13:36:27 204

原创 stm32 移植lettershell 通过串口空闲中断+dma 初步实现

尝试移植lettershell,但是仿照其他教程,移植好文件后,通过正常串口不带中断收发,数据异常,只有到波特率降低到9600才能正常显示,并且Shell软件无法交互。因此怀疑是中断处理时间太长,尝试降低串口中断执行的时间,减少阻塞程度。因此采用串口 空闲中断 + DMA 方式。

2024-09-24 00:33:23 521

原创 C++工程引入C库产生的问题

但是库函数也引用了,函数也高亮提示了,编译就报错,不知道什么问题。突然想起来,引用的库是c的,项目是C++的,所以,要在引用的库,加上。最近在写公司代码的时候,移植新的代码。这样程序就能编译通过了。

2024-03-22 16:24:44 238 1

原创 解决Ubuntu20.04桌面右上角没有网络连接图标

参考:http://t.csdnimg.cn/rbVsY

2024-02-01 10:18:33 1557 1

原创 Linux 更改网口名称的一种方法

网口名称取决于选用什么命名规则,如果是内核命名规则,那就是由初始化顺序决定的,谁先连上谁就是eth0,而在同初始化优先级下,网口初始化顺序由编译顺序决定,通过修改设备树中的位置,即可达到更改编译顺序的目的。各位如果在初始化过程中遇到了异常现象,那么可以考虑可能是初始化顺序带来的影响。

2024-01-04 09:57:22 845 1

原创 nxp RT1176 双核MCU编译与烧录 CubeMX

那么M7就会关联上M4的工程代码,编译的话就编译主核(M7)的代码,它会顺便编译M4的代码。烧录跟编译同理,烧录M7的代码也会把M4的烧进去。如果要运行双核的代码,那么你需要两个工程文件,分别为M7和M4的。通常倒入SDK的时候就能见到,例程都分为M7版本和M4版本的。之前接触的都是单核的MCU这次 rt1176是双核MCU 分为M7大核和一个M4小核。右边Slave xxxx 栏下选择下图中格式的M4核文件(注意是M4核工程下的文件)右键主核(M7)工程找到属性点击,出现如上图所示的界面,依次点击。

2023-11-24 17:42:13 1146 1

原创 为什么tcp需要四次挥手而不是和握手一样是三次?

为什么tcp是四次挥手不是三次,或者说为什么tcp不能是四次握手?tcp不是四次挥手,而是大概率四次挥手。原因是tcp的重发机制和缓冲机制。tcp挥手时需要对缓冲区处理,需要等待一段时间,所以先让客户端等待一段时间,所以造成了四次挥手的机制。

2023-11-04 16:51:25 157 1

原创 stm32 cube IDE 官网登陆后 不跳下载栏导致无法下载的现象

尝试多次,并且重启后再次尝试也是这样。所以,如果下载cubeIDE,不要登录,直接填邮箱下载就好了。目前是没有登录的状态,进入页面一小会就跳出下载栏。{ps:下载个软件搞了十多分钟,整的我好烦}无论等多久这边也不会跳出下载栏。

2023-09-25 10:07:24 695 1

原创 Codesys 的仿真模式时间极其不准确

搞了大半天一直以为自己代码哪里有问题,后面才发现的仿真模式下有问题。仅仅1秒中的偏差就有至少40% 而且还不是固定偏差,太离谱了。

2023-09-14 15:15:32 278 1

原创 浅谈项目主控芯片选型

这一点结合前面的厂商稳定性来讲,比如很多单片机的芯片都是兼容一款市面上比较通用的芯片的引脚定义。比如很多厂商的单片机都兼容stm32F103 的引脚,这一点一方面是国产厂商方便用户国产化替代,另一方面是就是方便用户在缺芯的时候,反复横跳。厂商的稳定性是,可能有的厂商的芯片会出现蓄意断供的情况,造成不可预料的影响。首先,芯片选型之前,你需要对你项目的需求非常明确,这样你才能对市面上海量的芯片做选择与切分。·容量,这部分一般来说,市面上的容量一般都符合要求,除非你跑字库,或者协议栈什么的。

2023-09-03 17:49:18 1016

原创 keil编译完成后MDK输出的大小信息都是什么含义

首先点击编译按键后,生成的是hex文件,单片机都是通过烧写hex文件来更新代码的,结合里面的关键词,因此这个“Program Size” 可能是跟hex文件有关。2、c语言中的“内存分区”中的内存,指的是ram,不是rom,结合1可以得出结论,单片机在启动后运行前,首先要将程序从rom搬运到ram中,不然没法运行的。从上面可以看出,单片机运行需要搬运哪些数据,首先排除堆栈,因为栈里包含的都是局部变量,过程变量,都是随用随开辟,而堆是专门给编程人员开辟的自由空间,因此排除掉,那么还有两个分区呢?

2023-08-29 13:59:05 541

原创 关于DMA占用总线情况的探究

DMA传输中,总线一半可用,那么是不是会影响CPU 的运行速度?那么ADC会经过总线到SRAM,在数据经过总线的时候,CPU就无法与总线交互,因此M3核采取分时复用,让CPU也有一半的时间能够使用总线。最近在研究DMA,我对DMA的认识是:一个搬运工,让CPU减少搬运数据的操作,腾出时间多做运算,提高运行速度。我对上面功能描述的理解是这样的:比如用DMA来将ADC采集模拟量到SRAM。但对手册中的一段对DMA总线占用情况的描述不太清楚。

2023-08-28 16:20:18 895 1

原创 什么是面向对象

让我想到了大一,学c++的时候,那是我学的第一门编程语言,当时电脑都没有,对计算机的认识也仅仅比一般人强一些,知道一些显卡型号,电脑选购什么的,但对于计算机体系结构其实是不知道的,所以导致我在学面向对象之前,c的部分,就很蒙,而且从c立马转向面向对象,导致没有任何编程经验的人要去理解面向对象,那简直就是不可能的事情。而现在,大学毕业有1个月了,才渐渐明白。- 知乎 https://www.zhihu.com/question/433723917/answer/1615431045。

2023-08-17 14:16:10 78 1

原创 谈一谈为什么编程语言都需要“变量类型”

为什么需要变量类型,回顾一下计算机的结构:计算机有处理单元,总线,内存,IO组成,处理单元基本做的事情就是输入,处理,输出,但是存储器面对的都是01010101010二进制,我拿的时候我怎么知道要拿多少,所以就必须定义一个“拿”的范围,我要拿多少来处理,处理完成后,我需要给总线上放多少位数据,所以这个才是变量类型诞生的根本原因,这是从娘胎里带来的。所以问:有没有不需要类型的编程语言,答案是“有,但是不现实,没必要”。最近越来越感觉到,想要了解一个类型的编程语言,最后都会回到计算机硬件的结构特性上。

2023-08-17 13:00:37 155 1

原创 单片机AT32代码移植后芯片烧录一次后,无法再次烧录

使用官方开发板调试好代码后准备移植到项目用的同款芯片板子,第一次连接后keil能够识别到芯片,但是第二次准备烧录时,芯片怎么都识别不出来。以为是芯片问题,再次换过芯片后还是烧录一次后就识别不到芯片了。看过官网上的相关文档FAQ,仍然无法解决。

2023-08-15 10:18:24 1126

原创 关于keil5.37target栏空白、找不到编译器、启动错误弹窗的解决方法

Warning RegisteredARM Compiler Verson notfoundin path ARMCC Update the configuration of multiple ARM Compiler inManage Project ltems under Folders/Extensions ARM Compiler

2022-06-16 13:13:49 8453 2

原创 关于CCleaner 卸载程序删除所有软件文件的现象

现象描述:CCleaner的卸载程序将所有的软件删除了如图:卸载程序把/software目录下的文件 从A开头已经删到了M开头原因:1、安装时,没有在/software目录下新建一个软件专有目录,而CCleaner安装程序选择安装路径时,它是不会自动再创建一个专门的文件夹存放软件文件的。所以实际上软件安装在了/software里,而不是/software/CCleaner。2、最离谱的是CCleaner的卸载程序的逻辑是删除安装目录下的所有文件(vmware的卸载程序就不是),如

2022-05-06 11:06:14 2573 3

原创 常用转义字符记忆,看了基本不会忘

之前做串口通信和写log的时候,经常记不得后面是加/r/n 还是/n/r 。每到这个时候总要问一遍自己:“/n是啥来着/r是啥来着” 卧槽怎么又没记住。 遂这次从命名出发,彻底记住每个转义字符的意思。转义字符来自ASCII表比较常用的也就这几个:/r /t /b /n /r\tTAB制表符\bBACKSPACE退格符\nNewLine换行符(本意:换一个新行,但列位...

2022-05-04 12:52:25 868

原创 第二个账号,全新的开始

由于之前的账号手机号绑定的是流量卡,流量卡没了之后就彻底作废了,很遗憾。所以就从这个账号陆续上传一些自己的学习记录与碎碎念吧。

2022-05-04 12:38:17 191

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除