IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F103C8T6点亮LED流水灯详解 -> 正文阅读

[嵌入式]STM32F103C8T6点亮LED流水灯详解

目录

一、STM32寄存器简介

二、keil5添加stm32固件库

三、编译代码部分

?四、将程序烧录到STM32F103C8t6中去


一、STM32寄存器简介

单来说,寄存器就是存放东西的东西。从名字来看,跟火车站寄存行李的地方好像是有关系的。只不过火车站行李寄存处,存放的行李;寄存器可能存放的是指令、数据或地址。
存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个寄存器所在的地方来问问他,数据是多少就行了。问寄存器这个动作,叫做访问寄存器。不同的数据会存放在不同的寄存器,例如引脚PA2与PB8的高低电平数据(1或0)肯定放在不同的寄存器里,那么怎么区分不同的寄存器呢?通过地址,不同的寄存器有不同的地址,就像老张行李寄存处在101号店铺,老王行李寄存处在258号店铺。
指令、地址寄存器与数据寄存器类似,里边存放的都是0和1,毕竟单片机也只认识机器码,机器码都是0或1,只是特别的规定下,数据寄存器里面存放的0和1表示数据,指令寄存器里存放的表示指令。

二、keil5添加stm32固件库

keil5烧录前环境配置所需要文件:包括STM32下载软件FlyMcu,SYSTEM文件,C8T6数据手册,启动文件,USB串口驱动,下面创建keil5与烧录都需要用到。链接如下:

链接:https://pan.baidu.com/s/1aEKkwiGeit_0azI5g_mq_Q
提取码:1234

1、新建文件夹led,里面分别在创建OBJ和USER文件夹,备用。

2、keil5新建工程,命名为led2。(不会创建的参考之前写的博客基于MDK创建纯汇编语言的STM32工程_小杨很勤奋的博客-CSDN博客

?3.我们找到 Target1Source Group1→双击→设置打开文件类型为 Asm Source file→选择 startup_stm32f10x_hd.s→点击 Add,如下图所示

添加之后如下图所示:

4、然后关闭keil5,打开led文件夹,把Listings 和Objects 文件夹里面的东西全部移到 OBJ 文件夹下,启动文件(startup_stm32f10x_md.s)、工程文件(test.uvprojx)等不可缺少的文件放在USER 文件夹下。

5、系统代码 拷贝 过来(即 SYSTEM文件夹,该文件夹由 ALIENTEK 提供,这些代码在任何 STM32F10x 的芯片上都是通用的,可以用于快速构建自己的工程。
注意一定要拷贝寄存器版本)

45步骤操作完结果如图(有两个文件在后续步骤中讲解,这里不用管):

?6、在 USER 文件夹下面找到 led.uvprojx,打开它,然后在 Target 目录树上点击右键→Manage Project Items,弹出对话框。

在上面对话框的中间栏,点新建,新建 USER 和 SYSTEM 两个组。然后点击 Add Files 按钮,把 SYSTEM 文件夹三个子文件夹里面的:sys.c、usart.c、delay.c 加入到 SYSTEM 组中。注意:此时 USER 组下还是没有任何文件,

我们只添加SYSTEM的三个。

?结果如图所示:

7、接着,我们新建一个 test.c 文件,并保存在 USER 文件夹下。然后双击 USER 组,会弹出加载文件的对话框,此时我们在 USER 目录下选择 test.c 文件,加入到 USER 组下。

8、如此时编译,生成的中间文件,还是会存放在 Listings 和 Objects 文件夹下,所以,我们先设置输出路径,再编译。

点击魔法棒,弹出 Options for Target’Target 1’对话框,选择 Output 选项卡→选中 Create Hex File(用于生成 Hex 文件,后面会用到)→点击 Select Folder for Objects→找到 OBJ 文件夹→点击 OK

接着,再设置 Listings 文件路径,同上,打开 Listing 选项卡→点击 Select
Folder for Listings→找到 OBJ 文件夹→点击 OK?

?

9、加入sys,delay,usar路径,?

至此,工程文件就建立好了。

三、编译代码部分

1、打开工程文件

在led文件夹下新建一个HARDWARE文件夹,用来存放相关代码。

新建两个文件,然后保存在HARDWARE→LED 文件夹下面,保存为 led.c,led.h
我们将文件添加到工程中,步骤如下图

2、记得在魔法棒这里将HARDWARE路径加进去,否则之后会报错。

3.完整代码

led.c 代码

#include "led.h"
//初始化 PB1 PC4 PD8为输出口.并使能这三个口的时钟 
//LED IO 初始化
void LED_Init(void)
{
	RCC->APB2ENR|=1<<2; //使能 PORTA 时钟 
	RCC->APB2ENR|=1<<3; //使能 PORTB 时钟 
//	RCC->APB2ENR|=1<<4; //使能 PORTC 时钟
//	RCC->APB2ENR|=1<<5; //使能 PORTD 时钟	
	GPIOB->CRL&=0XFF0FFFFF; 
	GPIOB->CRL|=0X00300000;//PB.5 推挽输出 
	GPIOB->ODR|=1<<5; //PB.5 输出高 
	
	GPIOB->CRL&=0XFFFFFFF0; 
	GPIOB->CRL|=0X00000003;//PB.0 推挽输出 
	GPIOB->ODR|=1<<0; //PB.0 输出高
	
	GPIOA->CRL&=0XFFFFFF0F; 
	GPIOA->CRL|=0X00000030;//PA.1 推挽输出 
	GPIOA->ODR|=1<<1; //PA.1 输出高
}

led.h

#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED 端口定义
#define LED0 PBout(5) // DS0
#define LED1 PBout(0) // DS1
#define LED2 PAout(1) // DS2
void LED_Init(void); //初始化 
#endif

在USER文件夹下test.c代码

#include "sys.h"
#include "delay.h"
#include "led.h"
int main(void)
{ 
	Stm32_Clock_Init(9); //系统时钟设置
	delay_init(72); //延时初始化
	LED_Init(); //初始化与 LED 连接的硬件接口
	while(1)
	{
		LED0=0;
		LED1=1;
		LED2=1;
		delay_ms(1000);
		LED0=1;
		LED1=0;
		LED2=1;
		delay_ms(1000);
		LED0=1;
		LED1=1;
		LED2=0;
		delay_ms(1000);
	} 
}

4、编译运行

发现报错了

?

?通过查询资料要取消一开始keil5 创建时环境配置中Starup的设置。

?

再次编译0error,编译通过。

?四、将程序烧录到STM32F103C8t6中去

?1、驱动安装

网盘中CH340-driver文件中安装驱动软件

?

?2、硬件连接

同时将boot0设为1,boot1设为0,利用跳线帽实现?

3、打开FlyMcu软件,选择led2.hex文件,勾选编程后执行,将代码烧进芯片

4、电路连接

配置 BOOT0 为 0,BOOT1 随便设置都可以

线路连接

?

?实验结果

?五、总结

线不能接错!

六、参考

?面包板使用简介_countofdane的博客-CSDN博客_面包板的详细使用方法

STM32寄存器的简介、地址查找,与直接操作寄存器_geekYatao-CSDN博客_stm32寄存器

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:40:09  更:2021-10-25 12:40:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:22:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码