自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32_串口重定向

最近在学习LVGL时遇到了一个坑,我原来使用的重定向方法必须要勾选Use Micro LIB,否则程序会卡死,但是在移植LVGL时又发现不能勾选Use Micro LIB,否则会报错。那么有没有什么方法能让printf和LVGL都能正常使用呢,在网上查了查,发现了如下解决思路,在这里做个记录。

2024-04-05 17:00:58 465

原创 STM32F407_多点电容触摸(GT911)驱动

做毕设用到了电容触摸屏,移植了几天内才整好。在网上找到的好多例程都是电容屏、电阻屏都融合到一起去了,对于新手来说,不是太好理解,所以我来分享一下我的认识、例程和学习过程中遇到的问题以及要注意的点。在最后,我会放一个例程的网盘链接。GT911、GT928、GT9147都属于GT9系列非单层多点触控芯片,他们支持的触控点数不同(GT928支持10个点、GT911支持5个点)、驱动和感应通道也可能不同。可是他们的寄存器和IIC通讯时序是相同的,也就是说驱动程序是兼容的。

2024-03-17 20:43:07 1375

原创 STM32F407_外部中断

注释很详细,放心食用。STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断线上都设有状态位,每个中断/事件都有独立的触发(上升沿、下降沿、上升下降沿)和屏蔽设置。EXTI线0~15:对应外部IO口的输入中断。EXTI线16:连接到PVD输出。EXTI线17:连接到RTC闹钟事件。EXTI线18:连接到USB OTG FS唤醒事件。EXTI线19:连接到以太网唤醒事件。

2024-03-14 19:37:10 870 2

原创 STM32F407_硬件IIC(库函数)

在有必要注释的部分都进行了注释,可放心食用!

2024-03-13 11:41:03 359

原创 WS2812B彩灯 STM32库函数开发:PWM+DMA(stm32f407VET6)

WS2812B是一种常见的RGB LED灯带,每个灯珠内部都有一个芯片控制,通过发送特定的时序数据来控制其亮灭。发送数据时,需要按照一定的时序发送24位RGB数据,其中高位在前低位在后,格式为GRB。发送数据时,需要注意不仅仅是发送高电平或低电平,而是要发送占空比不同的PWM波,比如给予一定的高电平和低电平时间。重置码是发送一个持续280us的低电平信号。可以先发送一组24位的数据,然后接一个重置信号表示一组结束。

2024-02-17 21:43:51 1437

原创 FreeRTOS_Stm32F407系列单片机标准库移植

链接:FreeRTOS此时我们需要下载以下两个仓库,点进去按下面的步骤下载就行了,另一个也是这样下。链接: FreeRTOS官网打开链接我们可以看到有两个下载选项,我们下载第一个就行。下载速度较慢。链接:https://pan.baidu.com/s/1x00zgnJfCae75DpJ1W4RIg?pwd=1233提取码:1233在keil中点击魔术棒,进入“C/C++”,在Include Paths中添加FreeRTO、src、inc、port路径。按下面的操作分别添加src文件夹和por

2024-02-01 00:33:28 1247

原创 片外存储器_FLASH的页、扇区、块介绍

FLASH属于广义的ROM,因为它也是带电擦除的ROM。但是为了区别于一般的按字节为单位的擦写的E2PROM,我们叫它FLASH。FLASH做的改进就是擦除时不再以字节为单位,而是以块为单位。FLASH分为Nor FLASH和NAND FLASH。NOR FLASH数据线和地址线分开,可以实现RAM一样的随机寻址功能,可以读取任何一个字节。但是擦除仍要按块来擦。NAND FLASH同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取(

2024-01-20 21:18:32 1220

原创 USB_CH340一键下载电路

CH340是一个USB总线的转接芯片,可实现USB转串口或者USB转打印口。在设计中,主要关注UD+、UD-、TXD、RXD、DTR# 、RTS#的连接。

2024-01-13 16:48:26 1627

原创 STM32_通过Ymodem协议进行蓝牙OTA升级固件教程

作为单片机进阶能力,IAP升级固件的学习是非常重要的。想直接看如何操作的从第三条开始看。IAP,全称是“In-Application-Programming”,中文解释为“在程序中编程”。IAP是一种对通过微控制器的对外接口如:USART,IIC,CAN,USB,以太网接口甚至是无线射频通道等对正在运行程序的微控制器进行内部程序的更新的技术。与IAP同级的其它两种下载方式是ISP和ICP。ICP:使用SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合使用。ISP。

2023-12-17 21:40:49 2401 1

原创 STM32_启动流程详解

最近在学习IAP远程OTA升级单片机固件程序,发现自己对单片机的启动流程还不是那么了解,就总结整理一下吧。1.内核初始化;1.内核复位和NVIC寄存器部分清零;2.内核设置堆栈:内核从向量表0地址读出堆栈地址,并设置主堆栈指针(SP_main);3.设置PC和LR寄存器a. LR设置未初始复位值0xFFFF FFFF。

2023-12-16 16:26:23 1270

原创 STM32_串口下载程序

使用调试器下载程序又快有稳定还能使用调试功能,当然是下载调试的首选。但是拓展下串口下载程序的知识作为下载的备选方案也是很有必要的。

2023-12-14 17:35:06 2185

原创 LDO和DCDC的区别

对于初学者来说,最常见到的LDO就是最小系统板上自带的低压差线性稳压器,其用于将USB输入的5V电压转化为3.3V供给单片机。最长用到DCDC器件,就是在做小车时用到的将电池(7.4V/12V/其它)转化为5V的稳压模块。LDO即Low Dropout Regulator,是一种低压差线性稳压器。有低压差功能的线性稳压器,常见的AMS1117,输入输出的最小压差就是1.2V。低压差线性稳压器,故名思意为线性的稳压器,仅能使用在降压应用中,也就是输出电压必需小于输入电压。优点。

2023-12-13 20:08:24 987

原创 FreeRTOS_调试与优化

在使用FreeRtos进行开发的过程中,我们通常需要了解系统的运行状态、内存、CPU使用情况等信息,来确保系统能够长期稳定的运行。当前任务的剩余内存;当前任务历史最小内存;系统总的剩余内存;系统运行的总时间;单个任务的运行时间;每个任务占用的CPU时间;1/*为1时启用可视化跟踪调试*/1。

2023-12-09 14:28:00 1033

原创 MQTT_fx的使用——连接ONENET

下面所有的内容我们都可以在OneNET云平台的文档中心查取到,遇到问题是可以多去看看ONENET物联网平台官方文档。

2023-12-08 15:23:37 2304

原创 Stm32_串口的帧(不定长)数据接收

使用串口传输数据时,因为串口是异步通信协议,所以我们需要去判断哪是一帧完整的数据,并进行数据的处理。加固定的帧头和帧尾串口中断接收+用定时器来判断帧结束串口中断接收+利用串口空闲中断来判断帧结束直接存储器访问(Direct Memory Access),简称DMA。DMA是CPU一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需CPU干预,数据拷贝结束则通知CPU处理。因此,大量数据拷贝时,使用DMA可以释放CPU资源。

2023-12-06 19:15:24 1939

原创 FreeRTOS中实现精确的us级延时

在使用通讯协议来驱动外设的时候需要遵循严格的时序逻辑,往往用到微秒(us)级别的延时,在裸机编程中可以使用SysTick定时器、软件堵塞等方法来实现;但是在FreeRTOS中,SysTick定时器则是用来作为FreeRTOS系统时钟的,并且它提供的API仅能实现毫秒级别的延时,所以在网上查找资料总结了几个在FreeRTOS上运行的,可以实现us级别延时的几个方案。SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号15)。滴答中断对操作系统尤其重要。

2023-12-04 10:21:46 3610

原创 git使用

在工程被提交到gitee仓库后,又将本地的文件进行了修改,若此时想要还原到上次提交的版本时,查看哪些文件被修改了,

2023-11-28 22:04:20 387

原创 FreeRTOS_中断管理

总体而言,SYSTICK中断提供了任务调度的时基,而PendSV中断用于执行实际的任务切换操作。这两者共同协作,实现了FreeRTOS的多任务调度机制。

2023-11-27 10:35:57 957

原创 FreeRTOS_Stm32F103系列单片机标准库移植

下面的教程是基于从github下载压缩包进行的,最好下载这个或者直接看3.1,从我百度网盘下载。如果是别的下载源也问题不大,大同小异。链接:https://pan.baidu.com/s/1x00zgnJfCae75DpJ1W4RIg?链接:https://pan.baidu.com/s/1E_bi4nIzayskaVl3YrLBGA?按下面的操作分别添加src文件夹和port文件夹下的所有.c文件。打开链接我们可以看到有两个下载选项,我们下载第一个就行。点进去按下面的步骤下载就行了,另一个也是这样下。

2023-11-26 20:54:57 1215 8

原创 C语言工具库

描述:C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。C 标准库 - 子字符串是: NOOB。

2023-11-25 20:20:31 383

原创 C语言_函数指针

在上面的例子中,我们首先使用 typedef 声明了一个函数类型 PrintFunc,它是一个指向函数的指针,接受一个 int 类型的参数并返回 void。通过函数指针,可以动态地调用不同的函数,实现函数的灵活调用和运行时的动态绑定。函数指针的类型由其所指向的函数的返回类型和参数类型决定,因此在声明函数指针变量时,需要指定函数指针变量所指向的函数的返回类型和参数类型。第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。

2023-11-19 18:16:12 50

原创 CSDN中MD编辑器的使用技巧

【代码】CSDN中MD编辑器的使用技巧。

2023-11-16 18:34:58 92 1

原创 FreeRTOS_临界资源管理

为确保临界段代码的执行不被中断,在进入临界段之前须关中断,而临界段代码执行完毕后,要立即开中断。如果有别的任务来跟你竞争临界资源,你可以把中断关掉:这当然可以禁止别的任务运行,但是这代价太大了。如果只是禁止别的任务来跟你竞争,不需要关中断,暂停调度器就可以了:在这期间,中断还是可以发生、处理。宏,是可以递归使用的,它的内部会记录嵌套的深度,只有嵌套深度变为0时,调用。宏,是可以递归使用的,它的内部会记录嵌套的深度,只有嵌套深度变为0时,对于临界段要做到执行时间越短越好,否则会影响系统的实时性。

2023-11-15 21:58:55 118

原创 FreeRTOS_软件定时器(Timer)

队列的使用可以使定时器和守护任务之间实现解耦,提高系统的可扩展性和灵活性。守护任务可以根据队列中的消息进行动态调度和管理定时器,而定时器任务只需负责按时触发定时器和发送相应的消息到队列,而无需关心具体的处理逻辑。软件定时器的守护任务是一个负责管理和处理软件定时器的后台任务。在创建软件定时器时,需要指定回调函数,在定时器到期时,FreeRTOS自动调用该函数。动态分配内存的定时器,当我们不需要使用时可以将其删除以回收内存。创建软件定时器有两种方法:动态分配内存和静态分配内存。

2023-11-14 11:03:06 301

原创 FreeRTOS_直接任务通知(Driect Task Notifications)

我们使用队列、信号量、事件组时,都需要提前创建对应的结构体,双方通过中间的结构体进行通信。使用任务通知时,允许一个任务直接通知另一个任务进行操作,不需要经过中间结构体。任务通知的结构体是由FreeRTOS内核在任务创建时自动创建的,并且会直接关联到相应的任务句柄上。一个8位的通知状态变量;一个32位的通知值变量ISR只能发送任务通知,无法接收任务通知。通知的数据只能由相应的任务独享。发送方无法进入堵塞状态,接收方可以堵塞等待。

2023-11-13 10:04:04 105

原创 FreeRTOS_事件组(Event Group)

马上就要上课了,老师正在教室里等待:张三、李四、王五都到教室了,那就可以开始上课了。快下课时,老师说这道题回答完就可以下课了,谁举手谁就来回答。

2023-11-12 16:42:18 109 1

原创 FreeRTOS_互斥量(Mutex)

资源还是共享的,线程间也还是竞争的,但通过锁将资源的访问变为互斥操作,而后与时间有关的错误也不会在产生了。互斥量是一种特殊的信号量,所以获取、释放、删除的API基本和信号量的通用。互斥量的获取、释放一般不在中断中执行,所以此处无FromISR结尾函数。每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束后解锁。注意:同一个时刻,只能有一个线程持有该锁。使用互斥量时,先创建,然后获取,再释放。互斥量是一种特殊的二进制信号量。在有多线程访问共享资源时使用。

2023-11-11 22:00:59 238 1

原创 FreeRTOS_信号量(Semaphore)

若同时有多个消费者,则会有先提供给优先级更高的,若优先级相等,则提供给等待时间最长的。当消费者想要获得资源时,若信号量的计数值未0,则消费者可以阻塞也可以直接返回失败。当生产者”give“资源后,就会将计数值加1,并且唤醒正在阻塞等待的消费者。此函数用于删除使用动态方法创建的信号量,它会释放回收资源并避免内存泄漏。信号量的使用流程:创建信号量、添加资源、获得资源、删除信号量。读写信号量的函数有两套:在任务中使用、在ISR中使用。,所以更加节省内存,并且容易维护。信号量根据最大计数值的不同分为。

2023-11-11 17:21:54 177 1

原创 上下拉电阻详解

本文档根据(B站UP主-爱上半导体)视频编写链接:上拉电阻链接:下拉电阻上拉、下拉电阻统一称为拉电阻,作用是将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉)上下拉电阻的阻值选择最常用的是10K。

2023-11-10 21:47:09 117 1

原创 FreeRTOS_队列(Queue)

当有多个任务等待读写队列时,优先级最高的任务会先进入就绪态;若多个任务的优先级相同,则等待最久的任务会优先进入就绪态。中断只能使用以 “FromISR” 结尾的 API 函数。队列的使用流程:创建队列、写队列、读队列、删除队列。写队列的函数有两套,在任务中使用、在ISR中使用。)时使任务进入堵塞状态,提高CPU的运行效率。使用队列来传递数据可以在读写不成功(队列的创建和任务的创建类似,分为。队列(queue)可以用于"

2023-11-06 22:28:15 157

原创 FreeRTOS_任务管理

如果任务当前正在等待时间或外部事件,则该任务被认为处于阻塞状态。例如,如果一个任务调用vTaskDelay(),它将被阻塞(被置于阻塞状态), 直到延迟结束。处于阻塞状态的任务通常有一个"超时"期, 超时后任务将被超时,并被解除阻塞, 即使该任务所等待的事件没有发生。当任务实际执行时,它被称为处于运行状态。与“阻塞”状态下的任务一样, “挂起”状态下的任务不能 被选择进入运行状态,但处于挂起状态的任务 没有超时。任务已经准备好进入运行态了,但是还有其它任务正在运行,此时,它就处于就绪态。

2023-11-04 20:57:53 89 1

原创 STM32故障记录——printf重定向

项目场景:在使用STM32的串口打印数据时,对printf进行重定向,遇到的一些报错和不能正常使用的问题,在这里做下记录!此警告通常是因为没有包含头文件“stdio.h”,因为printf也是一个库函数,它的声明在stdio.h文件中。一般是因为没有在“魔法棒”中勾选“Use MicroLIB”.

2023-10-30 20:00:55 236 1

原创 ARM架构简明教程

根据韦东山老师视频教程编写。变量能读能写,故保存在内存中。因为内存具有较大的存储容量和较高的读写速度,可以方便的存储和读写程序中的数据,相比之下,寄存器容量较小,且个数有限,仅能存储少量数据。所以,程序中的变量通常会先储存在内存中,然后被操作时暂存到寄存器中进行,以提高程序的运行效率.而Flash中存储的是程序代码和常量数据,不适合存储变量数据,Flash虽然可读可写,但对其进行写操作十分复杂。

2023-10-29 22:22:46 89

原创 使用CubeMX创建FreeRTOS工程

最近在跟着百问网韦东山老师学习FreeeRTOS。第一个任务就是利用CubeMX创建一个FreeRTOS工程,在这里简单记录一下步骤。

2023-10-21 21:03:56 448 1

原创 #define和typedef的区别

今天在写程序时用#define给GPIO的引脚重定义了一个有具体意义的名字,方便程序阅读和后续移植。在过程中突然想到typedef也可以实现重定义的功能,但是对于两者具体有哪些异同还不是很了解,所以写一篇文章来学学记录一下。typedef和define可对一个对象进行 取别名(typedef) 或 字符替换(define) ,以此增强程序的可读性。

2023-10-20 11:37:48 43 1

原创 利用D触发器做正交编码器鉴相

在Stm32中,定时器有专门的编码器测速模式来实现硬件测速和鉴相(需要占用一整个定时器),但是在实际应用中,我们的定时器资源是很有限的,而且有些MCU是不带编码器测速模式的。正交编码器会输出A、B两相方波信号,我们可以直接测单位时间内任一相方波信号的上升沿或下降沿的个数来等效出一个速度,但是要测电机的转向,还需要看A、B两相的相位差。在AC2、AC1分别接入A、B两相方波信号,然后在使用时用单片机读取OUT1的电平,即可判断当前电机转向(实际的电机转向和高低电平的对应关系需要具体判断)。

2023-10-19 22:10:04 211

原创 Stm32最小系统板的构成详解

(1)上电复位:在上电瞬间,C2电容的充电电流很大,电容相当于短路,RESET出现短暂的低电平,这个低电平会对单片机进行复位。在Stm32F103C8T6最小系统板中,有内部自带的一个8MHZ的RC时钟,外部8MHZ晶振(最常用,方便备频,频率稳定)和一个32.768KHZ的外部晶振(一般给实时时钟模块RTC使用)组成。stm32的工作电压一般是3.3V,在实际应用中,多是为其提供5V电源,然后经LDO(低压差线性稳压器)转为3.3V,另外电路中还要加些去耦电容对输入、输出电压进行滤波,稳定电压。

2023-10-19 19:44:51 3908 1

原创 FreeRTOS_空闲任务

总结整理下freertos中空闲任务的作用,加深下理解。

2023-10-18 00:12:40 153 1

原创 ESP32+FreeRTOS

对FreeRTOS主要API进行整理

2023-10-13 20:43:36 798

原创 常见通信协议问题整理

常见通信协议问题整理

2023-10-13 19:56:57 72

蓝桥杯单片机组历届省赛、国赛题目 单片机资源数据包-2023

内容概要:蓝桥杯单片机组历届省赛、国赛题目资源包,包含了历年来蓝桥杯单片机组比赛的题目。 适用人群:对单片机编程和电子设计有兴趣的学生、工程师和爱好者。 使用场景及目标:该资源包可作为学习、练习和备战蓝桥杯单片机组比赛的参考资料。通过研究历届的省赛、国赛题目,使用者可以了解比赛的难度、题型和考察的知识点,从而有针对性地进行学习和准备。 其他说明:该资源包提供的是历届省赛、国赛的单片机组题目,可供学习和参考,但不包含解题思路和答案。使用者需要自己进行思考和实践,以提升自己的单片机编程和电子设计能力。同时,建议在学习过程中结合其他教材、在线教程和实际项目进行综合学习和实践,以获取更全面的知识和技能。

2023-11-11

空空如也

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

TA关注的人

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