- 博客(10)
- 收藏
- 关注
原创 嵌入式八股文之新建工程
将江科大提供的标准外设库文件(如stm32f10x_gpio.c、stm32f10xx_rcc.c),即将标准外设库的。,将江科大提供的启动文件(如 startup_stm32f10x_md.s)复制到。,选择调试器(如 ST-Link Debugger)→ 进入。(2) 设置预处理器宏,在 C/C++ 选项卡的。,将江科大提供的代码(如 main.c)复制到。→ 文件类型选所有文件,向组中添加文件,点击。,即声明函数、类、宏和全局变量的文件。,弹出工程管理对话框 → 创建新组,→ 添加头文件路径。
2025-03-24 21:46:56
410
原创 第三章 第一个外设 GPIO
数据寄存器为 1 时,上管导通,下管断开,输出接到 VDD。数据寄存器为 0 时,上管断开,下管导通,输出直接接到 VSS,就是输出低电平。这种模式下,高低电平均有较强的驱动能力,所以推挽输出模式也可以叫强推输出模式。,P-MOS 是无效的,只有 N-MOS 在工作,数据寄存器为 1 时,下管断开,输出相当于断开,也就是高阻模式。数据寄存器为 0 时,下管导通,输出直接接到 VSS,也就是输出低电平。三极管驱动电路,三极管的左边是基极,带箭头的是发射极,剩下的是集电极,,可配置 8 种输入输出模式。
2025-03-21 22:40:17
608
原创 第二章 新建工程
本质上是通过正确选择和包含适当的头文件,来控制和配置硬件外设、启用必要的库函数,并确保代码中能访问这些外设和函数。⑥ 工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download 里勾选 Reset and Run。是数字电路中一种常见的输出模式,其核心原理是通过两个互补的晶体管(一个”推“,一个”拉“)主动驱动信号线的。,是用来描述 STM32 有哪些寄存器和它对应的地址的,另外两个 system 文件是用来配置时钟的。上,故需要使用以上函数使能时钟。
2025-03-09 15:47:40
1058
原创 嵌入式八股文之 static
但是该变量只能在该函数中使用,虽然它存在,但是别人不能使用,因为他毕竟是局部变量,限定了作用域。可以看出打印的都是 11 ,说明每次函数结束变量 a 就结束生命周期,这就是局部变量。可以看出 static 修饰的局部变量是不会随着函数的结束而结束的,在类中的静态成员变量,它可以被当做全局变量那样存储,中使用,也就是说在其他源文件中可以定义和自己名字一样的函数。也就是说,只要有对象改变了这个值,那么其他对象就会受影响,(2) 静态局部变量替代全局变量,减少内存泄漏风险。,而不是对象的一部分,
2025-03-08 00:02:19
554
原创 嵌入式八股文之 Volatile
引入了 volatile 关键字,使用该关键字后,程序在执行 c = a 时,就会先去 a 的地址读出 a 到 CPU,再从 CPU 将 a 的值赋予给 c ,这样就防止了被优化。如上图代码所示,上边的程序如果按第一段代码所说的顺序执行,则 c = a 语句在编译时是可以被编译器优化的,上边程序中,如果在执行完 b = a 后,a 此时的值存放在 CPU 中。),但是存在 CPU 中的 a 是原来的 a ,按理应该是已经变化后的 a 赋值给 c ,c 会被赋值为寄存器中的旧值,而非内存中的新值。
2025-03-02 20:49:22
804
原创 第一章 STM32 综述
具体来说,这些引脚在物理上已经连接到外设(如USART、SPI、I2C、ADC等),但通过配置,可以选择是否将它们用作这些外设的引脚,或者仅作为普通的数字I/O引脚来使用。这里的 STM 中的 ST 指的是 ST 公司,而 M 是微控制器单词的首字母,32 即指 32 位。在 STM32 中,外设上电后是默认没有时钟的,无时钟,外设就无效。(5) AFIO:是复用 IO 口,完成复用功能端口的重定义,还有中断端口的配置。,I/O 代表输入输出,I/O 电平代表所能容忍的电压,FT代表能容忍 5V。
2025-02-17 22:30:29
1222
原创 点亮一个 LED
1. 单片机,简称 MCU ,内部集成了 CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能。它的任务是信息采集(依靠传感器)、处理(依靠 CPU )和硬件设备(例如电机、LED 等)的控制。(1) 外层 while(xms) 负责执行 xms 次:每次 xms-- ,意味着整体循环 xms 次,相当于延时 xms 毫秒。就是一次点亮一个,按顺序闪烁,每个灯只闪烁一次,同时每个延时。,如果直接让 LED 亮和灭交替进行,肉眼无法区分,会让人感觉 LED 是一直亮着,而不是在闪烁。
2025-02-04 17:58:07
831
原创 Leetcode第九题:回文数
(1) 这个条件的目的是为了逐步反转数字的右半部分(存储在 right 中),并与左半部分(存储在 left 中)进行比较。( Palindrome 是回文数的意思),它接受一个参数整数 x ,返回一个布尔值( true 或 false)Y = 3* 10 + 2 = 32( Y 现在是 32 ,相当于 123 的倒数两位)。Y = 0* 10 + 3 = 3( Y 现在是 3 ,已经包含了 X 的最后一位)。(1) 首先排除不可能是回文数的特殊情况,比如负数或个位是 0 的数(除了 0 本身)
2025-01-27 17:02:12
1035
原创 Leetcode第一题(哈希表)
(1) uthash 是一个轻量级、易用的 C 语言哈希表实现库,它允许你快速地将任意结构体变成一个哈希表。如果找到了差值 2 ,表示我们之前遍历过这个数,并且知道它的索引。,这样在之后遍历数组时,如果某个数的差值在哈希表中,就可以快速找到它对应的索引。假设我们遍历数组时,当前是第 i = 1 个元素,即 num[1] = 7。目标:两个找到数字,它们的和等于 9 ,并返回它们的索引。┌──────────找到───────────┐。是全局哈希表的头指针,表示在这个哈希表中进行查找。
2025-01-23 15:09:42
642
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人