嵌入式初学 |①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

相关文章

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>