- 博客(102)
- 收藏
- 关注
原创 STM32学习路线开启篇:外部中断
本文介绍了STM32中断系统及外部中断EXTI的应用。主要内容包括:1.中断基础概念:中断源、优先级、嵌套机制;2.STM32中断架构:68个可屏蔽中断通道,NVIC统一管理;3.EXTI外设特性:支持16个GPIO引脚电平检测,提供中断/事件两种响应模式;4.实验部分:通过旋转编码器计次和对射式红外传感器实例,详细展示了EXTI配置流程(GPIO→AFIO→EXTI→NVIC)。关键点包括:中断标志清除、优先级分组设置(常用分组2)、抖动消除处理。实验代码完整呈现了中断初始化、处理函数及主程序调用方法。
2025-10-12 12:36:32
989
原创 STM32学习路线开启篇:OLED调试工具
本文介绍了OLED显示屏的调试功能及使用方法。主要内容包括:1)三种常用调试方式(串口调试、OLED显示屏调试、Keil调试)的优缺点对比;2)OLED模块特性:0.96寸、128×64分辨率、支持I2C/SPI协议;3)详细说明OLED驱动函数模块,包含初始化、字符显示、数字显示等功能;4)提供完整的硬件连接方案和STM32驱动代码,包括引脚配置、I2C通信协议实现等。通过示例代码演示了如何显示字符、字符串、不同格式的数字等,为嵌入式开发提供了实用的OLED显示屏解决方案。
2025-09-27 21:09:33
984
原创 STM32学习路线开启篇:GPIO与相关实验
本文基于江科大STM32课程,系统讲解了GPIO外设的基本原理与应用实验。主要内容包括:1. GPIO结构和工作模式(8种输入输出模式);2. 输出实验:LED闪烁、流水灯及蜂鸣器控制,重点分析低/高电平驱动方式;3. 输入实验:按键消抖控制LED、光敏传感器阈值检测控制蜂鸣器;4. 硬件电路设计要点(保护电阻、三极管驱动等)。通过寄存器操作和库函数调用,实现了对GPIO引脚的精准控制,为STM32外设开发奠定基础。
2025-09-24 17:55:04
1037
原创 STM32学习路线开启篇:环境搭建与新建工程
本文介绍了STM32F103C8T6开发环境搭建及点灯实验的完整流程。主要内容包括:1)开发环境配置,包括Keil5 MDK安装、STLINK驱动安装和USB转串口驱动安装;2)新建工程步骤,涉及标准库文件下载、工程目录结构创建及文件导入;3)通过寄存器方式和库函数方式实现点灯程序的详细过程。文章提供了完整的代码示例和配置说明,为STM32初学者提供了清晰的操作指南,帮助快速掌握基础开发流程。
2025-09-16 23:01:31
1145
原创 STM32学习路线开启篇:芯片简介与课程简介
本文介绍了STM32入门课程涉及的配套硬件资源及STM32基础知识。配套资源包括面包板、STM32最小系统板、各类传感器模块(如OLED、红外、陀螺仪等)及连接线材。STM32部分详细讲解了其ARM内核架构、命名规则、F103C8T6型号的片上资源(72MHz主频、20K RAM、64K Flash)及最小系统电路设计。特别说明了ST-Link调试器的正确连接方式。课程采用面包板搭建实验平台,通过外设编程实现功能,适合硬件电路学习。全文为后续STM32开发实践奠定了硬件和理论基础。
2025-09-11 23:40:29
834
原创 【C语言】实用调试技巧
在编写代码时,是否有因为出现Bug而烦恼呢?记得网上有个段子讲到:一个程序员百分之二十的时间在写Bug,百分之八十的时间在修改Bug。由此可见,掌握一些实用的调试技巧,能提高我们查找Bug的效率,本文以Visual Studio 2019为例,详细讲解如何利用该编译器工具进行代码的调试。软件缺陷(Defect),常常又被叫做Bug。[1]所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。
2024-05-21 20:21:35
1212
原创 【C语言】关于在函数内部求数组元素大小问题
sizeof(arr)/sizeof(arr[0]) 来求数组大小是行不通的,因为此时的sizeof(arr)并不是整个数组的大小了,表示的是求这个arr指针的字节大小,sizeof(arr[0])也只是求该指针具体内容的类型大小,因为这个表达式在函数内部会。,它计算的是指针大小与单个 int 元素大小的比值,而不是数组的元素数量。这是一个案例,其它类似的情况也是这个原理。场景:实现一个整形有序数组的二分查找。代码正确,完成功能。
2024-04-06 16:17:28
380
原创 【C语言】猜数字小游戏(并讲解随机数相关知识)
本文讲解使用C语言写一个猜数字小游戏(1~100),涉及到的语法为:循环、分支、随机数、函数//游戏菜单printf("******欢迎进入猜数字游戏******\n");printf("*********1、开始*************\n");printf("*********0、退出*************\n");//游戏逻辑printf("游戏开始\n");//1、生成随机数。
2024-04-05 10:41:41
1651
原创 C语言之分支语句和循环语句
本章将详细介绍分支语句(选择结构)和循环语句。表达式语句函数调用语句控制语句复合语句空语句本博客将介绍控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(在C语言中有三种结构:顺序结构、选择结构、循环结构),它们又特定的语句定义符组成,C语言中有九中控制语句。条件判断语句(分支语句):if语句、switch语句;循环执行语句:do...while语句、while语句、for语句;转向语句:break语句、goto语句、continue语句、return语句。
2024-04-04 21:24:58
1192
原创 初识C语言
人与计算机交流的语言。常用于写底层软件开发。C语言的国际标准(ANSI),现如今常用C99。C语言是一门面向过程的语言。编译器的作用就是将各种语言转化为计算机能识别的二进制进行编译解释。//定义了一个整形数组,这种为完全初始化//不完全初始化,剩余5个元素会补充为0//可以不给定数组大小,会根据初始化个数决定数组大小//和arr2一样,都为不完全初始化,只是第一个元素赋值为01.定义常量:#define M100int main()2.定义宏:(跟函数差不多,可以传参)
2023-10-14 14:30:18
404
原创 C++入门(前言、命名空间、缺省参数、重载)
在之前我们系统学习了C语言,对于C语言来说,它是一种面向过程结果化的语言,适合处理较小规模的程序。当我们面对复杂问题时,需要一种模块化、抽象化形式进行解决,为此,C++就由此而生,它是一种面向多像思想的编程语言。命名空间关键字为namespace,基本格式为:namespace+命名空间名字+{成员}。//命名空间里成员可以为变量、函数、类型(结构体)//1.正常的命名空间int k;//2.嵌套命名空间//3.同一个工程中,命名空间名相同会自动合并为一个命名空间。
2023-09-26 22:43:49
304
原创 【数据结构】树以及堆的讲解
树形结构是一种非线性的数据结构,其应用非常广泛,由树形结构可以引申出二叉树、堆等等的特殊树。学习树对我们今后的工作帮助非常大。
2023-06-24 19:09:19
1314
原创 【数据结构】超详细之实现栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。
2023-05-26 23:04:14
201
原创 【数据结构】带头双向链表,真正的六边形战士
带头双向链表的实现并不复杂,但需要我们对单链表有一定的了解程度,因此在学习带头双向链表前,最好先学习单链表,带头双向链表虽然被称为六边形战士,但我们也需要先学好基本知识,哨兵位介绍:带头链表俗称哨兵位,哨兵位的作用非常强大,它可以让我们进行头删头插时不使用双指针,增加代码可读性。而今天我要讲的带头双向链表非常适合新手学习,它实现起来不像单链表那么繁琐,应用起来更加得心应手,最主要的是它能让我们更好的理解链表。链表有八种结构,对于刚入门的新手来说,往往会先经历单链表的折磨。
2023-05-19 16:13:36
554
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1