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开发工程建立
前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间 ...
随机推荐
- 深度学习概述教程--Deep Learning Overview
引言 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...
- WPF MVVM笔记
学习了一番WPF MVVM,记录一下,微软的连接(https://msdn.microsoft.com/zh-cn/magazine/dd419663.aspx) 1.mvvm就是model,view ...
- 升级d7的代码到2010以上版本注意事项(SetLength的参数就是字符长度,而不是字节长度,但Move函数要改)
delphi2010是delphi所有版本的分水岭,其中2010—xe10.2之间版本上的代码都有比较好的兼容性,基本上都能直接进行编译,不需要过多修改,但d7距d2010跨度4个版本以上,新版本除了 ...
- 转一个git的命令
Git远程操作详解 Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作. git clone git rem ...
- C++ Builder 控件的卸载
控件卸载: 1.选择 BCB 菜单 File→Close All (关闭所有文件) 选择BCB 菜单: Project→Options→Packages 在 ...
- 创业游戏模拟器 Startup 游戏试玩
买的正版游戏,还在beta阶段.因为对这种经营类的游戏挺感兴趣,结合自己也是做这个行当的.算是一次性通关了吧.我来评价一下这个游戏.足足玩了有5个多小时.从1级玩到15级.解锁了所有的内容.员工从1个 ...
- 解决socket.error: [Errno 98] Address already in use问题
如果python中socket 绑定的地址正在使用,往往会出现错误, 在linux下: 则会显示“ socket.error: [Errno 98] Address already in use” 在 ...
- Ionic Framework 4 介绍
Ionic Framework 4是一个开源UI工具包,用于使用Web技术(HTML,CSS和JavaScript)构建高性能的高质量移动和桌面应用程序.Ionic Framework专注于前端用户体 ...
- 基于ASP.NET的新闻管理系统(一)
1. 项目简介 1.1设计内容 (1)可以在首页查看各类新闻,可以点击新闻查看具体内容:可以查看不同类型的新闻,并了解热点新闻,可以在搜索框里输入要查找的内容. (2)在后台界面中,管理员可以修改密码 ...
- jvm(4)---垃圾回收(哪些对象可以被回收)
1.java堆中几乎放着所有对象的实例,那么什么样子的对象才是可以被回收的呢? 1.1.引用计数法: 给对象添加一个引用计数器,当有地方引用的时候,计数器就+1,引用失效就-1:任何时候当计数器为0, ...