自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32 HAL 独立看门狗

独立看门狗主要作用:设定好超时时间,在超时时间内没有喂狗,单片机就会复位。本次通过STM32CubeMX进行配置,具体细节如下文。

2025-01-04 16:57:43 309

原创 STM32 HAL 矩阵按键(轮询方式)

最近准备做个门禁系统,首先通过4x4矩阵按键实现密码的设定,查看网上资料完成了4x4矩阵按键的初步使用,整理一个傻瓜式操作方便后续的使用与复习。

2024-11-14 15:05:49 213

原创 解决STM32 烧录程序后无法在内部FLASH保存数据问题

FLASH设定后,存储数据断电数据不会丢失,重新烧录程序后数据就会丢失,解决过程如下。

2024-11-06 16:17:23 408

原创 STM32 HAL PWM (占空比) -电机软启动不到位解决

为了避免电机启动电压大造成设备损坏,或者供电不足导致重启,通常在对启动都需要一个PWM进行软启动,下面对PWM电机软启动详细介绍。

2024-10-12 23:13:02 484 1

原创 STM32 HAL 内部FLASH傻瓜式教程 各种型号单片机都适用主要解决网上例程HAL库无法写入问题

STM32 HAL 内部FLASH傻瓜式教程 各种型号单片机都适用主要解决网上例程HAL库无法写入问题

2024-10-07 22:31:06 291

原创 STM32单片机 内存 字 字节 位关系详细讲解

STM32结合Freertos、ucous等操作系统后,经常需要考虑内存管理问题,但是对于小白来说,经常搞不清内存的关系,本文主要基于实际出发,讲解内存STM32内存关系。

2024-09-16 20:32:00 777

原创 STM32 HAL freertos零基础(十一)中断管理

在FreeRTOS中,中断管理是一个重要的方面,尤其是在嵌入式系统中。正确地处理中断可以确保系统的实时响应能力,并且能够在中断服务程序(ISR)中执行关键操作。FreeRTOS提供了一些机制来帮助开发者管理中断,并确保在多任务环境下中断处理的安全性和高效性。在我们的操作系统,中断的优先级并不是从 0~15 ,默认情况下它是从 5~15 ,0~4 这 5 个中断优先级不是 FreeRTOS 控制的(5是取决于 configMAX_SYSCALL_INTERRUPT_PRIORITY)。

2024-09-15 21:52:25 513

原创 STM32 HAL freertos零基础(十)软件定时器

在FreeRTOS中,软件定时器提供了一种方便的方式来管理基于时间的任务。软件定时器可以被用来执行周期性的任务,也可以用来在一定时间后执行一次性的任务。软件定时器的使用可以使代码更加模块化和可维护。软件定时器有单次、周期两种:单次定时器: 只超时一次,调用一次回调函数。可手动再开启定时器;周期定时器: 多次超时,多次调用回调函数。

2024-09-15 12:48:55 367

原创 STM32 HAL freertos零基础(九)任务通知

任务通知用于任务之间同步和通信。任务通知允许一个任务向另一个任务发送一个32位的值,并可以选择是否唤醒正在等待通知的任务。这使得任务之间的同步更加简单和灵活。任务通知功能:发送通知:一个任务可以向另一个任务发送一个32位的值。接收通知:接收任务可以根据接收到的通知来决定何时执行某些操作。通知状态:可以检查任务的当前通知状态。

2024-09-14 11:14:15 422

原创 printf中的标志字符为-、+、#、空格等

printf中的标志字符为-、+、#、空格等

2024-09-12 10:34:15 256

原创 STM32 HAL freertos零基础(八)事件标志组

事件标志组是一种轻量级的同步原语,用于在任务之间传递信息。每个标志组实际上是一个32位的整数,其中每一位都可以作为一个单独的标志位。这些标志位可以被任务设置、清除和等待。虽然是32位,但是高8位用于存储事件标志组的控制信息,!!!本次创建一个事件标志组,在任务1中进行串口接收,检测到串口调试助手发送A、B,任务2运行。

2024-09-12 10:17:38 431

原创 STM32 HAL freertos零基础(七)互斥量

互斥量主要用于保护共享资源的访问,确保在同一时刻只有一个任务可以访问该资源。互斥性:当一个任务获取了一个互斥量后,其他任务将无法再获取同一个互斥量,直到原始任务释放该互斥量。优先级继承:为了防止优先级反转问题,FreeRTOS的互斥量支持优先级继承机制。当一个高优先级任务被低优先级任务阻塞时,低优先级任务会暂时提升自己的优先级,以尽快释放互斥量,让高优先级任务继续执行。

2024-09-11 17:37:05 376

原创 STM32 HAL freertos零基础(六)计数型信号量

计数型信号量(Counting Semaphore)是另一种类型的信号量,它可以保持一个大于等于0的整数值,这个值表示可用资源的数量。本质上相当于队列长度大于1得队列。经典问题就是剩余车辆统计,出入车辆,车辆数据可以实时更新。

2024-09-11 09:20:20 329

原创 STM32 HAL freertos零基础(五) STM32CubeMX配置完成后自定义二值信号量 解决二值信号量初始值为1问题

通过上文虽然实现了二值信号量实战,但每次配置STM32CubeMX二值信号量都恢复默认值1,为了解决该问题,对于二值信号量通过CubeMX配置完成后,在程序内自定义二值信号量。

2024-09-10 22:36:05 403

原创 STM32 HAL freertos零基础(四) 二值信号量

FreeRTOS中的二值信号量是一种用于任务间同步的机制,它只能有两个状态:0 或 1。二值信号量通常用来表示某个事件是否发生,比如硬件中断发生时设置信号量为1,表示事件已发生;而任务在需要等待该事件发生时,会尝试获取信号量,若信号量为0则任务会被挂起等待,直到信号量变为1。二值信号量本质就是一个长度为1,大小为零的队列,只有0和1两种状态,通常情况下,用它来进行互斥访问或任务同步。

2024-09-10 17:53:15 327

原创 STM32 HAL freertos零基础(三) 队列

在裸机开发时候,一般都是设定一个全局变量来数据修改传递等,但是在Freertos系统中,如果设定全局变量,当任务1对全局变量a进行操作,可能此时任务2也在对变量a进行操作,会出现问题,此时就需要队列。队列可以用于在不同的任务之间或者任务和中断服务程序之间传递数据。

2024-09-10 12:28:59 355

原创 STM32 HAL freertos零基础(二)-通过STM32CubeMX配置Freertos后在程序中进行任务创建,便于任务管理与识别。

通过STM32CubeMX配置Freertos后,建立的任务都在freertos.c文件中,不易于观察,并且每次生成新任务还需要打开STM32CubeMX,本次教程讲解一种通过STM32CubeMX配置Freertos后在程序中进行任务创建,起到类似添加传感器建立新的文件的效果。

2024-09-09 16:07:12 993

原创 STM32 HAL freertos零基础(一)-任务创建

本次教程基于STM32CubeMX进行单片机与Freertos初始化配置,对使用Freertos进行实际操作介绍,并且分享一些使用过程中的小技巧与踩过的坑,在充当笔记的同时也方便小白快速上手。

2024-09-09 12:30:24 355

原创 STM32 HAL CAN通讯 实操

相比于串口通讯,对于刚接触CAN通讯的小白来说,CAN通讯相对复杂,看各种视频、帖子理论,总是一知半解。本次通过傻瓜式操作,先实现CAN通讯的交互,以提高小白的信心,也便于自己复习观看。本次以STM32CubeMX进行初始化配置,通过Keil 5软件进行软件设计,通过CAN盒实现进行数据的交互。该流程实际以STM32F0、F1、F3、F4、F7实测好用(理论上都适用),这三种型号单片机可以无脑操作。

2024-09-07 10:03:15 588 2

原创 STM32 HAL CAN (TJA1050CAN模块) 通讯(一)理论

CAN具备多个设备交互的能力,但是网上大多是两个单片机进行交互,或者单片机通过CAN收发器与上位机进行交互测试,本次通过STM32cubeMX完成CAN通讯配置,并通过多个单片机进行数据交互测试。

2024-09-04 16:31:15 552

原创 STM32CubeMX生成freertos默认设置卡死,卡在HAL_Init不动,裸机运行程序正常跑,解决方法

最近通过STM32CubeMX生成freertos发现任务不执行,卡在HAL_Init不动,网上找很久不好使,刚开始怀疑硬件问题,但是裸机运行程序正常跑,然后怀疑软件有问题,但是对F1,F3系列都好使,仅仅对F4系列不行,然后通过对F4固件包升级得以解决。

2024-09-01 09:09:09 857 1

原创 FreeRTOS/Source/CMSIS_RTOS_V2/freertos_os2.h(31): error: #13: expected a file name 报错

解决如下:修改cubemx配置,将V1.8.6改选为V1.8.5后编译不再报错。使用STM32cubemx自动生成freertos选项V2报错,V1不报错。

2024-08-31 14:20:08 1171 1

原创 STM32通过ADM3222完成UART转232通信电平转换

单片机默认串口输出电平是UART信号,但是在实际项目中经常需要将其转换成232电平,此时就需要ADM3222芯片来完成电平的转换,下面对使用过程进行总结。

2024-08-31 11:12:46 528

原创 Keil The selected deivce“xxx“is unknown。。。识别到芯片依然烧录不进去程序解决或者未识别

之前一直用DAP烧录,用Jlink后烧录发现不行 在网上找了很多教程,版本等问题都一一排查依然不行 最后通过修改Port解决。。。。

2024-08-29 13:37:05 527

原创 STM32 HAL SDADC DMA

由于项目需要使用STM32F373单片机的SDADC功能对电位计进行检测,网上资料比较少,踩了很多坑,下面进行总结。

2024-08-23 16:28:26 658 2

原创 Keil Error-Flash Download failed Cortex-M4 擦除芯片还不好使的方案!!!

点击魔术棒-Debug-Settings后看到SWDIO可以正常识别,但是点击Reset下拉只有三个选项。回到Reset,此时多了Autodetet选项,选择这个选项后,即可正常烧录。此时点击Pack,将Enable勾去掉。

2024-08-23 11:04:31 992

原创 UART转CAN(串口转CAN)-ZLG CSM100-L配置

由于项目需要通过STM32F373VCT6单片机实习两路CAN通讯,但此板卡仅具有一路CAN通讯,因此通过ZLG CSM100-L芯片实现串口转CAN。

2024-08-23 10:27:53 823

原创 Vscode编译运行多个C++文件

在使用Vscode编译单个文件网上很多教程,但是对多个文件编译会发现经常出问题,通过不断的借阅网友的教程改进终于完成C++运行多个文件教程如下:

2024-02-05 12:16:49 3103

原创 YOLOV5 显示预测结果

YOLOV5 显示预测结果

2024-01-08 10:18:42 548

原创 openCV入门

本文主要通过对啥都会一点研究生系列进行总结,对关键代码进行注释,方便使用以及复习。

2024-01-05 11:00:31 727

原创 论文-三线表

三线表

2023-12-27 20:19:09 698

原创 C语言-数组(一)

在C语言中,数组是一种相同数据类型元素的集合,存储在连续的内存位置上。数组允许将相关的数据组合在一起,以便更方便地进行操作和管理。

2023-12-21 13:09:42 107

原创 STM32与Freertos入门(七)信号量

FreeRTOS提供了二值信号(Binary Semaphore)作为一种同步机制,用于在任务之间进行简单的通信和同步操作。二值信号是一种特殊类型的信号量,只能有两种状态:0(未触发)和1(已触发)。以下是关于FreeRTOS二值信号的一些详细介绍和用法:信号创建:可以使用FreeRTOS提供的API函数创建二值信号。在创建信号时,需要指定初始状态。可以选择将信号初始化为未触发(0)或已触发(1)。信号等待:任务可以使用函数等待二值信号。

2023-12-16 15:33:46 228

原创 STM32与Freertos入门(六)队列

队列是FreeRTOS提供的一种重要的通信机制,用于在任务之间传递数据。FreeRTOS队列是一种先进先出(FIFO)的数据结构,用于在任务之间传递消息或数据项。它允许一个任务将数据项发送到队列,而另一个任务则可以从队列中接收这些数据项。以下是FreeRTOS队列的一些重要特点和用法:队列创建:可以使用FreeRTOS提供的API函数创建队列。在创建队列时,需要指定队列的最大长度和每个数据项的大小。发送数据:任务可以使用函数将数据项发送到队列中。如果队列已满,发送操作将被阻塞,直到有空间可用。

2023-12-16 14:06:02 848

原创 STM32与Freertos入门(五)任务案例

通过两个按键任务分别控制不同的点灯案例创建 4 个任务:在点灯任务的基础上在创建两个按键任务:Task_led:间隔 500ms 闪烁 LE1;Task_led2:间隔 1000ms 闪烁 LED2;Task_key:如果 Task_led存在,则按下 KEY 后删除 Task_led,否则创建 Task_led;Task_key2:如果 Task_led2正常运行,则按下 KEY2 后挂起 Task_led2,否则恢复 Task_led2

2023-12-16 12:48:48 352

原创 STM32与Freertos入门(四)任务调度的介绍

FreeRTOS支持的任务调度方法有抢占式、协作式、时间片轮转

2023-12-15 20:07:07 352

原创 STM32与Freertos入门(三)任务的创建、删除

通过创建不同的任务进行点灯

2023-12-15 19:26:21 295

原创 stm32与Freertos入门(二)移植FreeRTOS到STM32中

本次使用的单片机型号为STM32F103C8T6,通过CubeMX快速移植。

2023-12-15 18:26:45 268

原创 ubuntu学习(六)----文件编程实现cp指令

ubuntu学习(六)----文件编程实现cp指令

2023-08-27 16:34:19 1099

原创 ubuntu学习(五)----读取文件以及光标的移动

ubuntu学习(五)----读取文件以及光标的移动

2023-08-25 20:48:59 1102

空空如也

空空如也

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

TA关注的人

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