自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux学习笔记(4)

首先,第一行中,main文件的生成依赖于main.o、input.o、calcu.o三个文件,当makefile执行时,如果发现系统中没有这些.o文件,就会在makefile中搜寻是否有生成这些.o文件的语句,可以看到,3~8行就负责生成这些.o文件,如main.o:main.c语句,就表示main.o文件依赖于main.c文件生成。字符串必须加上双引号;使用“=”在给变量的赋值的时候,不一定要用已经定义好的值,也可以使用后面定义的值,也就是变量的真实值取决于它所引用的变量的最后一次有效值。

2023-11-16 17:44:06 45

原创 Linux学习笔记(3)

符号链接类似Windows下的快捷方式,符号链接也叫做软链接,软链接要用的多。Linux有两种链接文件:符号链接(软链接)和硬链接,符号链接类似Windows下的快捷方式。可以通过ln命令创建链接文件,ln-s将创建软链接,不带后缀将直接创建硬链接,ln-f将强制创建链接文件,如果目标存在,则会先删除掉目标文件,再建立连接文件。①、具有相同inode的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。②、对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。

2023-11-15 16:19:44 46

原创 Linux学习笔记(2)

在插入U盘后,终端内进入到/dev下,输入ls sd*指令,可以看到与U盘关联的/dev/sdb、以及/dev/sdb1。其中,/dev/sdb表示U盘,而/dev/sdb1表示U盘的第一个分区。/usr usr不是user的缩写,而是UNIX Software Resource的缩写,存放于系统用户有关的文件,会占用很大的存储空间!而在Ubuntu系统里,带有压缩工具gzip,该工具负责压缩和解压缩.gz格式的压缩包,通过输入gzip --help命令可以获得更多的帮助信息。

2023-11-14 19:25:52 68

原创 Linux学习笔记(1)

Linux中输入命令还具有自动补全的功能,按Tab键即可自动补全当前要输入的命令,具体的原理是,查找该目录下与输入相近的名称,并自动补全,打个比方,在当前home文件夹下只有一个文件zxh,那么按下Tab就将自动补全。在Linux中,当执行某些操作时,需要用户拥有高权限,这时,就需要使用sudo命令来切换至超级用户,可以理解为在安卓中装软件时需要root一样。安装Ubuntu操作系统时,点击VMware上的编辑虚拟机设置,选择CD/DVD,使用ISO映像文件,选择已经下载好的ISO文件。

2023-11-13 14:56:58 53

原创 FreeRTOS学习笔记(10)-完结

该函数只有一个形参,即申请的内存大小,以字节为单位。有一个返回值,当申请内存成功时,返回一个指向已分配大小的内存的指针,当申请内存失败时,返回NULL。heap_5 内存管理算法是在 heap_4 内存管理算法的基础上实现的,但是 heap_5 内存管理算法在 heap_4 内存管理算法的基础上。此宏用于定义需要在系统退出低功耗模式后执行的事务,如:退出低功耗后开启之前关闭的外设时钟,以使系统能够正常运行。由于多次申请和释放内存,但释放的内存无法与相邻的空闲内存合并,就导致某些需要大内存的任务无法被分配。

2023-11-09 18:43:56 131

原创 FreeRTOS学习笔记(9)

提供了许多软件定时器相关的 API 函数,这些 API 函数大多都是往定时器的队列中写入消息(发送命令),这个队列叫做软件定时器命令队列,是提供给 FreeRTOS 中的软件定时器使用的,用户是不能直接访问的。芯片本身自带的定时器模块,硬件定时器的精度一般很高,每次在定时时间到达之后就会自动触发一个中断,用户在中断服务函数中处理信息。是指具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数(也称超时函数),用户在回调函数中处理信息。2、调用超时软件定时器的超时回调函数。

2023-11-08 15:19:00 33

原创 FreeRTOS学习笔记(8)

一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集。需要注意的是,队列在被添加到队列集之前,队列中不能有有效的消息。一个事件标志组使用32位无符号数据类型变量存储事件标志,其中。高8位用作存储事件标志组的控制信息,低24位用作存储事件标志。事件标志组:一组事件标志位的集合,可以简单理解为一个整数。需要注意的是,队列在从队列集移除之前,必须没有有效的消息。事件标志位:用一个位来表示事件是否发生。2、每一位事件的含义由用户自己决定。

2023-11-06 17:29:31 33

原创 FreeRTOS学习笔记(7)

假设存在三个任务H、M、L,他们的优先级依次从高到低,此时有一个二值信号量Q,首先该二值信号量被L获取, 当H由阻塞态进入就绪态时,H抢占L,任务H运行,而任务H此时同样需要获取这个二值信号量Q,但此时Q以及被任务L获取,那么任务H就会因为获取不到Q而进入阻塞态,此时,任务M进入就绪态并抢占任务L,由于任务M的优先级较高,任务M运行,并且由于优先级高于他的任务H一直阻塞,任务M得以完整的运行,直到任务M运行完毕,任务L才能继续运行,而只有任务L释放信号量后,任务H才能运行。当任务使用完资源后,

2023-11-05 13:39:06 28

原创 FreeRTOS学习笔记(6)

那么,当多个任务写入消息给一个“满队列”时,这些任务均会进入阻塞态,并等待同一个队列的空间。在上述情况中,如果任务1执行到②时,被优先级更高的任务2所打断,那么最后执行的效果可能是a的最终值为1,这就与我们想要的结果不符。,即将数据拷贝到队列中进行传递, FreeRTOS采用拷贝数据传递,也可以传递指针,所以在传递较大的数据的时候采用指针传递(的数据存储缓冲机制,即先入队的数据会先从队列中被读取,FreeRTOS中也可以配置为“后进先出”LIFO方式;可分为任务级和中断级,前两个为任务级、后两个为中断级。

2023-11-02 17:38:13 50 1

原创 FreeRTOS学习笔记(5)

所谓的相对延时与绝对延时,可以理解为当一个500ms的任务执行时,相对延时是从调用函数vTaskDelay()后才开始计时500ms,而绝对延时则是这一整个任务加起来共执行500ms。, {r4-r6} /* 任务栈r0地址由低到高,将r0存储地址里面的内容手动加载到 CPU寄存器r4、r5、r6 */, {r4-r6} } /* r0的存储地址由高到低递减,将r4、r5、r6里的内容存储到r0的任务栈里面。-绝对延时,指将整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务。

2023-11-01 16:10:20 157 1

原创 FreeRTOS学习笔记(4)

继续插入列表项3,但列表项3的值为50,此时可以看到,列表项1的指向下一个指向的是列表项3,列表项2的指向下一个是末尾列表项,列表项3的指向下一个是列表项2,这就实现了列表项的升序排列。在上面的基础上,在插入值为60的列表项2,此时可以看到,列表项1的指向下一个指向的是列表项2,列表项2的指向下一个是末尾列表项。列表项的互指:可以看到,当将列表项1插入列表后,列表项1的指向上一个指向的是末尾列表项,下一个也同样,末尾列表项同理。用于将待插入列表的列表项按照列表项值升序进行排序,有序地插入到列表中。

2023-10-29 11:02:59 47 1

原创 FreeRTOS学习笔记(3)

需要注意的是,当使用延时关中断时,不能调用系统的延时函数,只能使用用户自定义的delay函数,因为当调用系统延时函数时,将操作临界区,调用中断函数,打开中断。中断中恢复被挂起函数: BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume)什么时候需要进行任务切换:当恢复后的任务的优先级大于当前正在执行的任务的优先级,就需要进行任务的切换。无论优先级如何,被挂起的任务都将不再被执行,直到任务被恢复。挂起:挂起任务类似暂停,可恢复;删除任务,无法恢复。

2023-10-25 15:01:42 48 1

原创 FreeRTOS学习笔记(2)

注意:如果不进入临界区,当程序运行时,将按照task1、task2、task3的顺序执行,因为尽管task3的优先级最高,但是当执行freertos_demo函数时,首先将创建3个task,而在创建第一个task时,由于其优先级高于start_task,当进入阻塞态时,将优先执行task1,task2同理,所以将会先进行一次执行task1->task2->task3的顺序执行。4、更新下个任务的阻塞时间-更新下一个任务的阻塞超时时间,以防被删除的任务就是下一个阻塞超时的任务。

2023-10-24 13:56:08 42 1

原创 FreeRTOS学习笔记(1)

调度器就是使用相关的调度算法来决定当前需要执行的哪个任务FreeRTOS支持三种任务调度方式:1、抢占式调度:针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。2、时间片调度:主要针对优先级相同的任务,当多个任务的优先级相同时, 任务调度器会在每一次系统时钟节拍到的时候切换任务。3、协程式调度:当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务 FreeRTOS现在虽然还支持,但是官方已经表示不再更新协程式调度。

2023-10-13 11:50:41 95

原创 STM32学习笔记(HAL库)-2023.10.06

3、时钟系统配置:PLL(锁相环)、SYSCLK、AHB、APB1、APB2。5、Cortex内核配置:SYS(DEBUG)配置、NVIC(优先级分组)。在编写代码时需要注意,要写在规定的区域,否则在下次生成时,会被覆盖。然后,对Cortex内核进行配置,将Debug配置为SWD。6、生成工程源码:设置工程,MDK等,最后生成代码工程。2、时钟模块配置:设置HSE、LSE、MCO。1、工程初步建立:新建工程,选择芯片型号。点击Generate Code,生成代码。4、GPIO引脚配置:如LED的IO口等。

2023-10-06 15:02:16 49 1

原创 STM32个人学习笔记(HAL库)-2023.10.05

MAP文件是MDK编译代码后,产生的集程序、数据及IO空间的一种映射列表文件,简单说就是包括了:各种.c文件、函数、符号等的地址、大小、引用关系等信息。其他:.crf、.d、.dep、.lnp、.lst、.htm、.build_log.htm等一般用不到。.o:可重定向对象文件,每个.c/.s文件都对应一个.o文件,由.c和.s生成。6、调用__main-标准C库函数,执行一系列设置,最终调用main函数。.axf:可执行对象文件,由.o文件链接生成,仿真的时候需要用到此文件。MSP指针会自动+1。

2023-10-06 11:13:06 60 1

原创 STM32个人学习笔记(标准库)-2023.10.04

四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select) 同步,全双工。主机另外引出多条SS控制线,分别接到各从机的SS引脚,通过将SS引脚置低电平,指定通信的对象,在同一时刻,只允许有一台设备进行通信。SPI的数据收发,采用寄存器移位的方式,一位一位的将数据从从机-主机迁移。所有SPI设备的SCK、MOSI、MISO分别连在一起。2、SPI设计较简单。

2023-10-05 16:02:13 32

原创 STM32个人学习笔记(标准库)-2023.10.3

接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)。发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节。I2C从机地址:1101000(AD0=0)

2023-10-03 15:36:50 100

原创 STM32个人学习笔记(标准库)-2023.09.23

通信接口:通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。通信协议:制定通信的规则,通信双方按照协议规则进行数据收发。串口通信:串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力。串口的硬件电路:简单双向串口通信有两根通信线(发送端TX和接收端RX)TX与RX要交叉连接。

2023-09-25 22:20:42 129 1

原创 STM32个人学习笔记(标准库)-2023.09.22

ADC(Analog-Digital Converter)模拟-数字转换器(可以看做是电压表,将引脚的电压值测出,并放在一个变量内ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围逐次逼近型ADC:

2023-09-23 15:14:18 87 1

原创 STM32个人学习笔记(标准库)-2023.09.20

OC(Output Compare)输出比较输出比较可以通过比较CNT(时基单元计数器)与CCR寄存器(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出的功能PWM(Pulse Width Modulation)脉冲宽度调制在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。

2023-09-21 19:42:24 199

原创 STM32个人学习笔记(标准库)-2023.09.19

目前主流的程序调试方式主要有三种:1、串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息。2、显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上。3、Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能。下面来看看OLED显示屏的介绍:OLED(Organic Light Emitting Diode):有机发光二极管。OLED显示屏:性能优异的新型显示屏,具有功耗低(相比LCD屏幕,OLED屏幕较为省电。

2023-09-20 12:20:18 157 1

原创 STM32个人学习笔记(标准库)-2023.09.15

(2)一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。当数据寄存器为0,NMOS导通、PMOS断开,输出直接接至VDD,输出为低电平。

2023-09-17 18:21:20 80 1

原创 STM32个人学习笔记(标准库)-2023.09.15

4.打开固件库文件夹中的Libraries->CMSIS->DeviceSupport->ST->STM32F10X->startup->arm,其中的文件就是STM32的启动文件,复制所有的启动文件,回到工程模板文件夹,新建一个文件夹,命名为Start,将启动文件粘贴进文件夹内。9.新建一个User文件夹,再在Keil中添加一个新组,也叫User,在User中添加新文件,选择C文件,名称为main,并将下面的路径选择User文件夹。打开工程文件夹,新建一个文件夹取名为Library,用于存放库函数。

2023-09-15 20:00:28 231

原创 C语言指针的相关知识(2023.09.09)

当main函数执行到调用Add函数时,main函数将会暂停,而在栈上会分配Add函数执行所需要的内存,而之前说过,在任何时间,在执行的函数都会是栈顶的那个函数,所以main函数将等待Add函数完成返回。首先,我们需要理解程序的定义:程序可以认为是一组顺序的计算机指令集合,我们可以使用C语言进行编程,但是在计算机的底层,他们最终都将以二进制的格式执行,任何需要被执行的程序都将被编码为2进制格式。可以看到,当程序运行后,Add函数中a的值(main函数中a的地址)与main函数中a的地址的结果是一模一样的。

2023-09-09 16:53:08 32

原创 C语言指针的相关知识(2023.09.08)

每天学习进步一点,收获多一点。

2023-09-08 19:47:53 33

原创 C语言指针的相关知识(2023.09.07)

每天学习进步一点,向着高薪工作努力。一、指针的基本介绍假设定义了一个a变量,例如:int a,那么当程序执行时,计算机将为这个特定的变量分配一定的存储空间,而分配的具体存储空间大小则取决于这个变量的类型,同时也取决于编译器。例如:int-4 byte;指针的概念:指针是一个变量,它存放着另一个变量的地址。这是因为,int变量占据4个字节,当实行+1操作时,实际上地址+4;二、指针的类型为什么不能只使用一个通用的类型来进行存储呢?因为指针不及能用来存储内存地址,

2023-09-07 19:06:22 25

原创 STM32个人学习笔记(2023.09.06)

1、SCM单片微型计算机阶段。2、MCU微控制器阶段。3、SOC嵌入式系统阶段。1.主频/FLASH/SRAM 72MHZ/512KB/64KB。3.IO引脚接入电压范围:CMOS端口:-0.3V~3.6V。2.工作电压/最大电流 2.0~3.6V/150mA。1,BOOT0接高电平,BOOT1接低电平。1,BOOT0接低电平,BOOT1接任意。兼容5V端口:-0.3V~5.5V。4.单个引脚的最大电流:25mA。1、低功耗、低成本、高性能。2、支持16/32位指令集。3、拥有众多的合作伙伴。

2023-09-06 20:17:22 52 1

空空如也

空空如也

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

TA关注的人

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