自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 学习过程~

1. C语言2. stm32学习(裸机+freertos/IIC/SPI/UART)3. linux4. c++5. qt

2022-02-17 13:48:46 237

原创 记录点点滴滴(2021.12.15)

此博客会记录一些平时学习的东西和遇到的问题,努力!!!北漂。。。

2021-12-15 11:19:28 253 1

原创 FreeRTOS学习笔记<常用的API函数>

任务相关API函数函数 描述 uxTaskPriorityGet() 查询某个任务的优先级 vTaskPrioritySet() 改变某个任务的优先级 uxTaskGetSystemState() 获取系统中任务状态 vTaskGetInfo() 获取某个任务的信息 xTaskGetApplicationTaskTag() 获取某个任务的标签(Tag)值 xTaskGetCurrentTaskHandle() 获取当前正在运行的任务的句柄

2022-05-09 15:39:03 405

原创 FreeRTOS学习笔记<列表和列表项>

为什么引入这么一个概念?FreeRTOS是一个多任务系统,为了跟踪任务、处于就绪、挂起和延时的任务,都会被挂接到各自的列表上,所以列表和任务是息息相关的。概念FreeRTOS列表使用指针指向列表项,一个列表(list)下可能有多个列表项(list item),每个列表项都有一个指针指向列表,(列表就是把所有列表项串起来)如下图:列表列表是FreeRTOS中的一个数据结构,概念上和链表有点类似,列表被用来跟踪FreeRTOS中的任务。与列表相关的全部东西都在文件list.c 和list.h

2022-04-27 17:30:11 1146 1

原创 FreeRTOS学习笔记<中断>

中断概念Cortex-M的NVIC最多支持240个IRQ(中断请求)、1个不可屏蔽中断(NMI)、1个Systick(滴答定时器)定时器中断和多个系统异常。Cortex-M处理器有多个用于管中断和异常的可编程寄存器, 这些寄存器大多数都在 NVIC和系统控制块 (SCB)中, CMSIS将这些寄存器定义为结构体。以 STM32F103为例,打开core_cm3.h,有两个结构体, NVIC_Type和 SCB_Type。NVIC和SCB都位于系统控制空间(SCS)内,SCS的地址从0XE000E00

2022-04-26 17:49:36 1712

原创 FreeRTOS学习笔记<任务的理解>

任务特性支持抢占、优先级 每个任务都拥有堆栈 使用抢占要考虑重入任务状态阻塞态:vTaskDelay(),任务在等待队列、信号量、事件组、通知或互斥信号量的时候。有一个超时时间,当超过这个时间,不论等待的事件是否到来,都会退出阻塞态挂起态:无超时时间任务优先级在FreeRTOS中,任务优先级的范围 0~configMAX_PRIORITIES-1。空闲任务优先级默认是0,软件定时器默认是MAX-1,最好不要用这两个优先级数字越大,优先级越高默认一个优先级下可以挂多.

2022-04-24 17:12:10 2642

原创 FreeRTOS学习笔记<系统配置>

在使用FreeRTOS的时候我们要根据自己的需求来配置FreeRTOS,不同MCU的配置也不同。修改配置文件FreeRTOSConfig.h完成FreeRTOS的裁剪和配置。INCLUDE_开始的宏使能和失能FreeRTOS中相应的API函数config开始的宏完成FreeRTOS的配置和裁剪#define configUSE_PREEMPTION // 使用抢占式调度算法#define configUSE_IDLE_HOOK

2022-04-22 17:13:25 2250

原创 FreeRTOS学习笔记<通用工程移植>

1.找一个简单的工程,例如跑马灯工程,将源码拷贝到新创建的FreeRTOS文件夹中2.删掉文件夹中除keil、MemMang和RVDS其余的文件夹3.向工程分组中添加文件4.添加相应的头文件路径5.拷贝FreeRTOSConfig.h文件6.在FreeRTOSConfig.h中添加一句话7.修改FreeRTOS.h中INCLUDE_xTaskGetSchedulerState为18.编译后无错误,移植完成...

2022-04-20 18:03:55 652

原创 FreeRTOS学习笔记<源码下载>

1.下载freertos源码下载地址https://www.freertos.org/等待下载完成后如下源码在FreeRTOSv202112.00\FreeRTOS\Source下面,移植这个就好

2022-04-19 17:28:13 472

原创 linux学习笔记<Ubuntu安装arm-linux-gcc版本>

1.在官网下载交叉编译工具链,根据自己需要的版本Linaro Releaseshttps://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/2.拷贝下载好的工具链到Ubuntu3.拷贝、解压压缩包//1.若没有此路径,则创建sudo mkdir /usr/local/arm//2.拷贝工具链到/usr/local/arm路径下sudo cp gcc-linaro-4

2022-04-18 16:10:05 926

原创 linux学习笔记<Ubuntu安装gcc版本>

1.安装包获取下载链接http://ftp.gnu.org/gnu/gcc/http://www.netgull.com/gcc/releases/gcc-9.3.0/2.安装包解压并打开路径解压tar -zxvf gcc-9.3.0.tar.gz打开路径cd gcc-9.3.0/3.安装gcc的依赖软件./contrib/download_prerequisites4.生成Makefile文件./configure -enable-checking=rele

2022-04-07 14:51:23 1847

原创 STM32学习笔记<16.存储器>

1.概念2.易失性存储器RAM (Random Access Memory随机存储器):数据容易丢失的随机存储:读取或写入时,所需时间与消息的位置无关2.1 DRAM动态随机存储器2.1.1 SDRAM同步动态随机存储器采用同步方式的DRAM2.1.2 DDR SDRAM双倍速率同步动态随机存储器:DDRII/DDRIII/DDRIIII一般的DRAM只有一个异步接口,采用异步传输的方式,异步传输技术简单,也比较稳定,但是数据的传输速率相对较慢。SDRAM除了异步接口,还

2022-03-08 11:12:10 607

原创 STM32学习笔记<11.RS485、RS232、UART>

1.概述三者都是串口,只是电平不一样。UART一般用于电路板内部通信或者短距离通信,注意如果要外接,需要供电和共地,这种情况适用于距离较短的串口模块RS232 如果距离较大,在米一级,最好使用一个MAX232芯片转一道,这个芯片的作用就是把TTL电平的高转为232电平的-15V,把TTL的低转为232电平的+15V,在长距离传输的时候抗干扰性能更好,使用标准接口DB9RS485 232电平通信可以满足米到10米的距离,再远怎么办,环境很恶劣怎么办,用485,485是工业级的通信方式,抗干扰能

2022-03-08 10:36:05 263

原创 STM32学习笔记<10.定时器>

1.概述主要用于定时用,比如家里的洗衣机定时功能等。2.特点定时时间的计算:Tout = ((arr+1)(psc+1))/Tclk ;其中:Tclk:定时器的输入时钟频率(单位MHZ)Tout:定时器溢出时间(单位为us)TIM_Period = arr; eg;4999TIM_Prescaler = psc; eg:7199Tout = ((4999+1)×(7199+1))/72 = 500000us = 500ms公式由来:1、定时器的时钟频率是Tclk;当Presc

2022-03-08 10:32:36 408

原创 STM32学习笔记<9.ADC>

1.概述实现AD转换(模拟信号<连续信号>到数字信号<离散信号>)2.特点1.位数比如12位,那么就是2的12次方4096,0~4096对应0~3.32.采样频率如果设置PLCK2为8分频,那么ADCCLK为 72M/8=9MHz。最大的采样周期是239.5个周期,那么最小采样频率:9M/(239.5+12.5)=35.7KHz举例:我们的输入信号是50Hz (周期为20ms),初步定为1周期2500个采样点,(注:一周期最少采20个点,即采样率最少

2022-03-08 10:31:48 316

原创 STM32学习笔记<8.SPI>

1.概述SPI(Serial Peripheral Interface串行外围接口)2.特点1. 4个引脚2. 一主多从,多设备3. CS为从设备的片选信号线4. CS=0代表选中从设备,CS=1代表结束5. 同步,串行,全双工6. 通信速率取决于低速设备7. MOSI接MOSI8. 主机和从机要在相同的模式下才能通讯,实际采用模式0和模式3多一些3.通讯协议1.SPI通信过程2.起始信号和终止信号起始:NSS高->低终止:N

2022-03-08 10:26:48 421

原创 STM32学习笔记<7.IIC>

1.概述IIC通讯协议(Inter-Integrated Circuit 内部集成电路)2.应用场景板内低速器件之间,近距离。3.特点1.同步,半双工,串行2.支持一主一从,一主多从,多主多从,支持多设备总线3.只有SCL和SDA两根线4.主机通过从机地址去访问5.总线通过上拉电阻上拉,当所有设备处于空闲(显示高阻态),这时总线就显示空闲(高电平)6.多主机同时占用总线时,通过仲裁(线与,会对比总线电平和实际电平)决定7.三种传输方式:标准100kbit/s,

2022-03-08 10:26:00 161

原创 STM32学习笔记<6.DMA>

1.概念DMA(Direct Memory Access:直接内存存取)是一种可以大大减轻CPU工作量的数据转移方式。2.背景以前通常是cpu进行数据的转移,当遇到大量数据时,会很浪费cpu,专门找一个转移数据的搬运工,就产生了DMA3.特点专门进行数据的搬运,进行外设和内存的4种搬运:外设到内存 内存到外设 内存到内存 外设到外设当用户将参数设置好,主要涉及源地址、目标地址、传输数据量这三个,DMA控制器就会启动数据传输,传输的终点就是剩余传输数据量为0(循环传输不是这样的

2022-03-07 18:56:55 206

原创 STM32学习笔记<5.UART>

1. 概念UART( Universal Asynchronous Receiver/Transmitter),通用异步接收器/发送器。2. 背景两个设备间通信。3. 特点串行、全双工、异步。(这里只讨论异步,同步则需要时钟)4. 协议层1. 数据包起始位(1位低电平)+主体数据(8/9位 低位在前)+校验位(1位。偶校验:主体和校验位的1加起来是偶数,奇校验相反)+停止位(1/1.5/2位高电平),双方只有数据包一致才能正常收发数据。2. 波特率...

2022-02-18 17:36:58 1185

原创 STM32学习笔记<15.通讯>

1.串行和并行2.全双工、半双工和单工3.同步和异步以上三组可以随意组合,可以共存通讯速率:用比特率来衡量,每秒钟传输的二进制数(bit/s),而波特率是每秒传输多少个码元(一个码元有多个二进制)baud/s。...

2022-01-25 15:48:15 140 1

原创 STM32学习笔记<13.systick系统定时器>

1. 概念属于cortex-M的一个外设,内嵌在NVIC中。含有一个计数宽度为24bit的向下递减的自动重装载计数器。计数器每计数一次的时间1/clksource,clksource为系统时钟,例如f103是72Mhz。备注:1. 优先级和其他定时器的没区别2. 中断里不要使用延时函数,因为当系统定时器的优先级低于中断的优先级,那么系统定时器计数不会递减,延时函数会一直卡死在那里。...

2022-01-24 18:23:06 337

原创 嵌入式系统高级c语言<8.结构体>

1. 概念用于存放不同类型数据的数据类型,例如int,float,结构体只是一种特殊的数据类型。2. 常用的几种定义方式第一种:先定义结构体类型,再定义结构体类型变量struct data{ int day; int month; int year;};此时不开辟内存。struct stu time1,time2;//定义结构体变量此时开辟了内存。第二种:定义结构体类型的同时定义结构体变量struct data{ int day;

2022-01-24 15:54:04 414

原创 STM32学习笔记<14.时钟周期、机器周期、指令周期>

1. 时钟周期看配置的系统时钟是N,时钟周期就是1/N,例如103配置sysclk为72M,时钟周期就是1/72M = 0.01389us。2. 机器周期在计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期,是最小衡量单位。对于51单片机,一个机器周期等于12个时钟周期。3. 指令周期1. 用C语言写的程序,会被转换成一条一条的指令,不同的指令执行的时间不同。2. 简单指令需要一个机器周期

2022-01-20 18:26:47 15167 4

原创 STM32学习笔记<4.2EXTI-扩展中断和事件控制器>

1. 事件的概念STM32的外设是通过内部信号协同工作的,这个信号被称为事件。事件有可见的,在寄存器可以查到;不可见的通过引入中断,使用事件。2. EXTI是STM32的一个外设,作用:捕获外部输入线的电平变化等等一些事件,然后生成相应的中断3. 中断的使用流程事件线发生上升沿/下降沿---->经过EXTI外设(判断上升沿/下降沿,产生NVIC中断/事件)---->中断向量表查找对应中断的偏移地址---->进入中断函数执行...

2022-01-20 11:34:46 365

原创 STM32学习笔记<4.1中断>

1.中断的概念计算机运行过程中,出现某些意外情况需主机干预时,机器停止程序的运行,去执行新情况的程序,处理完成后又返回原先被暂停的程序继续运行。(相当于你正在敲代码,然后突然你想上厕所,急急急!然后你就去上厕所了,上完厕所你就回来继续敲代码)2.STM32异常和中断介绍1. 对于STM32来说,异常和中断是由芯片内的Cortex-M内核提供的,ST公司是在内核上进行拓展和修改。2.异常(系统异常):内核活动产生的(执行指令出错)3.中断(外设中断):连接到内核的外部器件产生(外设产生中断

2022-01-19 17:09:47 993

原创 STM32学习笔记<3.RCC>

1.概念Reset and clock control复位和时钟控制什么是复位?包含系统复位,电源复位,备份域复位三种。系统复位:除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器为它们的数值。触发:NRST引脚的低电平(外部复位)、窗口看门狗计数终止(WWDG复位)、独立看门狗计数终止(WDG复位)、软件复位(SW复位)、低功耗管理复位。电源复位:除了备份区域外的所有寄存器。触发:上电/掉电复位(POR/PDR复位)、从待机模式中返回备份域复位:

2022-01-19 11:37:43 659

原创 STM32学习笔记<12.BSP>

1.概念BSP板级支持包(Board Support Package)介于主板硬件和操作系统中驱动程序之间的一层,一般认为是操作系统的一部分,主要实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。针对不同的硬件(板子),实现一个完整的功能,将硬件和上层剥离。裸机和操作系统都可以有bsp,但是一般是针对操作系统而言的。...

2022-01-17 18:31:28 1364

原创 STM32学习笔记<2.STM32cubeMX的安装和第一个实例>

1.下载Java环境腾讯软件中心-海量软件高速下载 (qq.com)https://pc.qq.com/2.下载cubeMX安装包

2022-01-17 17:23:25 408

原创 STM32学习笔记<1.GPIO>

1.GPIO的概念是通用输入输出端口的简称。2.用途通过控制GPIO,实现与外部器件的通讯、控制。3.功能(1)有保护二极管防止输入的电压过高过低,可查看参考手册其电气特性(2)4.两种输出结构:推挽和开漏(1)工作原理(2)用途推挽...

2022-01-17 11:38:18 413

原创 单片机最小系统构成

电源、晶振、下载、BOOT、复位

2022-01-14 16:51:54 243

原创 STM32参考手册、数据手册和编程手册

参考手册:绝大部分寄存器,这款芯片软件上怎么用编程手册:cortex内核得汇编指令及其使用,以及内核相关寄存器。大致介绍这个芯片得特性和一些硬件参数

2022-01-14 16:05:13 3402

原创 谈谈自己对ARM的理解

1.概念:ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势2.架构和内核的关系:直接上图ARM架构 ARM内核 备注 ARMv1 ARM1 只有26位的寻址空间,没有用于商业产品 ARMv2 ARM2、ARM3 包含了对32位乘法指令和协处理器指令的支持

2022-01-14 14:36:43 1124

原创 嵌入式系统高级c语言<7.堆栈>

大多数计算机系统采用满递减栈的形式组织堆栈。作用:1. 利用堆栈传递函数调用的参数2. 利用堆栈保存函数调用的返回地址(对于中断处理程序还包括程序状态字寄存器)3. 利用堆栈保存在被调函数中需要使用的寄存器的值4. 利用堆栈实现局部变量...

2021-12-22 18:16:13 513

原创 嵌入式系统高级c语言<6.内存陷阱>

1. 静态存储区分配在编译的时候就分配好了,这块内存在程序的整个运行期间都存在,例如全局变量、static变量。2. 在栈上创建 在执行函数时,函数的参数,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。3. 从堆上分配,动态内存分配 程序运行时用malloc或new申请任意多少的内存,自己free或delete释放内存。局部变量1. 不要对临时变量做取地址操作2. 不要返回临时变量的地址或临时指针...

2021-12-22 17:43:14 641

原创 嵌入式系统高级c语言<5.函数指针>

1. 函数指针的声明和引用指向函数地址的指针。利用该指针可以知道函数在内存中的位置,可以利用函数指针调用函数。声明如下: <类型>(*函数指针变量名)(函数的参数列表); 函数名就是函数的入口地址,因此可以用已定义的函数的函数名作为初值赋给一个相应的函数指针。相应的:返回值和函数的入口参数要一致。int *myfunction(int); /*声明一个函数*/int *(*fp)(int); /*声明函数指针*/int ...

2021-12-22 15:55:15 467

原创 嵌入式系统高级c语言<4.函数>

1. C语言的函数所有的C程序功能都是由函数实现的,对于一般的编译器,main()函数是整个程序的入口,系统复位后,是从系统中断向量表指定的指令开始运行,一般是汇编写的,然后跳转到main()函数开始编写C代码。 1.1 函数的参数 C语言中的所有参数都是以“传值调用”的方式进行传递的,也就是说函数将获得参数值的一份复制。特例:当传递的是数组的时候,只传递这个数组的首地址,传址调用。 1.2 可变参数的函数 ...

2021-12-21 11:43:22 380

原创 嵌入式系统高级c语言<3.指针>

1. 指针的3个要素 理解C语言的关键是真正理解存储器 1. 不论是程序还是数据都是以“0”和“1”存放在存储器中; 2. 目前计算机系统的最小寻址单位是字节,其他存储单元都是在这个基础上组成的; 3. 每个存储单元都有两个属性:存储器存放的内容,存储单元的地址; 4. 当存放的内容是另一个存储单元的地址时,我们称这个存储单元里存放的是一个指针,而这个存储单元本身被称为指针变量; 5. 指针的本质是一...

2021-12-20 19:12:19 342

原创 嵌入式系统高级c语言<2.运算符>

C语言的34个运算符 运算符的分类 运算符 单目/双目/三目 说明 算术运算符 +、-、*、/、%、-(取负运算符) 除了取负运算符是单目,其他都是双目 虽然取负运算符和减法运算符形式上一样,但却是不同运算符,优先级不同 关系运算符 >、<、==、>=、<=、!= 双目 逻辑运算符 !、&&、|| !单目 ...

2021-12-17 17:03:19 429

原创 嵌入式系统高级c语言<1.关键字>

C语言的32个关键字 关键字类型 关键字列表 数据类型的关键字(12个) char、double、enum、float、int、long、short、signed、struct、union、unsigned、void 控制语句的关键字(12个) break、case、continue、default、do、else、for、goto、if、return、switch、while 存储类型的关键字(4个) auto、register、static、extern

2021-12-15 18:06:04 689

原创 C语言知识点总结(持续更新...)

1.Unix(Linux)系统只需要\n就可将光标移到下一行行首但在Windows系统中,\n只换行,不移动光标2.断言:是一个宏,在假设的条件下正常运行,否则终止程序执行,在Debug下使用3.结构体(1)每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(2)在经过第一原则分析后,检查计算出的存储单元是否为所有元素中最宽的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。#pragma pack(1) 结构体按

2021-12-13 17:22:53 902

xmind文档总结下载

xmind文档总结下载

2022-07-01

空空如也

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

TA关注的人

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