STM32F072从零配置工程-建立工程文件
快速建立工程有两种方法:
第一种是通过官方提供的外设库来搭建,好处是使用库函数,而不需要深入研究寄存器配置;
第二种是通过STM32CubeMX,好处是直观快速,可以直接帮你配置好功能和时钟,不过使用的是HAL库,在扩展功能逻辑时需要了解相应的寄存器和宏定义来配置;
如果你对芯片构造和外设原理较为了解,可以直接使用CMSIS文件和System Startup文件,接下来采用寄存器配置的方式,自己全部配置;
第一种方法:
第一步:找到官方外设库



第二步:使用KeilMDK建立新的工程文件
个人工程目录结构如下:
CORE:存放CMSIS Core Support文件(core_cm0.h)和System Startup文件(.s);
LIB:存放标准外围设备驱动程序库文件,分为inc(.h)和src(.c)两个部分;
OUT:存放Keil输出文件,分别存放LIST和OBJ;
SYS:存放自己编写的外设文件;
USER:Keil工程文件、main.c文件、外设驱动配置文件(stm32f0xx_config.h)、片上外设访问层头文件(stm32f0xx.h)、中断服务函数文件(stm32f0xx_it.c/stm32f0xx_it.h)、片上外设接入层系统头文件(system_stm32f0xx.c/system_stm32f0xx.h)

在USER中新建工程,然后分别导入c文件和s文件、引入头文件目录;
需要注意几点:
开启C99模式,或在MiscControls中添加关键词-C99;
在Define中添加关键定义
USE_STDPERIPH_DRIVER,STM32F072,USE_DEFAULT_TIMEOUT_CALLBACK
由于库函数配置需要自己设定时钟,结合具体的硬件设计,比如应用到了哪些外设时钟源(HSE、HSI、是否需要使用PLL),因此不可避免地会需要了解库函数的结构与整体框架来实现与具体外设硬件的对接配置;
而采取官方的STM32CubeMX进行配置就会好很多,配置较为直观,但是对工程和硬件以及软件HAL库需要都有一个很好的了解,如果习惯了寄存器编程的话会很容易上手,毕竟都是底层操作寄存器,而HAL库与库函数之间的设计思路相似,上手也不难;
STM32F072从零配置工程-建立工程文件的更多相关文章
- STM32F072从零配置工程-自定义时钟配置详解
从自己的板子STM32F407入手,参考官方的SystemInit()函数: 核心在SetSysClock()这个函数,官方默认是采用HSE(设定为8MHz)作为PLL锁相环的输入输出168MHz的S ...
- STM32F072从零配置工程-实现delay功能
因为是使用SysTick来作为延时时钟,因此在这里给出SysTick时钟的寄存器: CTRL:SysTick控制及状态寄存器 位段 名称 类型 复位值 描述 16 COUNTFLAG R/W 0 如果 ...
- STM32F072从零配置工程-串口USART配置
也是使用HAL库进行配置,通过STMCube生成代码,可以通过这个简单的配置过程看到STMCube生成代码的一种规范: 从main函数入手观察其外设配置结构: 首先是HAL_Init()进行所有外设的 ...
- STM32F072从零配置工程-基于HAL库的串口UART中断配置
先上一个采用串口直接传输的Demo: 此处的思路是完全采用HAL库来实现的,核心是运用HAL_UART_Transmit_IT和HAL_UART_Receive_IT两个函数来实现的,可以作为一个De ...
- Spring Web工程web.xml零配置即使用Java Config + Annotation
摘要: 在Spring 3.0之前,我们工程中常用Bean都是通过XML形式的文件注解的,少了还可以,但是数量多,关系复杂到后期就很难维护了,所以在3.x之后Spring官方推荐使用Java Conf ...
- H5新人福音~零配置搭建现代化的前端工程
X-BUILD一套基于Webpack(v4.21.0)快速搭建H5场景开发环境的脚手架,只需要几分钟的时间就可以运行起来.X-BUILD是针对H5开发的一套自动化构建工具,致力于提升开发效率,减小开发 ...
- maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程。
注:本文来源于:杨四郎2018 <maven的安装.路径配置.修改库文件路径和eclipse中的配置.创建maven工程> 一.maven的安装 首先,先到官网去下载maven.这里是官 ...
- Borland C++建立工程菜鸟教程
实在不敢相信,学校里现在教学用的编译器还是七八十年代的老古董,难道这东西更能培养从没接触过代码的学生深刻理解c语言的运行流程,不得不说像VisualStdio这样的重量级开发环境确实屏蔽了很多底层的运 ...
- Davinci DM6446开发攻略——DSP开发工程建立
前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间 ...
随机推荐
- codewars杂记: 寻找缺失的数
题目描述: 给出一个整数列表,找出该列表无法通过各种组合求和得到的最小的整数. 示例: solve([1,2,8,7]) = 4, because we can get 1, 2, 1+2=3. Bu ...
- Linux下获取arm的交叉编译工具链
转载请注明文章:Linux下获取arm的交叉编译工具链 出处:多客博图 这里介绍,Linux下获取arm的交叉编译工具链,比如arm-linux-gnueabihf-gcc.arm-linux-gne ...
- 你遗忘的都在这里—iOS常用类型方法笔记
这些都是项目中常用但又常忘的方法,与大家分享一下. 一.NSString 创建字符串. NSString *astring = @"This is a String!"; 创建空 ...
- create table as 复制not null
创建一张表包含非空约束,唯一约束和check约束 SQL> create table dept( 2 ename varchar2(20) constraint mep_ename_nn not ...
- C#图片旋转
这里以Bitmap为例说明问题. 可以看到,旋转方法需要传入一个参数,而这个参数是一个枚举类型,RotateFlipType. 系统提供了两大类型的旋转, 1.旋转后不翻转. 2.旋转后接着翻转.翻转 ...
- python爬虫之PyQuery
# -*- coding: UTF-8 -*- from pyquery import PyQuery as pq import re from datetime import datetime,ti ...
- 程序代写, CS代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法代写, web代写
互联网一线工程师程序代写 微信联系 当天完成 查看大牛简介特色: 学霸代写,按时交付,保证原创,7*24在线服务,可加急.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor ...
- AcWing 164. 可达性统计
给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量. 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边. 输出格式 输出共N行,表示每个点能 ...
- MySQL之SQL优化详解(二)
目录 MySQL之SQL优化详解(二) 1. SQL的执行顺序 1.1 手写顺序 1.2 机读顺序 2. 七种join 3. 索引 3.1 索引初探 3.2 索引分类 3.3 建与不建 4. 性能分析 ...
- vue2.0父子组件以及非父子组件通信传参详解
1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...