自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux学习笔记9---BSP 工程管理实验

一个工程的功能越多,所需要的功能文件就越多,那么文档就会更大,显得很混乱,所以我们需要对这个工程进行整理,将源码文件分模块、分功能整理。

2024-05-13 11:51:22 1122

原创 Linux学习笔记8---官方 SDK 移植实验

在上一章中,我们参考 ST 官方给 STM32 编写的 stm32f10x.h 来自行编写 I.MX6U 的寄存器定义文件。自己编写这些寄存器定义不仅费时费力,没有任何意义,而且很容易写错,幸好NXP 官方为 I.MX6ULL 编写了 SDK 包,在 SDK 包里面 NXP 已经编写好了寄存器定义文件,所以我们可以直接移植 SDK 包里面的文件来用。虽然 NXP 是为 I.MX6ULL 编写的 SDK 包,但是 I.MX6UL 也是可以使用的!

2024-05-11 15:54:31 757

原创 Linux学习笔记7---仿STM32自建寄存器库

根据结构体 GPIO_Type的定义,其第一个成员变量为DR,也就是 DR寄存器,I.MX6U 一共有通过上面三步我们就可以通过“GPIO1->DR”来访问 GPIO1的DR寄存器了。同样的,其他的外设寄存器都可以通过这三步来定义。

2024-05-11 15:53:55 886

原创 Linux学习笔记6---C语言编写LED灯程序

在编写C语言程序之前,需要用汇编语言编译一个启动程序,将我们的程序跳转到main函数执行。

2024-05-10 10:10:13 1021

原创 Linux学习笔记5---WSL2编译裸机程序并烧录至SD卡

此时,生成了.imx (可在Linux下用dd命令烧录), img (可在windows下用Win32DiskImager烧录SD卡)。load.img的内容是在load.imx基础上偏移了1K 字节,这样可以直接烧录到SD卡。正点原子的imxdownload由于包含了烧录的功能,但在WLS上无法识别SD卡,因此无法使用,所以可以将imxdownload的烧录功能都取消,让程序生成一个可烧录的镜像文件即可。那程序不就不能烧录到SD卡上了?写入成功后将SD卡插回开发板上,选择SD卡启动,程序成功运行。

2024-05-10 10:09:34 847

原创 Linux学习笔记4---点亮LED灯(汇编裸机)

本系统学习利用的是正点原子的阿尔法mini开发板,本系列的学习笔记也是按照正点原子的教程进行学习,但并不是利用虚拟机进行开发,而是使用Windows下的子系统WSL进行学习。因为 Cortex-A 芯片一上电 SP 指针还没初始化,C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR、设置 SP指针等等,当汇编把 C 环境设置好了以后才可以运行 C 代码。所以 Cortex-A 一开始肯定是汇编代码。

2024-05-09 17:43:52 1247

原创 Linux学习笔记3---WSL2交叉编译

ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译,编译就需要编译器,在上一章里面已经讲解了如何在 Liux 进行 C 语言开发,里面使用 GCC 编译器进行代码编译,但使用的 gcc 编译器是针对 X86 架构的!交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。交叉编译器有很多种,我们使用 Linaro 出品的交叉编译器,Linaro 是一间非营利性质的开。

2024-05-09 17:43:18 500

原创 Linux学习笔记2---Makefile

一个工程中的源文件不计其数,按期类型、功能、模块分别放在若干个文件中,MakeFile文件定义了一系列的规则来制定哪些文件需先要编译、哪些文案需要后编译、哪些文件需要重新编译、甚至于进行更加复杂的操作,因为Makefile文件就像是一个shell脚本一样,也可以执行操作系统的命令。

2024-05-08 08:55:17 946

原创 Linux学习笔记1---Windows上运行Linux

在正点原子的教程中学习linux需要安装虚拟机或者在电脑上安装一个Ubuntu系统,但个人觉得太麻烦了,现在linux之父加入了微软,因此在Windows上也可以运行linux 了。

2024-05-08 08:54:52 1315

原创 STM32CubeMX学习笔记32---FreeRTOS资源管理

CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。CPU 的利用率越高,说明机器在这个时间上运行了很多程序,反之较少。

2024-05-07 08:49:14 752

原创 STM32CubeMX学习笔记31---FreeRTOS中断管理

异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理, 轻则系统出错,重则会导致系统毁灭性瘫痪。所以正确地处理异常,避免错误的发生是提 高软件鲁棒性(稳定性)非常重要的一环,对于实时系统更是如此。异常是指任何打断处理器正常执行,并且迫使处理器进入一个由有特权的特殊指令执 行的事件。异常通常可以分成两类:同步异常和异步异常。

2024-05-07 08:48:49 1105

原创 STM32CubeMX学习笔记30---FreeRTOS内存管理

FreeRTOS 操作系统将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的,所以在 FreeRTOS 中提供了多种内存分配算法(分配策略),但是上层接口(API)却是统一的。这样做可以增加系统的灵活性:用户可以选择对自己更有利的内存管理策略,在不同的应用场合使用不同的内存分配策略。

2024-05-06 16:41:00 1004

原创 STM32CubeMX学习笔记29---FreeRTOS任务通知

FreeRTOS 从 V8.2.0 版本开始提供任务通知这个功能,每个任务都有 一个 32 位 的通知值,在大多数情况下,任务通知可以 替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32 位整数或指针值)。相对于以前使用 FreeRTOS 内核通信的资源,必须创建队列、二进制信号量、计数信号量或事件组的情况,使用任务通知显然更灵活。

2024-05-06 16:40:28 849

原创 STM32CubeMX学习笔记28---FreeRTOS软件定时器

定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户 可以自定义定时器的周期与频率。类似生活中的闹钟,我们可以设置闹钟每天什么时候响, 还能设置响的次数,是响一次还是每天都响。定时器有硬件定时器和软件定时器之分:硬件定时器是芯片本身提供的定时功能。一般是由外部晶振提供给芯片输入时钟,芯 片向软件模块提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产 生时钟中断。硬件定时器的精度一般很高,可以达到纳秒级别,并且是中断触发方式。软件定时器。

2024-03-28 20:41:26 1281

原创 STM32CubeMX学习笔记27---FreeRTOS事件

事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。即一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个事件。每一个事件组只需要很少的 RAM 空间来保存事件组的状态。事件组存储在一个 EventBits_t 类型的变量中,该变量在事件组结构体中定义。

2024-03-28 15:23:13 1069

原创 STM32CubeMX学习笔记26---FreeRTOS互斥量

1、互斥量用于互锁,可以充当资源保护的令牌,当一个任务希望访问某个资源时,它必须先获取令牌,当任务使用完资源后,必须返还令牌,以便其他任务可以访问该资源。2、互斥量一般用于临界资源保护。

2024-03-20 20:52:02 1310

原创 STM32CubeMX学习笔记25---FreeRTOS信号量

信号量用于同步,任务间或者任务和中断间同步互斥量用户互锁,用于保护同时只能有一个任务访问的资源,为资源上一把锁。二值信号量:同步。如果存在两个线程,为线程1和线程2,如果线程1发送了信号量,线程2接收到了信号量,这两个线程同步工作,如果线程1没有发送信号量,那么线程2也就不工作(前提线程2中有信号量接收等待函数)。相当于一个标志位。计数信号量:资源使用统计互斥量:互斥信号是一个拥有优先级继承的二值信号量递归互斥:互斥中嵌套互斥。

2024-03-20 17:28:53 1570

原创 STM32CubeMX学习笔记24---FreeRTOS(消息队列)

队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中 断之间传递消息,队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之 间要交流的数据保存在队列中,叫做队列项目。队列所能保存的最大数据项目数量叫做队列的 长度,创建队列的时候会指定数据项目的大小和队列的长度。由于队列用来传递消息的,所以 也称为消息队列。FreeRTOS 中的信号量的也是依据队列实现的!所以有必要深入的了解 FreeRTOS 的队列。

2024-03-19 23:21:11 1550

原创 STM32CubeMX学习笔记23---FreeRTOS(任务的挂起与恢复)

注:在不同任务(任务优先级相同)中同时使用同一个中断会导致任务轮流使用该中断,如LED1和LED2都延时1000ms后同时使用printf,则会出现以下情况,即两个任务轮流使用printf,就导致了中间的遗漏了。程序编译无误后下载到板子上,可以看到LED1计数到10时挂起LED2,当计数到15时恢复LED2。本实验通过freertos创建两个任务来分别控制LED2和LED3的亮灭,需要用到的硬件资源。在任务函数中编写程序,让LED1计数到10时挂起LED2,当计数到15时恢复LED2.

2024-03-19 11:08:38 977

原创 STM32CubeMX学习笔记22---FreeRTOS(任务创建和删除)

FreeRTOS 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。FreeRTOS 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS 结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。

2024-03-18 20:29:58 1519

原创 STM32CubeMX学习笔记21--- FLASH应用(Bootloader+APP)

在16章我们学习了FLASH的读写操作,FLASH内的数据是断电可保存的,而且stm32的运行程序也是存放在内部FLASH当中,那么可以编写一段程序A,将另一段程序B写入FLASH中并引导单片机运行程序B。在专业的角度上程序A称为引导/启动程序(Bootloader),简称Boot。程序B叫应用程序,简称APP。

2024-03-18 10:07:41 1788

原创 STM32CubeMX学习笔记20——SD卡FATFS文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构(即在存储设备上组织文件的方法)。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统;不带文件系统的SD卡仅能实现简单的读写扇区操作,要真正应用SD卡必须要使用文件系统FATFS文件存储原理(以FAT32为例),下图为FAT32文件系统布局:分区空间大小簇空间大小每个簇包含的扇区数< 8GB4KB88KB1616KB32>= 32GB32KB64。

2024-03-11 21:17:05 2603

原创 STM32CubeMX学习笔记19——SD卡(SDIO接口)

很多单片机系统都需要大容量存储设备,以存储数据(常用的有U盘、FLASH芯片、SD卡等),比较而言SD卡是单片机大容量外部存储的首选,只需要少数几个IO口即可外扩一个容量从几十M到几十G的,且有多种体积尺寸可选(标准SD卡、TF卡等)的外部存储器SD卡(Secure Digital Memory Card)即:安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。

2024-03-11 15:08:38 1867

原创 STM32CubeMX学习笔记18——FSMC(TFT-LCD屏触摸)

目前最常用的触摸屏有两种:电阻式触摸屏和电容式触摸屏。

2024-03-08 14:17:54 2081

原创 STM32CubeMX学习笔记17--- FSMC

TFT-LCD(thin film transistor-liquid crystal display)即薄膜晶体管液晶显示器。液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),每个像素都可以通过点脉冲直接控制,因而每个节点都相对独立,并可以连续控制,不仅提高了显示屏的反应速度,同时可以精确控制显示色阶,所以TFT液晶的色彩更真,因此TFT-LCD也被叫做真彩液晶显示器 常用的TFT液晶屏接口有8位、9位、16位、18位,这里的位数表示的是彩屏数据线的数量。

2024-03-08 11:12:00 1472

原创 STM32CubeMX学习笔记16--- STM32内部FLASH

之前的文章中介绍过STM32F1利用SPI与外部FLASH(W25QXX芯片)通讯的例程,本例程将介绍STM32F1的内部FLASH,通过内部FLASH实现数据读写操作。不同型号的STM32,其FLASH容量也有所不同,最小的只有16K字节,最大的则达到了1024K字节。此处我们使用的是STM32F103ZET6,其FLASH容量为512K字节,属于大容量产品,大容量产品的闪存模块组织图如下图示STM32F1的闪存模块由:主存储器、信息块和闪存存储器接口寄存器3部分组成。

2024-03-07 20:51:15 1232

原创 STM32CubeMX学习笔记15---CAN总线

CAN总线网络的结构有闭环和开环两种形式闭环结构的CAN总线网络,总线两端各连接一个1202的电阻。这种CAN总线网络由ISO11898标准定义,是高速、短距离的CAN网络,通信速率为125kbit/s到1Mbit/s。在1Mbit/s通信速率时,总线最长40m。开环结构的CAN总线网络,两根信号线独立,各自串联一个2.2k·的电阻这种CAN总线网路由ISO11519-2标准定义,是低速、远距离的CAN网络,通信速率最高125kbit/s。在40kbit/s速率时,总线最长距离可达1000m。

2024-03-07 17:49:26 1781 1

原创 STM32CubeMX学习笔记14 ---SPI总线

SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI主从模式。

2024-03-06 21:44:20 2531

原创 STM32CubeMX学习笔记13 ---IIC总线

IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。PS: 这里要注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPIIIC的物理层。

2024-03-06 10:47:11 1851

原创 STM32CubeMX学习笔记12 ---低功耗模式

系统或电源复位后,微处理器处于运行状态,运行状态下HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时(例如等待某个外部事件),可以利用多个低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

2024-03-05 19:07:06 1536

原创 STM32CubeMX学习笔记11 ---RTC实时时钟

STM32的实时时钟RTC是一个独立的定时器,RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能,修改计数器的值可以重新设置系统当前的时间和日期 RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后背区域,即在系统复位或从待机模式唤醒后RTC的设置和事件维持不变。但是在系统复位后,会自动禁止访问后备寄存器和RTC,以防止对后备区域(BKP)的意外操作。所以在要设置时间之前,要先取消备份区域写保护。

2024-03-05 11:31:07 1835

原创 STM32CubeMX学习笔记10 ---看门狗

看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的复杂一点,看门狗就是能让程序出问题是能重新启动系统 STM32的独立看门狗(IWDG)由内部专门的40KHz低速时钟驱动,即使主时钟发生故障,它也仍然有效。注意IWDG的时钟是一个内部RC时钟,是一个在30~60KHz之间的一个可变化的时钟,只是我们在估算的时候以40KHz的频率来计算,看门狗对时间的要求不是很精确 独立看门口功能框图如下。

2024-03-04 18:06:16 1468

原创 STM32CubeMX学习笔记9 -DAC

Digital-to-Analog Converter的缩写。数模转换器。又称D/A转换器,简称DAC,是指将离散的数字信号转换为连续变量的模拟信号的器件。典型的数字模拟转换器将表示一定比例电压值的数字信号转换为模拟信号。STM32F1中有两个DAC,可以同时使用STM32的DAC模块是12位数字输入,电压输出型的DAC。输出波形和输出固定电压DAC工作原理DAC工作框图"触发方式 " “控制逻辑” "数模转换器"1触发方式第一部分,触发方式,是指DAC转换可以由某外部事件触发。

2024-03-04 15:09:44 1463

原创 STM32CubeMX学习笔记8 -ADC

ADC 是Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。简单地说就是将模拟电压值,转换成对应的肉眼可读数值12位ADC是一种逐次逼近型模拟数字转换器。它有,3个ADC控制器,多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

2024-03-04 10:18:31 1408

原创 STM32CubeMX学习笔记7 - 输入捕获

输入捕获模式可以用来测量脉冲宽度或者测量频率,下图以测量脉宽为例来说明输入捕获的原理假定定时器工作在向上计数模式,图中t1-t2的时间就是我们需要测量的低电平时间。测量方法为:首先设置定时器通道x为下降沿捕获,在t1时刻就会捕获到当前的CNT值,然后立即清零CNT,并设置通道x为上升沿捕获,到t2时刻又会发送捕获事件,得到此时的CNT值(记为CCRx2)。在t1-t2之间可能产生N次定时器溢出,因此需要对定时器溢出做处理,防止低电平太长导致数据不准确。

2024-02-27 10:59:24 1380 1

原创 STM32CubeMX学习笔记6-PWM输出

图中的定时器是工作在向上计数PWM模式,当CNT < CCRx时输出0,IO口输出低电平,当CNT >= CCRx时输出1,IO口输出高电平;当CNT值达到ARR的时候,重新归零,然后重新向上计数,依次循环。改变CCRx的值就可以改变PWM输出的占空比,改变ARR的值就可以改变PWM输出的频率输出模式有两种:PWM1和PWM2模式计数器CNT计算方式说明PWM1递增CNTCCR,通道CH为无效,否则为有效PWM2递增。

2024-02-22 12:36:15 1100 1

原创 STM32CubeMX学习笔记5-定时器中断

STM32的定时器功能十分强大,有高级定时器(TIM1和TIM8)、通用定时器(TIM2~TIM5)和基本定时器(TIM6和TIM7);通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。16位向上、向下、向上/向下自动装载计数器。

2024-02-21 20:25:49 1481

原创 STM32CubeMX学习笔记4-外部中断

STM32F1的每个IO口都可以作为外部中断的中断输入,STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。EXTI线0~15:对应外部IO口的输入中断EXTI线16:连接到PVD输出EXTI线17:连接到RTC闹钟事件EXTI线18:连接到USB唤醒事件EXTI线19:连接到以太网唤醒事件(互联网型产品)STM32F103供IO口使用的中断线只有16个,但是IO口却远不止16个。下图为GPIO跟中断线的映射关系图。

2024-02-21 17:59:41 1033

原创 STM32CubeMX学习笔记3-串口通信2(不定长数据)

在上一章中学习到了串口如何接收定长的数据,但我们串口接收到的数据往往是不定长的,利用定长接收,就会导致数据遗漏和丢失,因此本章将学习如何接收不定长的数据。

2024-02-19 10:48:36 1212 1

原创 STM32CubeMX学习笔记3-串口通信

对于串口通信在这里就不再多做介绍了,有需要的可以自行查询资料,本章主要是完成串口的收发实验一、轮询方式。

2024-01-30 14:37:11 1186 1

Linux学习笔记9-BSP 工程管理实验代码

Linux学习笔记9---BSP 工程管理实验代码

2024-05-07

Linux学习笔记8-官方 SDK 移植实验代码

Linux学习笔记8---官方 SDK 移植实验代码

2024-05-06

Linux学习笔记7-仿STM32自建寄存器库实验代码

Linux学习笔记7---仿STM32自建寄存器库实验代码

2024-05-06

Linux学习笔记例程2

Linux学习笔记裸机例程2

2024-04-29

Linux学习笔记4-点亮LED灯(汇编裸机)程序

Linux学习笔记4---点亮LED灯(汇编裸机)程序

2024-04-23

imxdownload修改文件

正点原子官方的imxdownload文件将烧录功能屏蔽后的修改文件,可直接使用

2024-04-16

空空如也

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

TA关注的人

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