嵌入式初学 |①STM32F103C8自建模板用寄存器点LED(还有启动文件和ST-LINK)

本文主要是介绍嵌入式初学 |①STM32F103C8自建模板用寄存器点LED(还有启动文件和ST-LINK),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

浅学了51的基本知识,现在记录一下STM32学习过程。

鄙人看的野火的教程,用的最小核心板STM32F103C8T6,板载一个led,接在PC13上。


  • 首先安装和破解Keil

CSDN上教程很多,安装和破解一般也不会出问题。(小心注册机自带的音乐)

  • 创建工程模板

先下载芯片包

MDK5 Software Packs

找到自己系列

下载完双击.pack文件,会自动找到电脑里Keil路径,安装就行

       在Keil里面新建项目

 

       选择路径

       然后选自己的具体型号,我这里是F103C8

       然后需要添加启动文件(.s文件)

       商家给的资料包一般有,我这没有

stm官网里应该是这个地方

https://www.stmicroelectronics.com.cn/zh/embedded-software/stm32-standardperipheral-libraries.html

但是问题很大,首先图标和链接位置对不上

除了F0和F4,打开都是404,我谢谢你。

打开压缩包查找“startup”,或者按下面的路径来找,这里下载的是F4的,

后面终于下到了F10x的

链接:https://pan.baidu.com/s/1uW9Go_kn66PykIz31GPNXQ?pwd=uils

提取码:uils

简单来说,看flash大小

64K以下——ld

64K-128K——md

256K-512K——hd

细节可以看看C一下别的详解blog

我这里F103C8用md

然后终于可以在Keil里面添加了,双击source group1

 

文件类型选all,这里建议把启动文件复制到项目路径里,以免路径改名之后他找不到

然后右键source group1添加.c文件,我这里命名为main

再添加一个.h文件,命名为芯片型号

.h文件里看参考手册写寄存器映射,可去B站看教程学习。

.h文件如下

//寄存器映射#define PERIPH_BASE								((unsigned int)0x40000000)
#define APB1PERIPH_BASE						PERIPH_BASE
#define APB2PERIPH_BASE						(PERIPH_BASE + 0x10000)
#define AHBPERIPH_BASE						(PERIPH_BASE + 0x20000) //本应是+ 0x18000,这样写方便取RCC的值#define RCC_BASE									(AHBPERIPH_BASE + 0x1000)
#define GPIOC_BASE								(APB2PERIPH_BASE + 0x1000)#define RCC_APB2ENR 							*(unsigned int*)(RCC_BASE + 0x18)#define GPIOC_ODR 								*(unsigned int*)(GPIOC_BASE + 0x0C)
#define GPIOC_CRL 								*(unsigned int*)(GPIOC_BASE + 0x00)
#define GPIOC_CRH 								*(unsigned int*)(GPIOC_BASE + 0x04)

.c文件如下

#include "stm32f103c8t6.h"    //与刚刚创建的.h文件一致int main()
{while(1){//打开时钟RCC_APB2ENR |= (1 << 4);//先清零,再设置GPIOC为输出模式GPIOC_CRH &= ~((0x0f) << 20);GPIOC_CRH |= (1 << 20);//给低电平GPIOC_ODR &= ~(1 << 13);}
}//防止报错
void SystemInit(void)
{//空
}
  • 烧录程序

用的ST-LINK V2

驱动下载:

STSW-LINK009 - ST-LINK, ST-LINK/V2, ST-LINK/V2-1, STLINK-V3 USB driver signed for Windows7, Windows8, Windows10 - STMicroelectronics

找到STM32开发板上原理图,或者看开发板背面


插线:

ST-LINK             STM32


3.3V            3V3

GND            GND

SWCLK          CLK(TCLK)

SWDIO          DIO(TMS)


我这里接上RST——RST但是之后download程序时也没法自动复位,得手动

驱动没问题的话 插上ST-LINK后灯常亮

进入设置

如果有些奇怪错误可以在target里面右边“ARM compiler”改成default version 5试试

没连RST选这个,再检查以下左上方选项卡“Flash Download”里面是否正常

完了ok,按一下开发板上复位键

 

历尽艰辛,点灯成功

这篇关于嵌入式初学 |①STM32F103C8自建模板用寄存器点LED(还有启动文件和ST-LINK)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/413191

相关文章

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M