STMCU小助手
发布时间:2023-2-5 23:07
|
一、STM32寄存器简介 简单来说,寄存器就是存放东西的东西。从名字来看,跟火车站寄存行李的地方好像是有关系的。只不过火车站行李寄存处,存放的行李;寄存器可能存放的是指令、数据或地址。 存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个寄存器所在的地方来问问他,数据是多少就行了。问寄存器这个动作,叫做访问寄存器。不同的数据会存放在不同的寄存器,例如引脚PA2与PB8的高低电平数据(1或0)肯定放在不同的寄存器里,那么怎么区分不同的寄存器呢?通过地址,不同的寄存器有不同的地址,就像老张行李寄存处在101号店铺,老王行李寄存处在258号店铺。 指令、地址寄存器与数据寄存器类似,里边存放的都是0和1,毕竟单片机也只认识机器码,机器码都是0或1,只是特别的规定下,数据寄存器里面存放的0和1表示数据,指令寄存器里存放的表示指令。' {0 P- {& g# n0 ~! j, \ 8 S1 U8 Y: U6 g$ Y% E- K 二、keil5添加stm32固件库. k1 m; Y" G0 R }, r keil5烧录前环境配置所需要文件:包括STM32下载软件FlyMcu,SYSTEM文件,C8T6数据手册,启动文件,USB串口驱动,下面创建keil5与烧录都需要用到。2 m, ~- @ |1 p, u, w6 w/ q - L# K+ B0 x+ l6 O: ~ 1、新建文件夹led,里面分别在创建OBJ和USER文件夹,备用。 ) L" a6 T" B0 l% O$ z 2、keil5新建工程,命名为led2。(不会创建的参考之前写的博客基于MDK创建纯汇编语言的STM32工程_小杨很勤奋的博客-CSDN博客) 5 ? U h9 r2 u" u. c- z- E1 \+ x" K 3.我们找到 Target1→Source Group1→双击→设置打开文件类型为 Asm Source file→选择 startup_stm32f10x_hd.s→点击 Add,如下图所示
添加之后如下图所示: 9 W+ h1 Y/ T7 c$ i% \
4、然后关闭keil5,打开led文件夹,把Listings 和Objects 文件夹里面的东西全部移到 OBJ 文件夹下,启动文件(startup_stm32f10x_md.s)、工程文件(test.uvprojx)等不可缺少的文件放在USER 文件夹下。; \$ ~. l) @* u# o0 O d9 l9 p8 @ 4 y( k1 [0 R4 f& j4 ] 5、系统代码 拷贝 过来(即 SYSTEM文件夹,该文件夹由 ALIENTEK 提供,这些代码在任何 STM32F10x 的芯片上都是通用的,可以用于快速构建自己的工程。) ~6 p0 K; H2 _" q8 R, O- v& M 注意一定要拷贝寄存器版本)9 i9 p( @2 K6 C3 v: _ & m2 k, o0 b% ` 45步骤操作完结果如图(有两个文件在后续步骤中讲解,这里不用管):
( [6 J! [4 n' B! H* D 6、在 USER 文件夹下面找到 led.uvprojx,打开它,然后在 Target 目录树上点击右键→Manage Project Items,弹出对话框。 # K5 [' z, H; s' w3 J5 r2 O
在上面对话框的中间栏,点新建,新建 USER 和 SYSTEM 两个组。然后点击 Add Files 按钮,把 SYSTEM 文件夹三个子文件夹里面的:sys.c、usart.c、delay.c 加入到 SYSTEM 组中。注意:此时 USER 组下还是没有任何文件,* ^: G' ?$ C, B$ _' f9 t 2 W: y" N0 [" }0 D5 ] 我们只添加SYSTEM的三个。" i& i' p O9 w" t w' V% P3 K
结果如图所示:
7、接着,我们新建一个 test.c 文件,并保存在 USER 文件夹下。然后双击 USER 组,会弹出加载文件的对话框,此时我们在 USER 目录下选择 test.c 文件,加入到 USER 组下。
( h3 a( I e7 b: l% j( m6 A 8、如此时编译,生成的中间文件,还是会存放在 Listings 和 Objects 文件夹下,所以,我们先设置输出路径,再编译。) y, D5 U, ~2 s8 J+ f9 K3 p ! c3 n8 a7 f" ] 点击魔法棒,弹出 Options for Target’Target 1’对话框,选择 Output 选项卡→选中 Create Hex File(用于生成 Hex 文件,后面会用到)→点击 Select Folder for Objects→找到 OBJ 文件夹→点击 OK
2 Q6 K9 W" I, J% N& F 接着,再设置 Listings 文件路径,同上,打开 Listing 选项卡→点击 Select Folder for Listings→找到 OBJ 文件夹→点击 OK + C& ]! w6 |. ?9 D ) W/ `$ F* R. O3 x4 s1 r
9、加入sys,delay,usar路径, ! z7 `4 H o6 d' r! p$ f( g
: l! n/ I7 H) M% w* ~ 至此,工程文件就建立好了。% Q5 w4 \# o: M3 g$ Y 三、编译代码部分- e2 [) G! d" c+ D 1、打开工程文件 在led文件夹下新建一个HARDWARE文件夹,用来存放相关代码。* U: ~/ D/ d C, o ( J) P' ]1 ]* E1 J0 H/ F 新建两个文件,然后保存在HARDWARE→LED 文件夹下面,保存为 led.c,led.h 我们将文件添加到工程中,步骤如下图 2、记得在魔法棒这里将HARDWARE路径加进去,否则之后会报错。# [ h" G; M8 f' P0 q; j
3.完整代码 led.c 代码
led.h
在USER文件夹下test.c代码4 B% q, r8 ^7 D5 b) R
4、编译运行; U+ d# u+ \5 ]9 B 发现报错了 ) M6 M9 N k( z0 `2 A" Z! c
" x4 \2 W* ^6 L x7 \( Z
2 _7 D2 |3 B9 H 通过查询资料要取消一开始keil5 创建时环境配置中Starup的设置。! Z+ d+ }+ r2 j & ~3 E5 C" E" R8 r: i _
- a0 {9 \ |$ g! }2 J9 `5 L 再次编译0error,编译通过。
( ^/ Y, ^/ m& e6 | 四、将程序烧录到STM32F103C8t6中去 1、驱动安装 网盘中CH340-driver文件中安装驱动软件& B& P1 V M" N6 M5 ?
2、硬件连接 + X! \5 T" f" k( c+ F u! }; I
( n& k+ p# o% ?3 k2 g' m4 s; Q& S 同时将boot0设为1,boot1设为0,利用跳线帽实现 8 y5 q" [6 L' s" ^& @1 Q% i - f" f( y( W: L, Q& a% ^; ?" ^
3、打开FlyMcu软件,选择led2.hex文件,勾选编程后执行,将代码烧进芯片
4、电路连接: G6 {8 Q2 P' H# h9 | % @" R! o6 D( J& }8 a 7 f1 V1 d) r. Z 配置 BOOT0 为 0,BOOT1 随便设置都可以 线路连接
实验结果
3 Y, s' u7 ?, `' o7 s" j, K ———————————————— 版权声明:小杨很勤奋+ ]; J9 _! |& z2 ~& S |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版