stm32学习
文章平均质量分 90
H2Z20Str
这个作者很懒,什么都没留下…
展开
-
STM32CubeMX学习笔记33---芯片因未选serial debug被锁住
利用STM32CubeMX配置了一个工程,下载到芯片后,芯片能够正常工作,但是在第二次通过SWD却怎么都连接不上芯片,偶尔按住复位键能够连接上芯片,但是无法读取也无法擦除flash。在配置STM32CubeMX时,sys设置中,选择了Disable才导致了芯片被锁死,需要配置成serial debug(由于之前用的是103,没有这个设置,所以一直没注意到)。2、boot0和boot1都接高电平,然后给芯片擦除flash并烧录一个正常的固件,boot0和boot1都恢复正常的工作状态即可。原创 2024-11-14 11:11:30 · 153 阅读 · 0 评论 -
STM32CubeMX学习笔记32---FreeRTOS资源管理
CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。CPU 的利用率越高,说明机器在这个时间上运行了很多程序,反之较少。原创 2024-05-07 08:49:14 · 873 阅读 · 0 评论 -
STM32CubeMX学习笔记31---FreeRTOS中断管理
异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理, 轻则系统出错,重则会导致系统毁灭性瘫痪。所以正确地处理异常,避免错误的发生是提 高软件鲁棒性(稳定性)非常重要的一环,对于实时系统更是如此。异常是指任何打断处理器正常执行,并且迫使处理器进入一个由有特权的特殊指令执 行的事件。异常通常可以分成两类:同步异常和异步异常。原创 2024-05-07 08:48:49 · 1356 阅读 · 0 评论 -
STM32CubeMX学习笔记30---FreeRTOS内存管理
FreeRTOS 操作系统将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的,所以在 FreeRTOS 中提供了多种内存分配算法(分配策略),但是上层接口(API)却是统一的。这样做可以增加系统的灵活性:用户可以选择对自己更有利的内存管理策略,在不同的应用场合使用不同的内存分配策略。原创 2024-05-06 16:41:00 · 1160 阅读 · 0 评论 -
STM32CubeMX学习笔记29---FreeRTOS任务通知
FreeRTOS 从 V8.2.0 版本开始提供任务通知这个功能,每个任务都有 一个 32 位 的通知值,在大多数情况下,任务通知可以 替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32 位整数或指针值)。相对于以前使用 FreeRTOS 内核通信的资源,必须创建队列、二进制信号量、计数信号量或事件组的情况,使用任务通知显然更灵活。原创 2024-05-06 16:40:28 · 1030 阅读 · 0 评论 -
STM32CubeMX学习笔记28---FreeRTOS软件定时器
定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户 可以自定义定时器的周期与频率。类似生活中的闹钟,我们可以设置闹钟每天什么时候响, 还能设置响的次数,是响一次还是每天都响。定时器有硬件定时器和软件定时器之分:硬件定时器是芯片本身提供的定时功能。一般是由外部晶振提供给芯片输入时钟,芯 片向软件模块提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产 生时钟中断。硬件定时器的精度一般很高,可以达到纳秒级别,并且是中断触发方式。软件定时器。原创 2024-03-28 20:41:26 · 1579 阅读 · 0 评论 -
STM32CubeMX学习笔记27---FreeRTOS事件
事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。即一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个事件。每一个事件组只需要很少的 RAM 空间来保存事件组的状态。事件组存储在一个 EventBits_t 类型的变量中,该变量在事件组结构体中定义。原创 2024-03-28 15:23:13 · 1343 阅读 · 0 评论 -
STM32CubeMX学习笔记26---FreeRTOS互斥量
1、互斥量用于互锁,可以充当资源保护的令牌,当一个任务希望访问某个资源时,它必须先获取令牌,当任务使用完资源后,必须返还令牌,以便其他任务可以访问该资源。2、互斥量一般用于临界资源保护。原创 2024-03-20 20:52:02 · 1571 阅读 · 0 评论 -
STM32CubeMX学习笔记25---FreeRTOS信号量
信号量用于同步,任务间或者任务和中断间同步互斥量用户互锁,用于保护同时只能有一个任务访问的资源,为资源上一把锁。二值信号量:同步。如果存在两个线程,为线程1和线程2,如果线程1发送了信号量,线程2接收到了信号量,这两个线程同步工作,如果线程1没有发送信号量,那么线程2也就不工作(前提线程2中有信号量接收等待函数)。相当于一个标志位。计数信号量:资源使用统计互斥量:互斥信号是一个拥有优先级继承的二值信号量递归互斥:互斥中嵌套互斥。原创 2024-03-20 17:28:53 · 1933 阅读 · 0 评论 -
STM32CubeMX学习笔记24---FreeRTOS(消息队列)
队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中 断之间传递消息,队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之 间要交流的数据保存在队列中,叫做队列项目。队列所能保存的最大数据项目数量叫做队列的 长度,创建队列的时候会指定数据项目的大小和队列的长度。由于队列用来传递消息的,所以 也称为消息队列。FreeRTOS 中的信号量的也是依据队列实现的!所以有必要深入的了解 FreeRTOS 的队列。原创 2024-03-19 23:21:11 · 2121 阅读 · 0 评论 -
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 · 1173 阅读 · 0 评论 -
STM32CubeMX学习笔记22---FreeRTOS(任务创建和删除)
FreeRTOS 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。FreeRTOS 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS 结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。原创 2024-03-18 20:29:58 · 2113 阅读 · 0 评论 -
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 · 2196 阅读 · 0 评论 -
STM32CubeMX学习笔记20——SD卡FATFS文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构(即在存储设备上组织文件的方法)。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统;不带文件系统的SD卡仅能实现简单的读写扇区操作,要真正应用SD卡必须要使用文件系统FATFS文件存储原理(以FAT32为例),下图为FAT32文件系统布局:分区空间大小簇空间大小每个簇包含的扇区数< 8GB4KB88KB1616KB32>= 32GB32KB64。原创 2024-03-11 21:17:05 · 3556 阅读 · 1 评论 -
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 · 2493 阅读 · 0 评论 -
STM32CubeMX学习笔记18——FSMC(TFT-LCD屏触摸)
目前最常用的触摸屏有两种:电阻式触摸屏和电容式触摸屏。原创 2024-03-08 14:17:54 · 2761 阅读 · 0 评论 -
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 · 1411 阅读 · 0 评论 -
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 · 2364 阅读 · 1 评论 -
STM32CubeMX学习笔记14 ---SPI总线
SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI主从模式。原创 2024-03-06 21:44:20 · 3235 阅读 · 0 评论 -
STM32CubeMX学习笔记12 ---低功耗模式
系统或电源复位后,微处理器处于运行状态,运行状态下HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时(例如等待某个外部事件),可以利用多个低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。原创 2024-03-05 19:07:06 · 1954 阅读 · 0 评论 -
STM32CubeMX学习笔记11 ---RTC实时时钟
STM32的实时时钟RTC是一个独立的定时器,RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能,修改计数器的值可以重新设置系统当前的时间和日期 RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后背区域,即在系统复位或从待机模式唤醒后RTC的设置和事件维持不变。但是在系统复位后,会自动禁止访问后备寄存器和RTC,以防止对后备区域(BKP)的意外操作。所以在要设置时间之前,要先取消备份区域写保护。原创 2024-03-05 11:31:07 · 2018 阅读 · 0 评论 -
STM32CubeMX学习笔记10 ---看门狗
看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的复杂一点,看门狗就是能让程序出问题是能重新启动系统 STM32的独立看门狗(IWDG)由内部专门的40KHz低速时钟驱动,即使主时钟发生故障,它也仍然有效。注意IWDG的时钟是一个内部RC时钟,是一个在30~60KHz之间的一个可变化的时钟,只是我们在估算的时候以40KHz的频率来计算,看门狗对时间的要求不是很精确 独立看门口功能框图如下。原创 2024-03-04 18:06:16 · 1911 阅读 · 0 评论 -
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 · 1723 阅读 · 0 评论 -
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 · 1606 阅读 · 0 评论 -
STM32CubeMX学习笔记7 - 输入捕获
输入捕获模式可以用来测量脉冲宽度或者测量频率,下图以测量脉宽为例来说明输入捕获的原理假定定时器工作在向上计数模式,图中t1-t2的时间就是我们需要测量的低电平时间。测量方法为:首先设置定时器通道x为下降沿捕获,在t1时刻就会捕获到当前的CNT值,然后立即清零CNT,并设置通道x为上升沿捕获,到t2时刻又会发送捕获事件,得到此时的CNT值(记为CCRx2)。在t1-t2之间可能产生N次定时器溢出,因此需要对定时器溢出做处理,防止低电平太长导致数据不准确。原创 2024-02-27 10:59:24 · 1769 阅读 · 2 评论 -
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 · 1520 阅读 · 1 评论 -
STM32CubeMX学习笔记5-定时器中断
STM32的定时器功能十分强大,有高级定时器(TIM1和TIM8)、通用定时器(TIM2~TIM5)和基本定时器(TIM6和TIM7);通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。16位向上、向下、向上/向下自动装载计数器。原创 2024-02-21 20:25:49 · 1876 阅读 · 0 评论 -
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 · 1206 阅读 · 0 评论 -
STM32CubeMX学习笔记3-串口通信
对于串口通信在这里就不再多做介绍了,有需要的可以自行查询资料,本章主要是完成串口的收发实验一、轮询方式。原创 2024-01-30 14:37:11 · 1368 阅读 · 1 评论 -
STM32CubeMX学习笔记2-按键检测
在上一章LED_TEST工程的基础上设置PE0为GPIO输入模式、上拉模式,重命名为KEY1。点击GENERATE CODE,生成工程代码。PE0通过按键接地,按键按下时,LED0亮,LED1灭,按键松开时LED0灭,LED1亮。2、打开工程,可以看到新增了PE0的配置,但上次修改的内容并没有被覆盖。4、在工程的应用文件目录下创建key.c文件,编写按键相关函数。编译无误后下载到开发板,验证是否达到实验效果。3、在工程的头文件目录下创建key.h文件,编写相关声明。5、在main.c函数中编写相关程序。原创 2023-10-31 20:31:02 · 338 阅读 · 1 评论 -
STM32CubeMX学习笔记1-点亮LED灯
STM32CubeMX用于STM32配置和初始化C代码生成本章目标为点亮一颗LED灯,所用芯片为stm32f407zgt6,编译环境为keil5。1. 从主菜单栏中选择文件 > 新建项目,或从主页选择新建项目。2. 选择MCU选择器选项卡,并通过将STM32F4选为“系列”、将STM32F407选为“产品线”和将LQFP100选为“封装”来筛选STM32产品3. 从MCU列表中选择STM32F407VGT6,然后点击“确定”。原创 2023-10-31 19:45:00 · 453 阅读 · 1 评论