自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stm32cubemx设置系统时基的两种方式和区别(systick和timer)

用systick作为时基的时候,HAL_Init中的HAL_InitTick函数会通过HAL_SYSTICK_Config函数对systick中断的时间配置为1ms。用HAL_GetTick来获取这个值,然后用每次获取的这个值减去刚进入HAL_Delay的时候的那个时间的这个变量的值做减法,就是进了多少次tim的中断,也就是过了多少ms,用这个两个的差值与HAL_Delay传入的参数值(这个参数值就是延时多少ms的数值)做对比,当比它大的时候,结束while循环,也就是延时时间到了,退出函数。

2024-11-08 15:12:56 505

原创 FreeRtos笔记--创建队列和信号量的区别

介绍了FreeRTOS里创建队列和信号量的步骤及创建队列与信号量的区别

2024-07-12 16:45:54 959

原创 FreeRtos的时间管理

FreeRTOS的延时函数

2024-07-05 16:05:07 885

原创 FreeRTOS调度器解挂(xTaskResumeAll)的理解

实际上是说,正常来说,假设调度器挂起的这段时间,没有挂起调度器,那么滴答定时器的处理函数会按部就班的进行,那么xTaskIncrementTick函数也会按部就班的执行,我们在看xTaskIncrementTick代码的时候,里面有一个if判断,就是当调度器没有被挂起的时候,记录时钟的全局变量是xTickCount,那么如果调度器被挂起了呢,这时候变成了uxPendedTicks这个变量。这样确保了滴答定时器的计数不会滑动,并且任何在延时的任务都会在正确的时间恢复。=0的那个分支,也就是else中由。

2024-07-03 17:03:25 906

原创 FreeRTOS上下文切换问题--pendSV和Systick优先级为什么要设定为最低

其实在写文章中,笔者发现,无论是设置SysTick异常优先级最低,还是让中断优先级比SysTick异常低,都会有一个问题,就是谁的优先级低,谁的执行就会被挂起从而导致延迟,这么搞的话,要得到完美的操作系统是不可能的,两弊相衡取其轻,我们需要的是中断的执行要迅速,从而做到实时性,没有说任务切换需要实时性吧。因此把SysTick异常的优先级定的最低,是满足设计RTOS的初衷的。

2024-06-19 14:22:06 1206

原创 外部中断初始化函数分析

当然这样说还没说清楚,这样写的目的是因为,我们这个EXTI_Line成员这样赋值,是因为这个值到了EXTI_Init这个初始化函数中去用的时候,都是和32bit的寄存器进行与或非加运算的,比如:IMR寄存器是EXTI基地址上的那个寄存器,它一定是一个32bit的寄存器吧,你这时候用的是线5,你如果直接用这个32bit的寄存器的地址加5,二进制的5是0x5,实际就是将寄存器的0bit和2bit给置1了,这肯定就是错的。第二,有了物理线,那信号来了是要产生中断还是产生事件呢?

2024-06-13 16:24:12 627

原创 cortex-m3中断及异常(NVIC和SCB的作用)

写具体内容之前,说点闲话。不知道大家有没有这样的体验,在学单片机(stm32)的中断的时候,首先学习的就是外部中断,也就是EXTI这个外设。因为总以为只要是中断讲的就是外部中断,因此以为学习了EXTI就是学完了中断,但是又发现只要用中断就要用NVIC以及SCB中的AIRCR这个寄存器。所有就会很混乱,到底那个才是中断的最合理的学习对象。其实学习中断,最应该仔细研究的是NVIC和SCB,NVIC和SCB都是内核的外设,NVIC这个外设就是用来管理所有的中断的,但是有它还不够,注意这里说的是中断,不包括异常。

2024-06-13 14:09:08 1399 1

原创 LED初始化的汇编代码简析

野火关于LED初始化的汇编分析

2024-04-17 23:07:18 256

原创 FreeRTOS任务调度之如何跳转到用户任务

以上执行完了就到了任务执行体中,当然在任务执行体中会有一个切换的异常唤醒,任务的切换就是在那个异常中执行的,内容与本文无关。本文的目的就是让与笔者有同样困惑于启动第一个任务的执行过程的朋友,去理解FreeRTOS是如何根据ARM内核的工作特性去完成启动一个已经初始化好的任务的,重点就是关注两个任务栈的在什么工作状态下的切换,以及关注出入栈的寄存器的值,因为寄存器的值直接影响到各个函数之间跳转的理解。

2023-10-24 11:03:44 345

原创 关于I2C写EEPROM的几种写函数

I2C写EEPROM

2022-11-24 22:14:28 444

原创 关于野火STM32的I2C发送/接收通讯过程的理解(纠错)

STM32硬件I2C的发送通讯流程

2022-11-24 14:37:27 1217

原创 STM32的USART理解--1

简单的USART概念理解

2022-11-16 14:57:21 1445

原创 STM32外部中断(EXTI)固件库函数EXTI_Init分析

stm32外部中断初始化函数EXTI_Init的理解

2022-11-10 23:23:03 3232

参照野火编写的KEIL5工程模版

stm32f103芯片的KEIL5工程模版,直接在USER目录下添加bsp支持包就行了,另外有些配置可以留言提问,或者参照火哥的教程

2023-07-31

空空如也

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

TA关注的人

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