在uVision中新建STM32工程后,需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中,此时需要在工程设置->C/C++选项卡下的Define文本框中键入这两个全局宏定义。

STM32F40_41xxx,USE_STDPERIPH_DRIVER

  USE_STDPERIPH_DRIVER

  这个说明你在使用标准外设驱动,有自己的外设配置文件,即stm32f10x_conf.h,详细可查看stm32f4xx.h中12026-12017行。关于stm32f4xx_conf.h

  文件中的内容,是有选择的#inlude "stm32f4xx_conf.h",这样只编译需要的外设文件,减少hex文件的体积。如果没有使用这个宏,或没有stm32f10x_conf.h文件,那么编译时会有一大堆莫名奇妙地错误,这是因为MDK中也自带了stm32f40x_xxxx.h文件,使得编译器使用MDK中.h文件,而.c文件和.h文件版本是不匹配的。

  注意,如果是库文件的错误,那一定是你工程配置有问题。

Use Standard Peripheral Driver
  在Keil MDK环境中使用STM32固件库建立工程时,可能会遇到编译不通过的问题。出现如下警告或错误提示:
warning:#223-D:function"assert_param"declaredimplicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  这时候我们需要在设置面板的“TargetOptions”中“C/C++”选项卡添加STM32F40_41xxx,USE_STDPERIPH_DRIVER。这样才能使编顺利通过。

  知其然了,我们还得知其所以然。下面就一一道来。我们知道,程序的执行是从main.c文件开始的,其中必须包含有头文件stm32f4xx.h。打开stm32f4xx.h,查找USE_STDPERIPH_DRIVER,在第12026-12017行找到

#ifdef USE_STDPERIPH_DRIVER
#include "stm32f4xx_conf.h"

为何在新建STM工程中全局声明两个宏的更多相关文章

  1. 工程中实际问题解决两例——基于C#

    工程中实际问题解决两例--基于C# 目录 工程中实际问题解决两例--基于C# 1. try catch的妙用 1.1 遇到问题的现象 1.2 原因分析 1.2.1 先从数据库入手 1.2.2 代码日志 ...

  2. eclipse中新建jni工程

    1.什么是NDK 网上很多不多说,全称是Android Native Developer Kit,是一个工具合集,我理解可以把c/c++打包成.so文件 这是目录结构,要用到指令ndk-build 需 ...

  3. ] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题

    ] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题 标签: myeclipsejavawebWeb App Libraries 2013-10-16 1 ...

  4. 如何在Flash Builder里新建ActionScript工程

    新建ActionScript工程 1. File > New > ActionScript Project 2. 按照提示完成工程的创建 使程序直接在Flash Player中运行 1. ...

  5. 在C++工程中main函数之前跑代码的廉价方法(使用全局变量和全局函数)

    // test.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...

  6. Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局

    一.新建android工程的时候eclipse没有生成MainActivity和layout布局 最近由于工作上的原因,开始学习Android开发,在入门的时候就遇到了不少的坑,遇到的第一个坑就是&q ...

  7. eclipse中无法新建Android工程 出现问题:Plug-in org.eclipse.ajdt.ui was unable to load

    转自:http://www.bubuko.com/infodetail-757338.html eclipse中打开后新建Android项目区仍无法创建,出现下列提示对话框: Plug-in org. ...

  8. redis-如何在工程中使用redis

    这里,我们介绍下如何使用redis作为缓存服务器使用在我们的工程中. 使用思路 对于java中的使用redis提供了一个jedis的jar包.我们在安装好我们的redis服务器以后,只需要通过redi ...

  9. 如何在Web工程中实现任务计划调度

    转载自: http://www.oschina.net/question/146385_37793?sort=time 下面就Servlet侦听器结合Java定时器来讲述整个实现过程.要运用Servl ...

随机推荐

  1. MYSQL全文索引—CONTAINS语法

    我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search con ...

  2. Android Paint类介绍以及浮雕和阴影效果的设置(转)

    转自:https://blog.csdn.net/lpjishu/article/details/45558375 Paint类介绍 Paint即画笔,在绘制文本和图形用它来设置图形颜色, 样式等绘制 ...

  3. C# string.Format json格式字符串报错”输入字符串的格式不正确“

    当我们在string.Format中传入Json字符串时,会报”输入字符串的格式不正确“,这是因为json的"{"符号的问题,最开始我是想着用转义一下"{",但 ...

  4. 大数据基础环境--jdk1.8环境安装部署

    1.环境说明 1.1.机器配置说明 本次集群环境为三台linux系统机器,具体信息如下: 主机名称 IP地址 操作系统 hadoop1 10.0.0.20 CentOS Linux release 7 ...

  5. linux IO模式以及select、poll、epoll详解

  6. 什么是http协议(二)

    一.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. ...

  7. python dir()详解

    Python dir() 函数 Python 内置函数 描述 dir() 函数不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返回参数的属性.方法列表.如果参数包含方法__dir__ ...

  8. Shell脚本并发及并发数的控制

    https://www.jianshu.com/p/701952ffb755 正常情况下,Shell脚本是串行执行的,一条命令执行完才会执行接下来的命令.如下代码: # !/bin/bash for ...

  9. python 标准模块和第三方模块

    >>> help('modules') Please wait a moment while I gather a list of all available modules... ...

  10. Fidder的使用

    默认的header是类似这样的 User-Agent: Fiddler Host: localhost Content-Length: 34 只需要改成这样的 User-Agent: Fiddler ...