STM32 HAL 内部FLASH傻瓜式教程 各种型号单片机都适用主要解决网上例程HAL库无法写入问题 STM32 HAL 内部FLASH傻瓜式教程 各种型号单片机都适用主要解决网上例程HAL库无法写入问题
STM32单片机 内存 字 字节 位关系详细讲解 STM32结合Freertos、ucous等操作系统后,经常需要考虑内存管理问题,但是对于小白来说,经常搞不清内存的关系,本文主要基于实际出发,讲解内存STM32内存关系。
STM32 HAL freertos零基础(十一)中断管理 在FreeRTOS中,中断管理是一个重要的方面,尤其是在嵌入式系统中。正确地处理中断可以确保系统的实时响应能力,并且能够在中断服务程序(ISR)中执行关键操作。FreeRTOS提供了一些机制来帮助开发者管理中断,并确保在多任务环境下中断处理的安全性和高效性。在我们的操作系统,中断的优先级并不是从 0~15 ,默认情况下它是从 5~15 ,0~4 这 5 个中断优先级不是 FreeRTOS 控制的(5是取决于 configMAX_SYSCALL_INTERRUPT_PRIORITY)。
STM32 HAL freertos零基础(十)软件定时器 在FreeRTOS中,软件定时器提供了一种方便的方式来管理基于时间的任务。软件定时器可以被用来执行周期性的任务,也可以用来在一定时间后执行一次性的任务。软件定时器的使用可以使代码更加模块化和可维护。软件定时器有单次、周期两种:单次定时器: 只超时一次,调用一次回调函数。可手动再开启定时器;周期定时器: 多次超时,多次调用回调函数。
STM32 HAL freertos零基础(九)任务通知 任务通知用于任务之间同步和通信。任务通知允许一个任务向另一个任务发送一个32位的值,并可以选择是否唤醒正在等待通知的任务。这使得任务之间的同步更加简单和灵活。任务通知功能:发送通知:一个任务可以向另一个任务发送一个32位的值。接收通知:接收任务可以根据接收到的通知来决定何时执行某些操作。通知状态:可以检查任务的当前通知状态。
STM32 HAL freertos零基础(八)事件标志组 事件标志组是一种轻量级的同步原语,用于在任务之间传递信息。每个标志组实际上是一个32位的整数,其中每一位都可以作为一个单独的标志位。这些标志位可以被任务设置、清除和等待。虽然是32位,但是高8位用于存储事件标志组的控制信息,!!!本次创建一个事件标志组,在任务1中进行串口接收,检测到串口调试助手发送A、B,任务2运行。
STM32 HAL freertos零基础(七)互斥量 互斥量主要用于保护共享资源的访问,确保在同一时刻只有一个任务可以访问该资源。互斥性:当一个任务获取了一个互斥量后,其他任务将无法再获取同一个互斥量,直到原始任务释放该互斥量。优先级继承:为了防止优先级反转问题,FreeRTOS的互斥量支持优先级继承机制。当一个高优先级任务被低优先级任务阻塞时,低优先级任务会暂时提升自己的优先级,以尽快释放互斥量,让高优先级任务继续执行。
STM32 HAL freertos零基础(六)计数型信号量 计数型信号量(Counting Semaphore)是另一种类型的信号量,它可以保持一个大于等于0的整数值,这个值表示可用资源的数量。本质上相当于队列长度大于1得队列。经典问题就是剩余车辆统计,出入车辆,车辆数据可以实时更新。
STM32 HAL freertos零基础(五) STM32CubeMX配置完成后自定义二值信号量 解决二值信号量初始值为1问题 通过上文虽然实现了二值信号量实战,但每次配置STM32CubeMX二值信号量都恢复默认值1,为了解决该问题,对于二值信号量通过CubeMX配置完成后,在程序内自定义二值信号量。
STM32 HAL freertos零基础(四) 二值信号量 FreeRTOS中的二值信号量是一种用于任务间同步的机制,它只能有两个状态:0 或 1。二值信号量通常用来表示某个事件是否发生,比如硬件中断发生时设置信号量为1,表示事件已发生;而任务在需要等待该事件发生时,会尝试获取信号量,若信号量为0则任务会被挂起等待,直到信号量变为1。二值信号量本质就是一个长度为1,大小为零的队列,只有0和1两种状态,通常情况下,用它来进行互斥访问或任务同步。
STM32 HAL freertos零基础(三) 队列 在裸机开发时候,一般都是设定一个全局变量来数据修改传递等,但是在Freertos系统中,如果设定全局变量,当任务1对全局变量a进行操作,可能此时任务2也在对变量a进行操作,会出现问题,此时就需要队列。队列可以用于在不同的任务之间或者任务和中断服务程序之间传递数据。
STM32 HAL freertos零基础(二)-通过STM32CubeMX配置Freertos后在程序中进行任务创建,便于任务管理与识别。 通过STM32CubeMX配置Freertos后,建立的任务都在freertos.c文件中,不易于观察,并且每次生成新任务还需要打开STM32CubeMX,本次教程讲解一种通过STM32CubeMX配置Freertos后在程序中进行任务创建,起到类似添加传感器建立新的文件的效果。
STM32 HAL freertos零基础(一)-任务创建 本次教程基于STM32CubeMX进行单片机与Freertos初始化配置,对使用Freertos进行实际操作介绍,并且分享一些使用过程中的小技巧与踩过的坑,在充当笔记的同时也方便小白快速上手。
STM32 HAL CAN通讯 实操 相比于串口通讯,对于刚接触CAN通讯的小白来说,CAN通讯相对复杂,看各种视频、帖子理论,总是一知半解。本次通过傻瓜式操作,先实现CAN通讯的交互,以提高小白的信心,也便于自己复习观看。本次以STM32CubeMX进行初始化配置,通过Keil 5软件进行软件设计,通过CAN盒实现进行数据的交互。该流程实际以STM32F0、F1、F3、F4、F7实测好用(理论上都适用),这三种型号单片机可以无脑操作。
STM32 HAL CAN (TJA1050CAN模块) 通讯(一)理论 CAN具备多个设备交互的能力,但是网上大多是两个单片机进行交互,或者单片机通过CAN收发器与上位机进行交互测试,本次通过STM32cubeMX完成CAN通讯配置,并通过多个单片机进行数据交互测试。
STM32CubeMX生成freertos默认设置卡死,卡在HAL_Init不动,裸机运行程序正常跑,解决方法 最近通过STM32CubeMX生成freertos发现任务不执行,卡在HAL_Init不动,网上找很久不好使,刚开始怀疑硬件问题,但是裸机运行程序正常跑,然后怀疑软件有问题,但是对F1,F3系列都好使,仅仅对F4系列不行,然后通过对F4固件包升级得以解决。