- 博客(16)
- 收藏
- 关注
原创 FreeRTOS消息队列
队列是为了任务与任务、 任务与中断之间的通信而准备的, 可以在任务与任务、 任务与中断之间传递消息, 队列中可以存储有限的、 大小固定的数据项目。任务与任务、 任务与中断之间要交流的数据保存在队列中, 叫做队列项目。队列所能保存的最大数据项目数量叫做队列的长度, 创建队列的时候会指定数据项目的大小和队列的长度。由于队列用来传递消息的, 所以也称为消息队列。
2024-06-10 18:06:37
892
原创 TIM—通用定时器&高级定时器
通用/高级定时器的功能在基本定时器功能的基础上新增功能:通用定时器有4个独立通道,且每个通道都可以用于下面功能。(1)输入捕获:测量输入信号的周期和占空比等。(2)输出比较:产生输出特定的波形(根据自己需要设置)。(3)输出PWM。(4)单脉冲模式.(5)级联。(一个定时器的溢出事件可以使能下一个定时器的计数器开始计数)(6)可以触发DAC、ADC。(7)支持编码器和霍尔传感器电路。
2024-06-09 19:20:28
1216
原创 FreeRTOS任务管理
从系统的角度看, 任务是竞争系统资源的最小运行单元。FreeRTOS 是一个支持多任务的操作系统。在 FreeRTOS 中, 任务可以使用或等待 CPU、 使用内存空间等系统资源, 并独立于其它任务运行, 任何数量的任务可以共享同一个优先级, 如果宏 configUSE_TIME_SLICING 定义为1, 处于就绪态的多个相同优先级任务将会以时间片切换的方式共享处理器。FreeRTOS 的任务可认为是一系列独立任务的集合。每个任务在自己的环境中运行。
2024-06-05 16:41:01
582
原创 TIM—基本定时器
TIM 定时器是 STM32 中功能最强大、结构最复杂的一个外设。其基本功能是可以从名字的得出“定时”,定时器可以对输入的时钟进行计数,并且在计数值达到设定值时出发中断。其内部拥有 16 位计数器、预分频器、自动重装寄存器的时基单元,在 72MHz 计数时种下可以实现最大 59.65S 定时。除了基本的定时中断功能,其还包含内外时钟源选择、输入捕获、输入比较、编码器接口、主从触发等多种功能,定时器根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。
2024-06-04 15:36:42
913
原创 SPI 协议
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10M/bps。SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。
2024-06-02 17:11:46
705
原创 FreeRTOS任务创建
在 FreeRTOS 中,任务就是一个函数,原型如下: 这个函数不能返回 同一个函数,可以用来创建多个任务;换句话说,多个任务可以运行同一个函数 函数内部,尽量使用局部变量: 每个任务都有自己的栈 每个任务运行这个函数时 任务 A 的局部变量放在任务 A 的栈里、任务 B 的局部变量放在任务 B的栈里 不同任务的局部变量,有自己的副本 函数使用全局变量、静态变量的话 只有一个副本:多个任务使用的是同一个副本 要防止冲突在一个裸机系统中, 如果有全局变量, 有子函数调用, 有中断发生。
2024-06-01 18:04:38
534
原创 初识FreeRTOS
FreeROTS 就是一个免费的 RTOS 类系统。这里要注意, RTOS 不是指某一个确定的系统, 而是指一类系统。比如 UCOS、FreeRTOS、 RTX、 RT-Thread 等这些都是 RTOS 类操作系统。FreeRTOS 是 RTOS 系统的一种, FreeRTOS 十分的小巧, 可以在资源有限的微控制器中运行, 当然, FreeRTOS 不仅局限于在微控制器中使用。但从文件数量上来看 FreeRTOS 要比 UCOSII 和 UCOSIII 小的多。
2024-05-28 19:20:01
662
原创 I2C 协议
芯片: BH1750FVI 是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。工作原理: BH1750的内部由光敏二极管、运算放大器、ADC采集、晶振等组成。PD二极管通过光生伏特效应将输入光信号转换成电信号,经运算放大电路放大后,由ADC采集电压,然后通过逻辑电路转换成16位二进制数存储在内部的寄存器中(光照越强,光电流越大,电压就越大)。
2024-05-27 20:54:34
688
原创 DMA—直接存储区访问
* 定义aSRC_Const_Buffer数组作为DMA传输数据源* const关键字将aSRC_Const_Buffer数组变量定义为常量类型* 表示数据存储在内部的FLASH中*//* 定义DMA传输目标存储器* 存储在内部的SRAM中*/
2024-05-25 11:11:51
1058
原创 串口(USART)
串口通讯 (Serial Communication) 是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。
2024-05-24 18:36:30
1091
原创 SysTick—系统定时器
SysTick—系统定时器有 4 个寄存器,简要介绍如下。在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。
2024-05-21 11:12:11
371
原创 NVIC-嵌套向量中断控制器 EXTI-外部中断/事件控制器
在 NVIC 有一个专门的寄存器:中断优先级寄存器 NVIC_IPRx,用来配置外部中断的优先级, IPR宽度为 8bit,原则上每个外部中断可配置的优先级为 0~255,数值越小,优先级越高。但是绝大多数 CM3 芯片都会精简设计,以致实际上支持的优先级数减少,在 F103 中,只使用了高 4bit,如下所示用于表达优先级的这 4bit,又被分组成抢占优先级和子优先级。如果有多个中断同时响应,抢占优先级高的就会抢占抢占优先级低的优先得到执行,如果抢占优先级相同,就比较子优先级。如。
2024-05-21 10:00:15
931
原创 RCC( 复位和时钟控制器)
时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。STM32为了低功耗,他将所有的外设时钟都设置为disable(不使能),用到什么外设,只要打开对应外设的时钟就可以, 其他的没用到的可以还是disable(不使能),这样耗能就会减少。这就是为什么不管你配置什么功能都需要先打开对应的时钟的原因。
2024-04-06 21:54:20
1782
原创 STM32寄存器
存储器及存储器映射存储器及存储器映射芯片内部结构芯片(这里指内核,或者叫 CPU)和外设之间通过各种总线连接,其中驱动单元有 4 个,被动单元也有 4 个,为了方便理解,我们都可以把驱动单元理解成是CPU 部分,被动单元都理解成外设。系统框图下面来介绍驱动单元和被动单元驱动单元ICode总线ICode 中的 I 表示 Instruction,即指令。
2023-09-20 22:01:50
562
2
原创 初识STM32 — 基于野火指南者STM32F103VET6
STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、 I2C、 SPI 等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅, 3D 打印机等等。M— Microelectronics的缩写,表示微控制器,微控制器则是一种专门设计用于在嵌入式系统中执行控制应用的芯片,它通常包括输入/输出端口和接口,以及其他一些外围设备(例如定时器、存储器和通信接口)
2023-09-20 00:01:08
1952
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人