STM32 | F103MINI开发板开发与学习之点灯
创始人
2024-06-02 08:44:29
0

STM32 | F103MINI开发板开发与学习之点灯

时间:2023-03-11


文章目录

    • `STM32` | `F103MINI`开发板开发与学习之点灯
    • @[toc]
      • 1.资料
      • 2.安装`KEIL5`
        • 2-1.下载
        • 2-2.安装
        • 2-3.破解
        • 2-4.安装`STM32`芯片包
      • 3.使用寄存器点亮LED灯
        • 3-1.使用Keil建立工程
          • 3-1-1.新建项目目录
          • 3-1-2.新建工程
            • 3-1-2-1.选择`CPU`
          • 3-1-3.添加文件
          • 3-1-4.其他配置
          • 3-1-5.下载器配置(没有不配置)
          • 3-1-6.编译工程
          • 3-1-7.下载程序(串口)
        • 3-2.闪烁`LED`
          • 3-2-1.电路原理
          • 3-2-2.代码
        • 3-3.效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrRGo49W-1678608341582)(null#id3)]


F103-RCT6-IO

1.资料

1.F103MINI开发板资料

2.Embedfire-stm32f103-mini gitee代码仓库

3.【野火®】零死角玩转STM32—F103-MINI.pdf

4.野火STM32F103_MINI开发板资料下载

2.安装KEIL5

2-1.下载

链接:https://pan.baidu.com/s/15ZeM1wbuZc9uohPn12HIQA
提取码:kspq


2-2.安装

[lanfeiye@fly-vm Keil MDK-ARM 5.14]$ tree
.
├── Crack
│   ├── Keygen 1.exe
│   └── Keygen 2.exe
└── mdk514.exe

点击“mdk514.exe”进行安装;除了下面图中步骤需要注意,其他的直接点击下一步直到安装完成;

keil-01


keil-02


2-3.破解

keil5最新版安装与破解:http://t.zoukankan.com/yelang-lkg-p-9679511.html;以管理员模式打开KEIL5软件;

Keil主题设置:https://blog.csdn.net/Ltter1/article/details/116161920


keil-03


keil-04


2-4.安装STM32芯片包

keil的官网下载:http://www.keil.com/dd2/pack/

Keil.STM32F1xx_DFP.2.4.0.pack: https://keilpack.azureedge.net/pack/Keil.STM32F1xx_DFP.2.4.0.pack

链接:https://pan.baidu.com/s/1Rm2ANAnGRLSIgrG5hiKN7A 提取码:mj7j

keil-05


keil-07


keil-08


3.使用寄存器点亮LED灯

资料(需要开发板的电路原理图及芯片数据手册):

1.F103-MINI 原理图.pdf

目录: D:\05_study\STM32\F103 Mini\A盘(资料盘)\6-STM32官方资料\1-STM32官方手册LastWriteTime         Length Name-------------         ------ ----
2010/11/14     10:04       14306739 1-STM32F10x-中文参考手册.pdf
2015/5/16     17:30       13016697 1-STM32F10x-英文参考手册.pdf
2016/7/21     16:01        2901411 2-STM32F103xCDE_数据手册-中文.pdf
2015/8/17     16:02        1731731 2-STM32F103xCDE_数据手册-英文.pdf
2015/8/3     10:21        6923614 CM3权威指南CnR2.pdf
2016/8/5     10:09        1400739 STM32F10xxx Cortex-M3编程手册-英文版.pdf
2011/6/7     14:26         475567 STM32F10xxx闪存编程参考手册.pdf
2016/3/21     14:44        2624839 STM32系统存储器启动模式.pdf
2016/3/16     11:03        2517456 STM8和STM32产品选型手册.pdf

3-1.使用Keil建立工程

3-1-1.新建项目目录

└─01-REG_LED
├─Listing
└─Output

3-1-2.新建工程

F103-RCT6-LED-REG

3-1-2-1.选择CPU

F103-RCT6-CPU

File       : D:\03_tools\DesTools\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.0\Keil.STM32F1xx_DFP.pdsc 
Sequence   : CheckID 
Context    : Item #1: Item #0: ::Line 2 
Expression : "              Message(2, "Not a genuine ST Device! Abort connection.");" 
----------------------------^ 
E203       : Undefined identifier - function 'Message'

Keil升级ARM支持包后Loading PDSC Debug Description failed for XXX问题

3-1-3.添加文件

在目录:D:\03_tools\DesTools\Keil_v5\ARM\Pack\Keil下搜索“startup_stm32f10x_hd.s”;复制该文件到STM32\stm32-f103rct6-mini-prj\code\01-REG_LED目录下;

新建文件:stm32f10x.hmain.c,并添加到工程中。

F103-RCT6-01


F103-RCT6-02

3-1-4.其他配置

F103-RCT6-03


F103-RCT6-04


F103-RCT6-CPU

3-1-5.下载器配置(没有不配置)
3-1-6.编译工程

F103-RCT6-07

Build target 'Target 1'
compiling main.c...
linking...
.\Output\LED-REG.axf: Warning: L6373W: libattrs.map file not found in System Library directory C:\Program Files (x86)\ARM\ADSv1_2\LIB\armlib\. Library selection may be impaired.
.\Output\LED-REG.axf: Warning: L6310W: Unable to find ARM libraries.
.\Output\LED-REG.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 2 warning and 1 error messages.
".\Output\LED-REG.axf" - 1 Error(s), 2 Warning(s).
Target not created.
Build Time Elapsed:  00:00:00

Error: L6411E: No compatible library exists with a definition of startup symbol __main.解决办法

F103-RCT6-06

Build target 'Target 1'
linking...
.\Output\LED-REG.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 1 error messages.
".\Output\LED-REG.axf" - 1 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:00:00

在mian.c文件中定义:

void SystemInit(void)
{
}

3-1-7.下载程序(串口)

F103-RCT6-08

3-2.闪烁LED

3-2-1.电路原理

stm32f103-led

GPIO口的引脚设置为推挽输出并且默认下拉,输出低电平,点亮LED

stm32f103-01


3-2-2.代码

stm32f10x.h

#ifndef __STM32F10X_H__
#define __STM32F10X_H__/* 片上外设基地址 */
#define PERIPH_BASE         ((unsigned int)0x40000000)/* APB2 总线基地址 */
#define APB2PERIPH_BASE     (PERIPH_BASE + 0x10000)
/* AHB总线基地址 */
#define AHBPERIPH_BASE      (PERIPH_BASE + 0x20000)/* GPIOC外设基地址 */
#define GPIOC_BASE          (APB2PERIPH_BASE + 0x1000)/* GPIOC寄存器地址,强制转换成指针 */
#define GPIOC_CRL			*(unsigned int*)(GPIOC_BASE+0x00)
#define GPIOC_CRH			*(unsigned int*)(GPIOC_BASE+0x04)
#define GPIOC_IDR			*(unsigned int*)(GPIOC_BASE+0x08)
#define GPIOC_ODR			*(unsigned int*)(GPIOC_BASE+0x0C)
#define GPIOC_BSRR	        *(unsigned int*)(GPIOC_BASE+0x10)
#define GPIOC_BRR			*(unsigned int*)(GPIOC_BASE+0x14)
#define GPIOC_LCKR		    *(unsigned int*)(GPIOC_BASE+0x18)/*RCC外设基地址*/
#define RCC_BASE            (AHBPERIPH_BASE + 0x1000)
/*RCC的AHB1时钟使能寄存器地址,强制转换成指针*/
#define RCC_APB2ENR		    *(unsigned int*)(RCC_BASE+0x18)#endif /* __STM32F10X_H__ */

main.c

#include "stm32f10x.h"void SystemInit(void)
{
}void soft_delay(unsigned int count)
{for(;count != 0; count --);
}int main(void)
{/* 配置RCC寄存器,使能GPIO口的时钟 */RCC_APB2ENR |= (1<<4);/* 配置CRL寄存器,配置为推挽输出 */GPIOC_CRL |= ( 1<<(4*2) );GPIOC_CRL |= ( 1<<(4*3) );/* 配套ODR寄存器 */GPIOC_ODR &= ~( 1<<2 );GPIOC_ODR &= ~( 1<<3 );while(1){GPIOC_ODR &= ~( 1<<2 );GPIOC_ODR &= ~( 1<<3 );soft_delay(0xfffff);GPIOC_ODR |= ( 1<<2 );GPIOC_ODR |= ( 1<<3 );soft_delay(0xfffff);}return 0;
}

3-3.效果

stm32f103-02

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...