
单片机基础知识
文章平均质量分 52
介绍嵌入式、单片机等领域的基础知识
九层指针
单片机与嵌入式。
如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。
展开
-
一个基于Python的跨平台蓝牙测试上位机程序
该程序可直接在电脑上运行测试蓝牙通信,配合之前的STM32代码即可完成完整的通信测试流程。原创 2025-03-13 19:58:23 · 538 阅读 · 0 评论 -
STM32F103蓝牙通信实现方案
以上代码为简化示例,实际项目中需根据硬件设计和协议复杂度进行完善。原创 2025-03-13 19:54:01 · 530 阅读 · 0 评论 -
STM32CubeMX配置FreeRTOS操作流程
通过以上步骤,即可在STM32CubeMX中完成FreeRTOS的配置与任务创建。原创 2025-03-13 14:24:45 · 1888 阅读 · 0 评论 -
基于STM32F103RCT6的USART串口通信完整代码实现(配合STM32CubeMX)
通过上述代码和配置,可实现基本的USART双向通信。建议基于CubeMX生成的工程框架直接集成代码,确保编译环境正确。原创 2025-03-12 20:52:42 · 662 阅读 · 0 评论 -
STM32F103RCT6按键控制LED代码实现-HAL库
完整工程需配合STM32CubeMX生成的启动文件和链接脚本使用。建议通过CubeMX直接生成工程框架后,再将上述代码集成到。通过上述流程,您可以快速实现按键中断控制LED的功能,无需深入底层中断服务函数的细节。void EXTI0_IRQHandler(void)中断服务函数不需要用户实现吗?生成代码(选择IDE为MDK-ARM或STM32CubeIDE)处理中断标志,最终触发用户自定义的回调函数。已由CubeMX自动生成并集成在。在STM32 HAL库中,文件中,其内部会调用。原创 2025-03-12 20:46:17 · 576 阅读 · 0 评论 -
C语言中箭头操作符 -> 和点操作符 .的区别
(即通过指针间接访问实例的成员)。在C语言中,箭头操作符。原创 2025-03-12 10:40:41 · 267 阅读 · 0 评论 -
HAL_NVIC_SetPriority()和HAL_Delay()
STM32的中断控制器支持多级优先级,优先级数值越小(如0),优先级越高。当多个中断同时触发时,系统会优先处理高优先级的中断。竞争(Race Condition)若多个中断未正确设置优先级,可能导致低优先级中断长时间阻塞高优先级中断(如UART接收数据未及时处理导致丢失)。原则实现方法示例中断优先级分层通过配置抢占和子优先级回调函数轻量化仅设置标志位/状态变量,复杂逻辑移至主循环使用volatile全局变量传递状态非阻塞延时利用定时器中断或RTOS的计时功能。原创 2025-03-12 10:05:33 · 529 阅读 · 0 评论 -
ST公司的HAL(Hardware Abstraction Layer)库中的回调机制详解
* 重写UART发送完成回调 */if (huart->Instance == USART1) { // 判断触发外设// 自定义逻辑(如点亮LED)原创 2025-03-12 09:55:18 · 383 阅读 · 0 评论 -
lvgl为什么是c语言,还可以使用面向对象编程的思想?
LVGL(Light and Versatile Graphics Library)是一个开源的嵌入式图形库,旨在为微控制器和其他资源受限的设备提供功能丰富且易于使用的图形界面。原创 2025-03-11 23:52:47 · 426 阅读 · 0 评论 -
github和gitee
GitHub 是全球范围内最知名的社交编程及代码托管网站,拥有庞大的开发者社区,许多开源项目都在GitHub上托管和协作开发。Gitee,又称为码云,是中国的Git代码托管平台,它提供了类似于GitHub的服务,并针对中国市场进行了一些本地化的优化。GitHub 和 Gitee 是两个提供Git代码托管服务的平台,它们之间的关系主要是作为代码托管服务的竞争对手和补充。总的来说,GitHub和Gitee都是开发者进行代码托管和协作的优秀平台,用户可以根据自己的需求选择合适的平台使用。原创 2025-03-11 23:27:22 · 412 阅读 · 0 评论 -
STM32CubeMX生成的代码具有特定的代码管理规则
如果在非用户代码区(例如自动生成的函数内部或外设初始化代码之间)添加代码,CubeMX会认为这些代码是“自动生成”的,重新生成配置时会。若需扩展外设配置,应通过CubeMX工具重新配置并生成代码。,否则重新生成代码时,非指定区域的修改会被覆盖。STM32CubeMX生成的代码具有特定的代码管理规则,,导致自定义代码丢失。复杂逻辑应封装到独立的。原创 2025-03-11 20:43:15 · 783 阅读 · 0 评论 -
GPIO引脚时的**输出速度**(Output Speed)参数
在STM32微控制器中,配置GPIO引脚时的(Output Speed)参数,主要控制引脚电平切换时的响应速度和信号边沿的陡峭程度。原创 2025-03-11 20:38:54 · 505 阅读 · 0 评论 -
`stm32f1xx_hal.c`文件的主要功能
某些芯片在正常模式下无法访问调试寄存器,需参考芯片勘误表。反初始化 HAL 库,复位所有外设并调用。(用户可自定义资源清理)。原创 2025-03-11 19:05:19 · 421 阅读 · 0 评论 -
stm32f1xx_hal.c文件的中文注释
【代码】stm32f1xx_hal.c文件的中文注释。原创 2025-03-11 19:00:47 · 618 阅读 · 0 评论 -
__weak`函数的全局可见性
通过这种机制,HAL库实现了灵活的默认行为与用户自定义逻辑的解耦,是嵌入式开发中常用的设计模式。,则其作用域仅限于该文件,无法覆盖全局弱符号。若多个外设共用同一回调函数模板(如。文件中将回调函数声明为。原创 2025-03-11 18:30:28 · 290 阅读 · 0 评论 -
HAL库的一个回调函数的整个流程展示回调机制
的完整示例,展示从初始化到回调触发的全流程。通过这种机制,HAL库将硬件中断与应用逻辑解耦,用户只需关注业务逻辑实现。中配置UART参数,并隐式调用。原创 2025-03-11 17:36:25 · 457 阅读 · 0 评论 -
HAL库的句柄相关知识介绍
↓↓↓↓在ST的HAL库中,结构体的每个成员都承载着关键的外设管理信息。1.Instance:外设寄存器基地址作用:指向具体的USART外设寄存器基地址(如USART1USART2等),直接关联硬件外设实例。配置方法:根据硬件设计选择对应的USART实例。// 使用USART1外设2.Init:初始化配置结构体作用:包含USART的通信参数配置,如波特率、数据位、停止位等。配置方法:通过结构体设置,需调用生效。// 波特率// 8位数据位// 1位停止位// 无校验位。原创 2025-03-11 10:58:47 · 952 阅读 · 0 评论 -
ST HAL库回调函数详解
ST公司的HAL库(Hardware Abstraction Layer)是STM32系列微控制器的底层驱动库,其设计采用了**回调函数(Callback Function)**机制来实现事件驱动的编程模型。回调函数允许用户在特定硬件事件(如传输完成、错误发生等)发生时,插入自定义的处理逻辑。通过合理使用HAL库的回调函数,可以大幅简化STM32的异步事件处理,提升代码可维护性和响应效率。用户可以在自己的代码中**重写(Override)**这些函数,添加具体逻辑。HAL库默认将回调函数定义为。原创 2025-03-11 10:35:36 · 1248 阅读 · 0 评论 -
Linux中三大类驱动的详细介绍
在Linux内核中,每种驱动类型都有其特定的编程模型和API。开发者需要根据硬件设备的特点选择合适的驱动类型,并遵循内核提供的编程接口来实现具体的驱动功能。设备树(Device Tree)的使用进一步简化了驱动开发过程,尤其是在支持设备树的内核版本中,可以通过设备树文件来描述硬件资源,从而减少驱动代码中的硬件依赖。字符设备驱动是Linux驱动中最常见的一种类型,它们通常用于以字符为单位进行数据传输的设备,即数据是按字节流的形式进行读写。块设备驱动用于管理以块为单位进行数据传输的设备,每个块包含多个字节。原创 2025-03-07 15:33:33 · 334 阅读 · 0 评论 -
在SDRAM中,“BANK“指的是内存芯片内部的一种分割方式,它允许更高效的访问内存
总结来说,BANK是SDRAM芯片内部的一种逻辑划分,它允许内存芯片同时访问不同的存储区域,从而提高内存的访问速度和效率。在W9825G6KH这个例子中,每个BANK的容量为8MB,总共有4个BANK,因此整个芯片的容量是32MB。在SDRAM中,"BANK"指的是内存芯片内部的一种分割方式,它允许更高效的访问内存。每个BANK可以被视为一个独立的存储区域,可以同时进行访问,这样就可以提高整体的内存带宽和性能。原创 2025-01-10 16:58:18 · 452 阅读 · 0 评论 -
SDRAM和SRAM存储原理、特点介绍
总结来说,SDRAM和SRAM各有优势和劣势,它们通常根据不同的应用需求被选择使用。SDRAM因其高容量和较低成本而适用于大多数计算机系统的主内存,而SRAM因其极高的速度和响应时间而被用作高速缓存。原创 2025-01-10 16:24:22 · 445 阅读 · 0 评论 -
模拟直流电机速度环控制-基于位置式PID算法C语言
【代码】模拟直流电机速度环控制-基于位置式PID算法C语言。原创 2024-03-09 17:42:50 · 962 阅读 · 0 评论 -
HAL库,为什么可以在中断中进行延时?
延时函数delay_ms()的实现原理是根据滴答定时器中断来实现的。滴答定时器中断优先级设置为15,即最低优先级。另外开启外部中断EXTI0,EXTI0的中断优先级设置为4,EXTI0的中断优先级高于滴答定时器的中断优先级。EXTI0进入中断之后,立马清除中断挂起标志位,使得NVIC可以立马响应别的中断(优先级较低的中断也可以,因为此时没有其他优先级更高的中断请求在排队)。所以,即使延时delay_ms()函数依靠的滴答定时器中断优先级最低,也可以实现在回调函数中的延时功能。原创 2024-03-07 09:10:57 · 326 阅读 · 0 评论 -
STM32选型图
原创 2023-07-26 17:12:57 · 301 阅读 · 0 评论 -
架构、内核、微控制器之间的关系-STM32
一个架构可以指导生产很多内核,比如Cortex-M3和Cortex-M4内核都是ARMv7-M架构;一个内核可以指导生产很多的单片机型号,比如STM32F10x 系列的MCU都是基于Cortex-M3内核的微控制器。内核在单片机中扮演着处理器的角色。内核和外设(GPIO、RCC、TIM、USART、SPI、IIC等)共同组成了单片机。架构(ARMv7-M)指导生产内核(ARM Cortex-M),内核指导生产微控制器(MCU)。原创 2023-07-26 17:04:22 · 565 阅读 · 0 评论 -
什么是ARM-Cortex-M处理器?
Cortex-M3和Cortex-M4处理器使用32位架构,寄存器组中的内部寄存器、数据通路以及总线接口都是32位的,Cortex-M处理器使用的指令集架构(ISA)为Thumb ISA,其基于Thumb-2技术并同时支持16位和32位指令。Cortex-M3和Cortex-M4为ARM设计的处理器,Cortex-M3为第–个Cortex处理器,于2005年由ARM发布(2006年有芯片产品出现),Cortex-M4则于2010年发布(产品也是始于2010年)。●用于系统控制、支持OS等的指令。原创 2023-07-26 15:03:34 · 348 阅读 · 0 评论 -
ARM架构版本
ARM体系结构版本指的是ARM对应的各种指令集。ARM体系结构定义了ARMv1~ARMv8共八个版本。n – 指令集版本号。迄今为之,ARM架构版本发布了8个系列,所以n=[1:8]。ARMv – 固定字符,即ARM Version。x(variants) – 排除x后指定的变种。J – Java加速器Jazelle。SIMD – ARM媒体功能扩展。variants – 变种。T – Thumb指令集。E – 增强型DSP指令。原创 2023-07-24 11:46:24 · 463 阅读 · 0 评论 -
ADC数模转换的基本原理
需要注意的是,以上步骤是基于理想情况的描述,并可能受到实际电路的影响。因此,在实际应用中,需要根据具体要求选择合适的ADC类型和参数,以确保获得准确和可靠的数字信号。采样(Sampling):模拟信号在一定的时间间隔内进行采样,将连续的模拟信号离散化为一系列的采样值。采样频率决定了信号在时间上的离散度,需要根据采样定理确定合适的采样频率。它的基本原理是将模拟信号按照一定的时间间隔进行采样,并将每个采样值量化为对应的数字值。数据输出(Output):转换后的数字编码可用于进一步的数字信号处理或储存使用。原创 2023-07-24 11:06:59 · 712 阅读 · 0 评论 -
数字电路常用逻辑符号对照表
原创 2023-07-24 10:53:11 · 1984 阅读 · 0 评论 -
ARM官方文档网站链接免费下载
免费、官方、全面的arm相关文档PDF。原创 2023-07-21 14:33:27 · 159 阅读 · 0 评论 -
CMOS是什么?
需要注意的是,尽管许多芯片被称为CMOS,但并不是所有芯片都使用了CMOS技术。但总体而言,由于CMOS技术的广泛应用和优势,很多芯片都使用了CMOS作为它们的基础制造技术。由于这些优点,CMOS技术成为了电子行业中非常重要的技术之一。因此,许多集成电路制造厂商和设计者选择使用CMOS技术来制造各种类型的芯片。无论是微处理器、存储器、数字逻辑电路还是传感器等,CMOS技术都可以满足不同的设计需求。因此,许多芯片都采用了CMOS技术,以实现低功耗、高性能和高集成度的目标。广泛应用于集成电路中的。原创 2023-07-11 14:50:56 · 4178 阅读 · 0 评论 -
串口通信发送一帧数据后,为什么要向CPU申请中断?
当一帧数据的发送完成后,外设会向CPU申请中断,也就是发出中断请求(IRQ)。CPU在接收到中断请求后,会暂停当前的执行任务,并转而执行与该中断相关的中断服务程序(ISR),也即中断处理函数。当一帧数据的发送完成后,外设需要通知CPU该事件的发生,以便CPU可以进行一些处理。例如,CPU可能需要发送下一帧数据,或者对发送结果进行一些判断和处理。需要注意的是,在使用串口通信时,需要正确地配置串口的中断使能和中断优先级,以确保中断的正确触发和处理。在串口通信中,当一帧数据发送完成后,向CPU申请中断的目的是。原创 2023-07-11 10:55:05 · 2260 阅读 · 2 评论 -
SBUF(Serial Buffer)串行缓冲寄存器
对于数据发送,我们可以将要发送的数据写入SBUF寄存器,然后通过串口外设将其发送出去。对于数据接收,串口外设接收到数据后会将其。到SBUF寄存器中,然后我们可以从SBUF寄存器中读取接收到的数据。,在一些单片机或芯片中用于串口通信中数据的发送和接收。SBUF(Serial Buffer)是。发送数据,如 SBUF = data;接收数据,如 data = SBUF;在串口通信中,SBUF寄存器用于。原创 2023-07-11 10:41:14 · 5402 阅读 · 0 评论 -
串行通信都有什么类型?
(Serial Peripheral Interface)通信:一种同步串行通信协议,用于芯片与芯片之间的通信,包括主设备和从设备之间的数据传输。(Inter-Integrated Circuit)通信:一种多主从的串行通信协议,用于通过两根线路(时钟线和数据线)连接多个设备,实现设备之间的数据交换。(Controller Area Network)通信:一种用于高级车辆总线系统的串行通信协议,通过差分信号传输数据,广泛用于汽车和工业领域。串行通信是一种按照位序列。原创 2023-07-11 09:38:14 · 2646 阅读 · 1 评论 -
C语言中,箭头符号 “->” 和点号符号 “.”的区别
例如,假设有一个结构体类型的指针变量p,其中包含成员变量x,可以使用箭头符号来访问x,例如 p->x。在这个例子中,我们声明了一个指向结构体的指针变量 p2,并使用箭头符号 “->” 通过指针访问结构体的成员。总之,点号和箭头符号在访问结构体或联合体成员时使用的语法和对象类型有所不同,取决于你是直接操作变量还是通过指针访问。箭头符号 “->” 和点号符号 “.” 在C语言中都用于访问结构体或联合体类型的成员,但它们之间有一些重要的区别。来对比点号 “.” 和箭头符号 “->” 的。例子1:使用点号 “.”原创 2023-07-10 21:51:55 · 23229 阅读 · 4 评论 -
51单片机定时器/计数器的四种工作方式
定时器四种工作方式和应用举例原创 2023-07-10 19:26:19 · 19363 阅读 · 0 评论 -
TCON的IT0的功能
通过设置IT0为1,我们指定外部中断0为边沿触发方式,然后通过EX0标志位使能外部中断0。在主程序执行中,当IT0标志位被置位时,MCU会立即跳转到中断向量表中对应的外部中断0中断服务程序执行。这段代码演示了如何利用IT0标志位来实现外部中断0的边沿触发,并在中断服务程序中对连接的LED进行状态反转操作。通过设置IT0标志位,我们可以选择外部中断0的触发方式,实现按需求触发外部中断0,并执行相应的中断处理程序。当P3.2引脚上的电平由低变高时,IT0标志位会被置位,表示外部中断0的中断请求。原创 2023-07-10 17:19:16 · 5467 阅读 · 0 评论 -
对于51单片机控制寄存器TCON的解释
控制寄存器TFON的各个位的功能原创 2023-07-10 17:10:49 · 1443 阅读 · 1 评论 -
对于51单片机定时器的理解
4.有了定时器/计数器之后,可以增加单片机的效率,一些简单的重复加 1 的工作可以交给定时器/计数器处理。CPU 转而处理一些复杂的事情。同时可以实现精确定时作用。不论是51还是STM32,又或者是其他单片机(MCU),定时器/计数器的工作原理几乎相同。的,定时器可以 自己工作而不占用CPU的资源;1.既可以定时,又可以计数;2.定时器和单片机的CPU是。3.定时器是通过时钟产生的。原创 2023-07-10 16:55:47 · 127 阅读 · 0 评论 -
什么是TCON
. 这个缩写是因为TCON中包含了与定时器/计数器相关的标志位,例如定时器/计数器溢出标志位(TF)和定时器/计数器中断标志位(IT0、IT1)等。因此,TCON寄存器在处理定时器和计数器中断时发挥重要的作用。TCON是8051单片机中特定寄存器之一,用于存储和控制中断请求相关的标志位。TCON的英文缩写为 “原创 2023-07-10 15:28:47 · 6214 阅读 · 0 评论