- 博客(3343)
- 收藏
- 关注
原创 [STM32C0] 【STM32C092RC 测评】+ 01开箱、资料准备、点灯
摘要:STM32C091xB/XC和STM32C092xB/XC系列微控制器基于48MHz的Arm Cortex-M0+内核,集成256KB Flash和36KB SRAM,支持多种通信接口(I2C/SPI/USART/FDCAN)和丰富外设(12位ADC、RTC、PWM等)。工作温度范围-40℃至125℃,电压2.0-3.6V,具有低功耗模式。开发工具链包含Keil MDK、STM32CubeMX配置工具和STM32CubeProgrammer烧录软件。文中详细介绍了GPIO配置LED闪烁的代码实现,并提
2025-12-31 15:23:23
423
原创 [STM32C0] 【STM32C092RC 测评】+ 02 板载按键用作外部中断触发LED闪烁
摘要:本文介绍了STM32中断系统的配置与实现方法。主要内容包括:1)NVIC中断控制器的特性,如低延迟处理、优先级管理和尾链优化;2)EXTI扩展中断控制器的功能及唤醒机制;3)使用STM32CubeMX配置PC13引脚中断的详细步骤;4)软件编程流程,包括GPIO初始化、中断线映射、优先级设置和中断服务函数编写;5)实物测试结果展示按键控制LED状态变化。文章提供了完整的中断配置方案和工程代码下载链接。
2025-12-31 15:22:31
401
转载 c编译器解惑篇,如何造就c编译器
摘要:C语言编译器的发展历程揭示了计算机科学的自举原理。最初使用B语言和汇编开发C语言子集C0,通过逐步扩展实现完整C编译器。这种"自编译"方法从仅5个关键字的极简子集开始,层层递进,最终构建出完整的C语言系统。文章详细剖析了从C0到完整C语言的演进过程,展示了早期计算机科学家如何巧妙解决"鸡生蛋"问题,奠定了现代编程语言的基础。
2025-12-31 15:21:50
4
原创 [STM32C0] 【STM32C092RC 测评】+ 03 板载串口2输出测试
摘要:本文介绍了STM32中USART串口通信的功能特性,包括支持6Mbit/s高速通信、多协议兼容、硬件流控等。详细讲解了通过STM32CubeMX配置USART2串口(PA2/PA3引脚)的步骤,包括参数设置、中断使能等。提供了完整的代码实现方案,包括串口初始化、printf重映射和主程序中的数据传输示例。最后通过实验验证了串口通信功能,实现了"Hello STM32"信息的周期性发送。文章配套提供了完整的工程代码下载链接。
2025-12-31 15:21:04
556
原创 [STM32C0] 【STM32C092RC 测评】+08 定时器1输出可变脉宽
本文介绍了PWM(脉冲宽度调制)的基本原理和应用。PWM通过调节脉冲宽度(高电平持续时间)来控制占空比,从而调整输出能量,适用于电机调速、LED调光等场景。文章提供了STM32的PWM配置代码示例,展示了如何通过HAL库实现占空比调节。实物测试表明该方案功能正常,可用于制作小夜灯等应用。内容涵盖理论解析、程序实现和实际验证三个层面,为PWM技术应用提供了实用参考。
2025-12-31 15:20:16
192
转载 c编译器并不难,Turbo c编译器介绍(上篇)
Turbo C编译器是美国Borland公司开发的经典C语言开发工具,于1987年首次推出1.0版本。文章详细介绍了Turbo C的发展历程,从1.0到2.0版本的改进,以及后续的Turbo C++产品。Turbo C2.0具有集成开发环境、查错功能等特点,支持多种编译模式和数学协处理器。文章还说明了Turbo C2.0的系统配置要求、主要文件组成以及安装方法。Turbo C的配置文件功能允许用户自定义开发环境设置,体现了其灵活性和实用性。作为早期C语言开发的重要工具,Turbo C对计算机编程教育产生了深
2025-12-31 15:19:39
2
原创 [STM32C0] 【STM32C092RC 测评】GPIO操作
STM32C092RC的GPIO配置比51单片机复杂,但官方HAL/LL库已封装好功能。使用步骤包括:开启时钟、设置模式(输入/输出/上拉/下拉)、读写引脚。建议新手直接使用库函数而非操作寄存器。该芯片提供32个GPIO引脚,支持多种复用功能(UART/I2C/PWM等)和三种输出速度(2/10/50MHz)。复位后大部分引脚默认为模拟模式,调试引脚PA14/PA13有特殊配置。通过GPIOxMODER等寄存器可设置四种工作模式(输入/输出/复用/模拟)。示例代码展示了LED输出的基本配置方法,包括初始化结
2025-12-31 15:18:56
389
原创 [STM32C0] 【STM32C092RC 测评】ADC
摘要:本文详细介绍了STM32微控制器中ADC模块的关键特性与应用方法。主要内容包括:ADC分辨率(8/12位)与数据范围、多通道扫描机制、DMA数据传输优势、参考电压设置;转换方式(单次/连续/扫描)与工作模式(查询/中断/DMA);重点特性如0.4μs高速转换、自校准、过采样(2x-256x)、低功耗模式;19路模拟输入通道配置(含内部传感器);并通过代码示例展示了ADC初始化、校准及数据采集流程。文章全面解析了STM32 ADC的高性能与灵活配置特点。
2025-12-31 15:18:02
268
转载 Keil单片机编程软件常见文件介绍
本文介绍了Keil单片机编程软件中常见的文件类型及其功能,重点分析了工程文件、源代码文件、链接文件等7大类文件的作用。文章指出工程文件(.uvprojx等)和调试文件(.axf等)最为重要,而编译产生的中间文件(.o、.d等)可以删除。特别强调了.map文件对代码调试的重要性,并提供了删除编译垃圾文件的实用建议。通过了解这些文件类型,开发者可以更好地管理工程文件,提高开发效率。
2025-12-31 15:17:03
4
原创 [STM32C0] 【STM32C092RC 测评】+ 点灯
【摘要】作者因临时出差无法完成STM32开发板完整评测,先分享基础点灯程序。通过STM32CubeMX工具配置GPIO引脚(PA5和PC9),设置输出模式并初始化。主函数中使用HAL_GPIO_TogglePin函数实现双LED交替闪烁(500ms间隔)。文中提供了完整的初始化代码和主循环示例,适用于STM32初学者参考。完整评测将后续补上。(149字)
2025-12-30 10:47:09
531
原创 [STM32C0] 【STM32C092RC 测评】+NUCLEO-C092RC开发板开箱+点灯样例代码
摘要:文章讨论了一个LED控制实验,发现开发板已预烧写程序导致LED灯自动翻转。示例代码显示LED1连接GPIOA引脚5(PA5),LED2连接GPIOA引脚6(PA6),并包含相关时钟使能宏定义。由于无法上传视频,作者改用图片展示实验现象,表示将转向研究其他示例代码。该文为原创内容,禁止未经授权转载。
2025-12-30 10:45:42
293
转载 c编译器哪个好?6款c编译器介绍
本文推荐6款适合不同需求的C语言编译器:1. Dev-C++ - 适合初学者的集成开发环境;2. Turbo C - 经典的DOS环境编译器;3. MinGW - GNU工具集的Windows移植版;4. WIN-TC - 支持中文界面的入门工具;5. Cygwin - Windows下的Linux模拟环境;6. Visual Studio - 功能强大的专业开发工具。文章分析了各编译器的特点,建议初学者使用WIN-TC或Dev-C++,而专业开发者可选择Visual Studio或MinGW。同时指出老版
2025-12-30 10:43:35
30
原创 [STM32C0] 【STM32C092RC 测评】+NUCLEO-C092RC开发板pwm+timer+控制呼吸
本文介绍了使用STM32定时器TIM1(高级定时器)和TIM2(通用定时器)实现PWM呼吸灯效果的配置方法。通过HAL库函数启动两个定时器的PWM通道,设置最大计数值为999,采用5为步进值和10ms延时来控制亮度变化。主程序循环实现了LED的渐亮渐灭效果,包括亮度值边界处理、PWM占空比设置以及延时控制。文章展示了完整的代码实现,包括初始化配置、亮度调节逻辑和边界保护措施,最终成功构建了呼吸灯效果。
2025-12-30 10:39:54
177
原创 [STM32C0] 【STM32C092RC 测评】+简单的按键控制led亮灭
本文展示了在嵌入式系统中不使用中断和回调函数的情况下,通过主循环实现按钮控制LED灯的代码示例。程序在while循环中持续检测按钮状态,当检测到按钮按下(GPIO_PIN_RESET)时点亮LED,按钮释放(GPIO_PIN_SET)时熄灭LED。代码通过两次状态检测和延时处理实现了可靠的按键消抖功能。该方法为嵌入式开发中GPIO控制提供了简单有效的实现方案,适合初学者理解基本的IO控制原理。
2025-12-30 10:38:10
331
转载 单片机编程软件很简单(11),Keil单片机编程软件在线调试
本文介绍了Keil单片机编程软件的在线调试功能,重点讲解了调试工具栏中复位、全速运行、单步调试等常用按钮的使用方法。通过动画演示了编译进入调试、单步执行程序、查看变量等操作流程,并说明了调试窗口的作用,包括watch窗口查看变量和外设寄存器数值等功能。文章旨在帮助用户掌握Keil的在线调试技巧,快速定位程序问题,提高开发效率。这些调试功能对单片机程序开发和问题排查具有重要实用价值。
2025-12-30 10:37:16
8
原创 [STM32C0] 【STM32C092RC 测评】+如何进入低功耗模式并唤醒
摘要:本文介绍了STM32低功耗模式配置过程,包括PC13中断引脚和PA5输出引脚的设置,RTC配置及NVIC优先级配置。提供了进入STOP模式的代码实现,包含GPIO控制、延时和模式切换操作。作者遇到了printf串口打印乱码问题,虽参数正确但原因未明,正在排查中。文章分享了从运行模式到停止模式再到唤醒模式的切换经验,代码经测试可正常运行。(149字)
2025-12-30 10:36:10
203
原创 【STM32C092RC 测评】+基于TIM控制DMA从内存到内存的数据传输
摘要:本文介绍了STM32中TIM1高级定时器的配置技巧,重点演示了通过Ctrl+鼠标左键快速查找复用功能引脚的方法。文章提供了PWM脉冲配置示例代码,展示了如何使用HAL_TIM_PWM_Start_DMA函数启动DMA传输。同时分享了通过用户按钮和调试按钮控制数据传输的实践方法,包括在resume期间传输数据、suspend期间观察寄存器变化的有趣体验。这些基础但实用的技巧为初学者提供了有价值的参考。
2025-12-30 10:35:03
205
转载 吃透可编程控制器,可编程控制器基本知识介绍
本文介绍了PLC(可编程逻辑控制器)的基础知识,包括其发展历程、CPU构成及系统组成。PLC起源于1968年,用于工业自动化控制,具有可靠性高、编程简单等特点。其核心CPU由运算器、控制器等构成,通过I/O模块与外部设备连接。PLC系统还包括电源模块、底板及编程设备等。随着技术进步,PLC功能不断扩展,已广泛应用于工业控制领域,并支持通信联网实现分散集中控制。
2025-12-30 10:31:33
10
原创 [STM32C0] 【STM32C092RC 测评】定时器与PWM
本文介绍了利用PWM技术实现LED呼吸灯效果的原理与方法。通过定时器精确控制PWM信号的占空比,调节LED导通时间从而改变亮度。结合人眼视觉暂留效应,实现了LED由暗到亮再到暗的渐变效果。文中详细说明了硬件配置方案,包括定时器1和14的设置,以及通过按键切换不同LED呼吸效果的软件实现代码。该案例展示了PWM技术和定时器在嵌入式系统中的典型应用,是学习开发板PWM功能的实用范例。
2025-12-29 16:51:06
237
原创 [STM32C0] 【STM32C092RC 测评】2、板载外设——串口
摘要:本文介绍了ST开发板串口功能测试的实现方法。重点阐述了如何利用板载ST-LINK调试器的虚拟串口功能,通过配置UART2(PA2/PA3引脚)实现单片机与PC通信。详细说明了在STM32CubeMX中的配置步骤,包括波特率设置(115200)和printf函数重定向到UART2的方法。最后展示了通过串口调试工具成功接收"21icC092TestStart!"测试信息的验证过程。该方案为开发板调试提供了便捷的状态监测手段。
2025-12-29 16:49:12
197
转载 搞定138译码器(10),基于74hc138译码器构建6-64线译码器、全加器
本文介绍74HC138译码器的应用方法。首先讲解如何通过4片74HC138芯片和1个反相器构建6-64线译码器,利用其3位地址输入和8个互斥输出的特性实现扩展。其次详细说明使用74HC138和两个与非门设计全加器电路的方法,通过连接输入信号实现加法功能。文章还比较了74HC138与74LS138的性能差异,前者采用高速CMOS工艺具有低功耗优势。全文通过具体电路图和真值表,展示了74HC138译码器在扩展应用和数字电路设计中的实用价值。
2025-12-29 15:36:12
8
原创 [应用方案] GALT62120_尾灯自动单 LED 短路 (AutoSS) 检测功能的问题与理解
本文探讨了GALT62120尾灯芯片AutoSS功能的调试问题,重点分析了触发和清除AutoSS错误的条件。触发AutoSS错误需满足四个条件:PWM脉冲宽度、SUPPLY电压阈值、通道输出电压低于阈值,以及功能使能。清除错误时,需先排除短路故障并确保通道电压高于阈值。文章还解释了调试中遇到的标志位置起顺序差异和清除失败的原因,指出关闭通道使能会影响AutoSS检测功能。最后提供了相关芯片手册参考,为开发者提供了实用的调试指导。
2025-12-29 15:23:23
807
原创 [G32R] 使用 cmake+vscode 环境移植 ThreadX 到 G32R501
本文介绍了在CMake+VSCode环境下为极海微G32R501 MCU移植ThreadX实时操作系统的详细过程。文章首先概述了G32R501芯片特性(Armv8.1-M架构)和ThreadX开源背景,然后详细说明了工程目录结构组织方法,包括使用Git管理G32R501 SDK和ThreadX源码。重点讲解了移植步骤:基于Cortex-M55修改适配、删除安全特性相关代码、实现低层初始化函数、调整中断优先级配置等关键技术点。文章还提供了CMake配置方案、VSCode调试设置建议,并分享了完整的移植工程仓库
2025-12-29 15:22:11
580
转载 搞定138译码器(12),74hc138、74ls138译码器区别探讨
74HC138和74LS138是两种常见的3-8线译码器,二者在封装和基本功能上相同,但存在重要差异。74HC138采用CMOS工艺,具有更低的功耗和更高的工作电压范围(2-6V),而74LS138采用TTL工艺,工作电压固定为5V且功耗较大。二者在传输延迟、驱动能力等电气参数上也有所不同。虽然功能相同,但74HC138和74LS138不能完全互换使用,需根据具体电路要求(如工作电压、功耗等)选择合适的型号。在特殊情况下,若电路设计允许电压波动且不要求高精度时序,二者可能可以临时替代。
2025-12-29 15:20:17
14
原创 [技术讨论] 【C语言实战经验4】浮点数运算,你踩过什么坑
在C语言的浮点数运算(包括float和double两种浮点数据类型)方面,你踩过什么坑?有没有朋友曾经遇到过或解决过因浮点数运算操作不当引起的Bug?在解决的时候,是否还很疑惑为什么不能这样操作浮点数?
2025-12-29 15:19:12
496
原创 【C语言实战经验5】Bug到底怎么产生的?编码小技巧
本文分享了14个实用的C语言编码技巧,帮助开发者减少软件Bug的产生。主要内容包括:将常量放在等号左边避免误赋值、初始化所有变量、善用宏定义、添加英文注释并保持更新、参考官方驱动代码、缩小变量作用域、使用volatile修饰共享变量、中断中避免复杂操作、模块化解耦代码、封装通用功能API、规范函数定义、消除编译警告、分步处理复杂运算、仅导入必要外设文件等。这些技巧从变量处理、代码结构、调试优化等多个维度提供了专业建议,有助于提高代码质量和开发效率。文章强调养成良好编码习惯的重要性,特别适合嵌入式开发人员参考
2025-12-29 15:17:01
530
原创 Keil单片机编程软件配置操作
本文介绍了Keil单片机编程软件的配置方法,重点讲解Configuration中的Editor、Colors&Fonts和UserKeywords三项设置。与Options for Target不同,Configuration的修改会保存在Keil软件而非工程文件中。文章详细说明了Editor的五个部分设置:通用编辑、函数显示、视觉设置、文件管理和语法格式,并演示了各项参数的实际效果。同时介绍了颜色字体配置和用户自定义关键字功能,建议初学者尽量使用默认设置。通过图文并茂的方式,帮助开发者更好地掌握K
2025-12-29 15:15:21
266
原创 [技术讨论] 【C语言实战经验6】什么是防御式编程?请看代码
防御式编程是一种预防性编程方法,借鉴防御式驾驶理念,旨在确保程序在外部输入错误时仍能稳定运行。文章介绍了四种常见防御措施:1)函数参数验证,如除数非零检查;2)指针安全检查,避免空指针操作;3)边界检查,确保输入在合理范围内;4)断言处理,验证程序内部逻辑。其他防御手段还包括输入验证、返回值检查、变量初始化、资源管理和静态分析等。通过这些方法可显著提升代码健壮性,减少程序崩溃风险。
2025-12-22 23:07:57
630
原创 [技术讨论] 【C语言实战经验7】指针函数的常见应用
指针函数是返回指针类型的函数,其声明格式为"数据类型函数名(参数)"或"(数据类型)函数名(参数)"。主要应用包括:1.返回字符串常量或全局变量地址(不能返回局部变量地址);2.返回结构体指针,便于封装全局变量操作;3.创建动态内存分配的结构体(如链表节点)。使用时需注意:避免返回局部变量地址、确保返回值类型匹配、区分指针函数与函数指针。指针函数通过返回指针实现对数据的间接访问,提高了代码的封装性和可维护性。
2025-12-22 23:07:10
276
转载 你了解板卡控制的架构吗?板卡控制和PLC控制有什么区别
本文介绍了板卡控制的架构功能及其与PLC控制的区别。板卡控制通过主从协同机制和工业通信协议实现高效数据采集与设备控制,在工业自动化等领域应用广泛。相比PLC控制,板卡控制具有更高实时性能但灵活性较差,而PLC控制更易于编程扩展和故障诊断。两者在定义用途、编程方式、实时性、扩展性和维护性等方面存在显著差异。
2025-12-22 23:05:45
21
原创 [技术讨论] 排序算法续集:归并排序和快速排序
本文介绍了两种高效的排序算法——归并排序和快速排序。归并排序采用分治思想,通过递归分解和合并实现排序,具有O(nlogn)时间复杂度和O(n)空间复杂度,是稳定排序算法。快速排序同样基于分治策略,通过基准元素分区实现排序,平均时间复杂度为O(nlogn),但最坏情况下为O(n²),属于不稳定排序。实验测试显示,快速排序在处理随机数据时速度更快(73.31μs vs 265.76μs)。文章建议根据数据特性和规模选择合适的排序算法,并提供了五种常用排序算法(冒泡、插入、选择、归并、快速)供参考。
2025-12-21 22:44:36
870
原创 [学习资料] 软件框架设计好了,代码跨平台移植不再是噩梦
摘要:嵌入式软件开发中,MCU平台更换导致代码移植工作量大。建议采用分层架构设计:应用层(业务逻辑)、MCU驱动层(BSP)、外置芯片驱动层、固件库层和协议层。通过模块化文件组织、宏定义封装接口(如GPIO配置)等方式,可使移植时只需替换固件库、修改BSP和驱动头文件等有限操作。进一步优化可将MCU底层配置抽象为独立文件,使外设驱动只需修改配置文件。这种分层解耦设计能显著降低跨平台移植工作量,提高代码复用性。(149字)
2025-12-21 22:43:50
460
转载 还不了解fft原理?带你三分钟搞定fft原理
本文介绍了快速傅里叶变换(FFT)的原理及其基于FPGA的硬件实现方法。FFT在信号处理等领域应用广泛,针对高速实时处理需求,采用FPGA实现具有优势。文章详细讲解了基-4按时间抽取FFT算法原理,包括蝶形运算单元结构。硬件实现方面,采用3级流水线结构,包含存储单元、运算结构和块浮点结构设计,通过优化存储和运算方式提高处理速度和精度。块浮点结构在定点制和浮点制之间取得平衡,既保证了运算速度又扩大了动态范围。
2025-12-21 22:42:54
38
原创 [STM32F1] 【每周分享】使用STM32的USB功能在Bootloader中虚拟U盘实现拖拽固件升级
本文介绍了基于STM32F103C8T6的USB虚拟U盘固件升级方案。通过配置USB模块和实现Bootloader程序,将单片机虚拟为U盘设备,用户可直接拖拽BIN文件进行固件升级。详细说明了Bootloader分区设置、APP跳转方法、FAT16文件系统模拟实现过程,包括DBR、FAT表和根目录的数据结构处理。重点阐述了固件文件索引查找机制和数据写入流程,通过解析U盘文件索引获取BIN文件存储位置,并将数据写入内部FLASH完成升级。最后介绍了APP工程的配置方法,实现编译生成可直接拖放的BIN文件。该方
2025-12-21 22:42:09
695
原创 [运放] 国产芯片ZJA3100你会用吗?是单端信号转差分信号运放
摘要:本文介绍了ZJA3100芯片的性能特征及其在单端转差分信号电路中的应用。作者根据ADC芯片手册设计了转换电路,但在实测中发现输出波形异常。通过多次测试发现PD引脚悬空时输出波形虽与手册不符,但差分信号符合预期。该问题可能揭示了芯片手册的潜在bug。实践表明,理论知识需通过实际验证才能真正掌握。(149字)
2025-12-21 22:41:02
406
转载 升压芯片很简单(一),快速选择升压芯片+利用升压芯片设计LED电源
本文介绍了升压芯片的应用与选择方法。首先以XL6009芯片为例,详细讲解了LED闪光灯电源的设计方案,包括升压电路分析、恒流源电路设计、电源计算和效率提升方法。测试结果显示该系统具有高精度、低误差的特点。第二部分提供了直流升压芯片的快速选择指南,强调需考虑输入输出电压、隔离需求、纹波特性及效率等因素,并比较了PWM、PWF和电荷泵三种升压芯片类型的特点。全文为电子设计人员提供了实用的升压芯片应用和选型参考。
2025-12-21 22:40:08
26
原创 [G32R] 使用 vscode+cmake 开发 G32R501
本文介绍了在VSCode环境下开发G32R501芯片的配置方法。相比传统IDE(Keil/IAR/Eclipse),VSCode配合CMake工具提供了更现代的C/C++开发环境。文章详细说明了所需软件(CMake、Ninja、VSCode等)的安装配置,以及项目文件组织规范。重点讲解了CMakeLists.txt文件的编写要点,包括编译选项设置、源码管理、头文件包含等关键配置。同时提供了工程构建命令和VSCode集成开发环境的优化建议,如任务配置实现一键下载功能。通过这种配置方式,开发者可以在VSCode
2025-12-21 22:39:34
563
原创 [学习资料] 什么是状态机?怎么设计MCU状态机
摘要:状态机是嵌入式系统设计中的重要模型,由状态、事件、转换和动作等要素组成。在MCU设计中,状态机实现主要有两种方式:switch-case结构适合简单状态机,而表驱动结构更适用于复杂场景,具有代码简洁、效率高等优点。设计时需明确系统状态和转换条件,保持状态机简洁,并注意错误处理和状态记录。合理使用状态机可提高MCU程序的清晰度、可靠性和实时性。
2025-12-21 22:38:45
327
转载 RT_Thread好用吗? RT_Thread成国内最成熟开源RTOS
RT-Thread 是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2)。实时线程操作系统不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈,libc接口,图形用户界面等。
2025-12-21 22:36:43
64
原创 【每周分享】数字电位器AD5292使用过吗?知道该怎么正确测量吗
摘要:文章分享了使用数字电位器时遇到的测量问题和解决方法。作者指出数字电位器与传统电位器不同,需要注意端电压输入范围(0-VDD)且不能直接测量电阻值。通过实际测试发现,直接测量阻值会出现误差,正确的测量方法是通过测量电压来推算阻值。测试数据显示电压测量法准确可靠。文章提醒工程师在使用数字电位器时要注意这些关键点,避免走弯路。(149字)
2025-12-19 23:24:12
367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅