《STM32学习笔记》2——开发环境的建立
接上文,文中的图片知识,大多数来自视频的截图(来自洋桃电子)。
欢迎大家批评指正!
STM32学习笔记-专栏
文章目录
- 一、接口定义
- 1 芯片引脚整体简介
- 2 各部分引脚介绍
- 二、开发板简介
- 三、ISP下载
- 1 安装 USB 驱动
- 2 ISP程序下载——FlyMcu
- 2.1 烧入FLASH:
- 2.2 烧入SRAM:(烧写快,断电丢失)
- 四、最小系统电路
- 1 基本内部组成
- 2 最小系统电路
- 五、KEIL
- 1 KEIL软件介绍
- 2 安装
- 3 工程结构
- 4 固件库
- 4.1 定义
- 4.2 运行原理
- 4.3 下载安装固件库
- 六、编程语言介绍
- 1、C语言
- 2、对比
- 七、固件库的调用和添加工程文件
- 1、固件库
- 2、添加文件
- 3、移除文件
一、接口定义
杜老师戏称洋桃开发板是故宫布局,很有意思!
1 芯片引脚整体简介
- 芯片1脚位置(引脚数逆时针递增)
- F103(48pin)引脚分布:
2 各部分引脚介绍
二、开发板简介
开发板功能 :
- 2 路继电器
- 1 个 5 线步进电机接口
- 1 个 RS232 接口
- 1 个 RS485 接口
- 1 个 CAN 总线接口
- 1 个模拟量游戏摇杆
- 4 个电容式触摸按钮
- 1 个旋转编码器按钮
- 8 位数码管及驱动芯片
- 8 个 LED流水灯
- 1 个 MicoUSB 接口
- 1 个 TF 卡槽
- 1 个 MP3 播放控制芯片
- 1 个 U 盘或 USB 鼠标键盘接口
- 1 个 5V 舵机接口
- 1 个 JTAG 调试接口
- 1 个面包板
- 1 个复位按钮
- 1 个唤醒按钮
- 1 个 OLED 显示屏
- 1 个光敏电阻
- 1 个电压调节电位器
- 核心板插座
- 核心板接口扩展插座
(所有功能均可用跳线帽与单片机的 IO 接口连接或断开)
三、ISP下载
1 安装 USB 驱动
CH340-USB转串口驱动
2 ISP程序下载——FlyMcu
2.1 烧入FLASH:
- 搜索串口
- 配置波特率
- 打开hex文件
- 勾上 编程前重装文件、校验、编程后执行、编程到FLASH时写选项字节
- 设置选项等字节—— FF——设成FF阻止读出
- 开始编程,即烧写成功
2.2 烧入SRAM:(烧写快,断电丢失)
- 在开发板上按键,切换ISP模式。
- 勾选上 使用RAMIsp
- 步骤同上,烧写成功
四、最小系统电路
1 基本内部组成
- 内核
- 存储器
- 时钟和启动
- 复位
- 电源管理
2 最小系统电路
- BAT1——纽扣电池:为内部RTC供电
- 右边6个——滤波电容:去除电源电压的波动干扰。应围绕单片机周围布局布线,以达到最佳滤波效果。
- K3——手动复位按键
- Y1、Y2——外部晶振
- 左边4个——起振电容:帮助晶体振荡器稳定的工作
- 30、31——串口1的收发脚:USB下载口
- 40、20——BOOT0、1:启动模式选择引脚
五、KEIL
1 KEIL软件介绍
KEIL 是一款用于微控制器的软件开发平台。
- 把用户的 C 语言、汇编语言、 C ++语言等转换成 HEX 或 BIN 等文件 (编译)
- KEIL 就是将程序编辑、编译、调试仿真等功能集合在一个叫 uVision 的软件中,这就是集成开发环境
- KEIL 软件用于STM32的 ARM 内核编译器叫 KEIL MDK
- KEIL MDK 有多个版本,包括 MDK-Pro(专业版)、 MDK-ARM(标准版)、MDK-CortexM(Cortex版)、 C-MDK-ARМ(中国版)、 MDK-Lite(试用版)。
- KEIL 原是一家德国公司,后被 ARM 公司收购。
- 目前主流的集成开发环境有 KEIL 和 IAR ,二者的使用方法大同小异。
2 安装
- 安装
- 获得MDK编译内核的序列码,破解(可与51内核共存)
3 工程结构
- CMSIS——内核驱动程序: 包含c⽂件,ST公司官⽅提供的,对arm内核和mcu系统的基础⽂件,⼀般不做修改。
- LIB——内部功能的基本函数库: 包含c⽂件,st公司提供,需要根据⽤户的需求对其进⾏增减。
- STARTUP——单⽚机启动程序: 包含asm⽂件,st公司提供,负责启动,⼀般不做修改。
- USER——⽤户程序(包括主函数): 包括main.c⽂件和stm32f10x_it.c⽂件。前者为⽤户程序,需要⽤户进⾏修改;后者不要修改。
- BASIC——内部功能的驱动函数: 包括dealy.c和sys.c。前者为⽤户编写的延时程序;后者为st公司提供,不作修改。
- HARDWARE——外部硬件的驱动程序: 包括led.c和key.c两个⽂件,驱动如led,oled、继电器、微动开关之类。均为⽤户⾃⼰编写,需根据需求修改。
4 固件库
4.1 定义
固件库: 工程文件主要由 底层硬件驱动程序 + 上层用户应用程序 组成。ST官方将通用的底层硬件程序文件写好并封装成文件包,即为固件库。
4.2 运行原理
- 功能配置寄存器: SRAM 里特定的部分,专门用于软件和硬件的连接。
- 用户程序通常存放在FLASH,运行时被ARM内核调用。内核根据程序指令,调用功能配置寄存器。功能寄存器每一位置零或置一,都可以操作硬件的状态。
- 基于运行原理的三种编程方案
- 寄存器操作:用户直接操作底层寄存器。简单,效率高,占用内存小,但学习复杂繁琐
- 标准固件库:官方封装各种驱动程序为特定函数,用户直接调用函数即可。
- STM32Cube:图形化编程方案,官方最近主推。HAL、LL模式各有优缺点,互相弥补。
4.3 下载安装固件库
- 在官方途径下载固件库
- 新建工程文件夹,在内分别新建 CMSIS、Lib、Startup、User文件夹
- 将官方固件库的文件复制进去
- keil 新建工程在工程文件夹,选择芯片型号
- keil 红绿白方块的图标的按钮,新建上述四个文件,并分别导入四个文件夹的文件
- keil 魔术棒按钮。target——8.0MHz;Output——create HEX;C/C++——Preprocessor Symbols——Define输入USE_STDPERIPH_DRIVER,STM32F10X_MD。Include Paths选择文件夹CMSIS、Lib\inc、Lib\src、Startup、User。
- 在main.c里修改。
- 编译
六、编程语言介绍
C语言和汇编语言都是人类易学易懂的语言,通过编译器(keil这样的软件)将代码转换为HEX或Bin文件,即单片机认识的语言,可直接在FLASH里读取运行的机械语言。
1、C语言
C 语言: 单片机开发主要学习的语言。"高级但又不太高级"的语言,和底层依旧可以保持一定的联系。因此,可以不需要任何运行环境支持便能运行,且具有良好的跨平台特性。
2、对比
汇编语言 | C语言 |
---|---|
低级语言 | 高级语言 |
直接操作底层寄存器 | 更偏向用户 |
执行效率最高 | 效率不如汇编 |
不易移植 | 易移植 |
不易编写和读懂 | 易编写和读懂 |
学习难度大 | 学习难度小 |
七、固件库的调用和添加工程文件
1、固件库
ST 官方有固件库说明书,涵盖STM32各个模块,可调用库函数,引脚等。
2、添加文件
添加自定义驱动文件:
- 在工程文件夹中新建文件夹,例如 Hardware
- 在其中新建功能模块文件夹,例如 LED
- 在其中新建 “.c ”、“.h”文件,例如 led.c、led.h
- 在 keil 打开该工程,点击三个小方块(红白绿)的按钮,在 Groups 新建 Hardware 文件夹
- 点击添加文件,添加 led.c ,OK
- 点击魔术棒按钮,C/C++选项卡,Include Paths 选择刚刚的文件夹,Hardware/LED ,OK
3、移除文件
- 在 keil 打开该工程,点击三个小方块(红白绿)的按钮,在 Groups 删除 Hardware 文件夹
- 删除 led.c ,OK
以上操作可以不必编译不需要的文件,减少资源占用,实际工程文件夹依旧有该文件,但不作编译,也不出现在keil工程侧栏文件目录里。
根据工程情况,删除不必要的驱动程序或固件库的函数等。
《STM32学习笔记》2——开发环境的建立相关推荐
- 安装成功配置环境变量_go语言学习笔记-Windows10开发环境安装和环境变量配置
相关文档 go语言学习笔记-目录 1.安装 1.1.访问 https://golang.google.cn/dl/ 或 https://golang.org/dl/ 下载官方安装包 1.2.选择Win ...
- playframework学习笔记1 -- 开发环境和第一个工程
对于scala的实际开发完全是新手,因此打算从play framework入手,学习一下实际开发中scala的使用,同时也了解一下play与spring mvc,struts这些传统的mvc框架有什么 ...
- libgdx 学习笔记一 开发环境搭建
本章内容讲述 libgdx 开发环境.怎么配置eclipse 用来开发,并且在桌面和android中运行libgdx applications 注:文章就是根据libgdx官方文档翻译或加入自己的理解 ...
- CC2640R2F学习笔记(一.开发环境)
文章目录 前言 一.硬件 二.操作系统 三.SDK 四.CCS 前言 以下列出CC2640R2F学习笔记所基于的软.硬件平台,笔记的所有实验.代码都是在这些平台上来进行的. 一.硬件 开发板LAUNC ...
- 实时操作系统-NuttX学习笔记(1)-开发环境搭建
1 简介 1.1 背景 学习NuttX视频教程,该视频教程语言为英文,为了在以后的工作学习中用到,在此记录学习内容,方便自己和大家查阅. 1.2 开发环境 虚拟机+系统:虚拟机VMware® Work ...
- STM32学习笔记(一)丨建立工程丨GPIO 通用输入输出
本篇文章包含的内容 一.软件下载注册.驱动安装 1.1 软件(器件支持包)下载 1.2 ST-LINK驱动安装 1.3 USB转串口驱动安装 二.工程的建立 2.1 STM32的开发方式 2.2 新建 ...
- (Object-C)学习笔记(一)--开发环境配置和与c语言的区别
博主是大三快要实习的学生,作为软件技术专业的我认真的考虑了一下出路,认为去干起点低低java不如花点钱选择iOS.正好我也对iOS很感兴趣,虽然我赶不上08年之后的那一段互联网热潮,但是这一段时间互联 ...
- 【MindStudio训练营第一期】【昇腾AI训练营新手班学习笔记】开发环境配置
准备 购买云服务器,安装提供的镜像 华为云:https://www.huaweicloud.com 下载MindStudio(windows),安装 MindStuidio下载页: https://w ...
- STM32工作笔记0016---MDK开发环境安装
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 安装uversion MDK5这个在安装目录中点击exe就可以直接安装, 安装后,打开破解程序破解 ...
- STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)
本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...
最新文章
- 地图漫游功能的具体体现_骏谷科技|数据中心三维可视化管理系统功能亮点
- 2019 ICPC 南京 F. Paper Grading(字典树dfs序上树套树)
- biztalk BLogs
- 苹果春季发布会已开启直播;滴滴回应网约车司机被害​;微软Chromium内核浏览器曝光 | 极客头条...
- hibernate关联映射
- Druid手动创建连接的坑
- 【MFC开发(7)】编辑框控件Edit Control
- python将数据导入数据库 atomic_使用Atomic
- 2019最新IDEA Java教学视频课程资料
- 使用Python采集京东商品详情数据,并上传到拼多多商城中
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning...
- win10 蓝牙忽然消失 华硕主板
- woj1572 Cyy and Fzz KMP / AC自动机 + DP
- ant design vue全局引用一直提示没有isMoment参数的问题
- 【c语言作业-二维数组】编写程序,求一个给定的n阶方阵的鞍点。
- 【C进阶】字符串函数及其复写
- idea windows快捷键
- 大数据时代如何保障数据安全
- PHP http_build_query用法详解
- 「UPnP」- Universal Plug and Play @20210205
热门文章
- 计算机设备购置论证制度,西安交通大学大型仪器设备购置论证实施细则(西交实〔2018〕49号)...
- H5页面在微信浏览器中打开,右上角没有出现三个点
- linux查看网络|查看端口|查看路由|查看ip
- DaisyDisk怎样以管理员身份扫描磁盘或文件夹
- 对B端产品经理来说,懂点企业架构很重要!
- Excel导入数据,时间处理
- BZOJ 3323: [Scoi2013]多项式的运算
- 链读好文:热加密存储与冷加密存储有什么区别?
- 关于substance designer内创建好材质,导入unity却变成灰球的问题
- Oracle EBS 针对付款撤销不成功提示错误信息的解决方案