keil中建立工程

在目标文件夹下,新建四个文件夹,
core, hallib, obj, user.
在keil中,project->new uvision project,定位到建立的user文件夹,这里面,存放工程以及自己建立的源文件。
选择器件为stm32f407zgtx,然后下一步,
如果不需要配置runtime,选择cancel。
在keil中,project显示为树状结构了。

拷贝驱动文件,从cubemx中找到STM32Cube_FW_F4_V1.24.1\Drivers\STM32F4xx_HAL_Driver,
将inc文件夹和src文件夹,拷贝到hallib文件夹中。

拷贝核心启动文件,从cubemx中找到STM32Cube_FW_F4_V1.24.1\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm,
将startup_stm32f407xx.s复制到core下面。

拷贝核心头文件,从cubemx中找到
STM32Cube_FW_F4_V1.24.1\Drivers\CMSIS\Include,
将cmsis_armcc.h,cmsis_armclang.h,
cmsis_compiler.h, cmsis_version.h,
mpu_armv7.h, core_cm4.h,复制到core下面。

拷贝关键用户头文件,从cubemx中找到
STM32Cube_FW_F4_V1.24.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include ,
将stm32f4xx.h, system_stm32f4xx.h ,stm32f407xx.h ,复制到user下面。

拷贝模板文件,从cubemx中找到
STM32Cube_FW_F4_V1.24.1\Projects\STM32F4-Discovery\Templates ,
从inc中,拷贝stm32f4xx_it.h, stm32f4xx_hal_conf.h 和main.h。
从src中,拷贝 system_stm32f4xx.c,stm32f4xx_it.c, stm32f4xx_hal_msp.c 和 main.c 。

建立实用函数文件,
例如delay.h,delay.c,
sys.h,sys.c,
usart.h, usart.c。

然后,管理工程源码。
project->manage project items,可以配置工程中包含的源代码。
修改target name。
增加4个source group。core,hallib,user,system。
分别为group添加文件。
对于hallib,添加hallib/src 下面的各种外设文件,需要什么外设,就添加什么外设的文件。例如
stm32f4xx_hal_gpio.c。一般为了方便,通常全部添加。
对于core,由于需要添加的是s文件和h文件,所以需要使用all file方式添加文件。

然后,管理工程编译配置。
project->option for target “XXX”,打开配置选项卡。

在c/c++选项卡下,
配置include path,选择include path后面的"…",依次添加core,hallib/inc,system, user几个文件夹,这几个文件夹,都包含有h文件。所以需要给它们配置路径。
keil会自动将绝对路径转换成相对于uvproj的相对路径。

配置全局宏开关,在preprocessor symbols框中,
define USE_HAL_DRIVER,STM32F407xx。
注意这里是两个标识符USE_HAL_DRIVER 和 STM32F407xx, 他们之间是用逗号隔开的。

在output选项卡下,
配置object的输出位置,配置到之前新建的OBJ文件夹下。
配置name of executable, 配置为template,与target一致。
配置create hex file,编译后生成hex文件。
取消browse information,如果在HAL库下,勾选这个选项,编译将非常慢,所以取消掉,加快编译速度。

++++++++++++++++++++++++++++++++
keil中需要注意的选项设置

选择仿真器,
在工具栏上,选择魔法棒,option for target “XXX”,
选择debug选项卡,左侧是simulation,右侧是debugger,
右侧选择ulink2/me,
勾选load application at startup,勾选run to main,

然后点击旁边的setting,
在debug选项卡上,设置port为swd,max clock设置为10MHZ或者更小。
设置connect为normal,设置reset为SYSRESETREQ,勾选reset after connect。
勾选cache code ,cache memory,
不勾选 download to flash。
不勾选 verify code download。

在flash download选项卡上,勾选program 和 verify。勾选erase section。勾选reset and run。
ram for algorithm,设置地址,start为0x20000000,size为0x00001000。(4KB)
programming algorithm,设置地址,start为0x08000000,size为0x00100000。(1MB)
在trace 选项卡上,勾选use core clock。

在工具栏上,选择魔法棒,option for target “XXX”,
选择utility选项卡,选择use target driver for flash programming,
勾选use debug driver ,勾选update target before debugging。
设置add output image to group为user。

+++++++++++++++++++++++++++++++++
keil中需要修改的编辑设置

edit->configuration->color and font->c/C++下,
number,橙色,bold,
operator,红色,nomal,
keyword,蓝色,bold,
string,亮紫色,bold,
preprocessor,草绿色,bold,
user keyword,深紫色,bold,

edit->configuration->userkeyword->c/c++下,添加typedef的各种类型,例如,
添加u32,u16,u8,s32,s16,s8等。
添加__I,__O,__IO等,
添加uint32_t,uint16_t,uint8_t,int32_t,int16_t,int8_t等。

++++++++++++++++++++++++++++++
stm32中常用的类型定义

typedef   signed          char int8_t;
typedef   signed short     int int16_t;
typedef   signed           int int32_t;typedef unsigned          char uint8_t;
typedef unsigned short     int uint16_t;
typedef unsigned           int uint32_t;typedef   signed           int intptr_t;
typedef unsigned           int uintptr_t;typedef uint32_t u32
typedef uint16_t u16
typedef uint8_t u8typedef int32_t s32
typedef int16_t s16
typedef int8_t s8

++++++++++++++++++++++++++++++
stm32中常用的宏定义

#define _I volatile
#define _O volatile
#define _IO volatile

+++++++++++++++++++++++++++++++

STM32第一课(Keil, Type, macro)相关推荐

  1. STM32第一课:STM硬件实物图+功能简介

    keil5 MDK是给ARM系列单片机编程 keil5 C51是给51系列单片机编程的 包括: 1.面包板 2.跳线 3.飞线 4.杜邦线(公对母,母对母) 5.STM32最小系统板(中间黑色芯片为S ...

  2. 【STM32】基础知识 第一课 单片机简介

    [STM32]基础知识 第一课 单片机简介 单片机是什么 单片机和电脑区别 单片机的特点 单片机有什么用 单片机发展历程 单片机发展趋势 CISC vs RISC CISC 和 RISC 举例 冯诺依 ...

  3. 【JavaScript从入门到精通】第一课 初探JavaScript魅力-01

    第一课 初探JavaScript魅力-01 JavaScript是什么 如今我们打开一个大型的网站,都会有很多JS效果的功能和应用.对于学过CSS+HTML的同学,即使是像淘宝那样的网站,用一两天时间 ...

  4. 三层代码讲解--第一课

    主题:三层代码讲解--第一课 主持人:老吴 时间:2004-05-24 2004-05-24 10:47:00 天之痕_若虹(86278566) 請教大家一個問題好嗎 2004-05-24 10:47 ...

  5. Web 探索之旅 | 第二部分第一课:客户端语言

    -- 作者 谢恩铭 转载请注明出处 Web探索之旅 | 第二部分 第二部分第一课:客户端语言 第二部分第二课:服务器语言 第二部分第三课:框架和内容管理系统 第二部分第四课:数据库 第二部分第五课:响 ...

  6. 妙味课堂——HTML+CSS(第一课)

    一句话,还记忆不如烂笔头,何况还这么笨,记下笔记,也是记录这一路学习的过程. 妙味课堂第一课并未一味地先讲HTML,而是穿插着CSS讲解,这一点不同于一些其他视频,这一点挺特别的!所以这一课涉及到HT ...

  7. EV3 直接命令 - 第一课 无为的艺术

    LEGO 的 EV3 是一个极好的游戏工具.它的标准编程方式是 LEGO 的图形化编程工具.你可以编写程序,把它们传到你的 EV3 brick 上,然后启动它们.但还有另外一种与你的 EV3 交互的方 ...

  8. 大数据上云第一课:MaxCompute授权和外表操作躲坑指南

    一.子账号创建.AK信息绑定 如果您是第一次使用子账号登录数加平台和使用DataWorks,需要确认以下信息: • 该子账号所属主账号的企业别名. • 该子账号的用户名和密码. • 该子账号的Acce ...

  9. 计算机英语900句.pdf,计算机英语900句第一章第一课:概貌

    第一章 First Impression & Some Parts计算机概貌及有关部件 第一课 First Impression概貌 1.A computer consists of thre ...

最新文章

  1. java矩形碰撞检测_旋转矩形的Java碰撞检测?
  2. matlab矩阵乘法与打印
  3. 记录kafka踩坑:marking the coordinator (id rack null) dead for group
  4. Xor sum HDU - 6955
  5. 读《第一次把事情做对》有感
  6. 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果...
  7. 「雅礼集训 2018 Day2」农民
  8. NOIP2012pj文化之旅[floyd]
  9. 必先利其器——Python机器学习环境搭建
  10. 快手首次透露商业化布局:将重点发力短视频广告
  11. 计算机课程总结word,大学生的计算机课程总结word.docx
  12. 一瓶可乐有多重?实战梅特勒托利多PS60串口通信开发
  13. 【安全】Java(web)项目安全漏洞及解决方式【面试+工作】
  14. office2016安装后右键新建没有word、excel、ppt等--解决方法总结
  15. Injected and Delivered: Fabricating Implicit Control over Actuation Systems by Spoofing Inertial Sen
  16. Mac系统下利用ADB命令连接android手机并进行文件操作
  17. 什么是seo、vue中如何优化seo ?
  18. Nginx HTTP 健康检查
  19. LeetCode 从零单刷个人笔记整理(持续更新)
  20. python之pygal学习

热门文章

  1. 大数据学长面试之boss直聘面试题
  2. 移动端人脸风格化技术的应用
  3. esp8266接7735_ESP8266 TFT(ST7735)彩屏-web刷图
  4. quartus 2 低版本打开IP核设置窗口的方法
  5. PC端微信登录实现流程
  6. 在学习爬虫的路上,有多少坑在前边
  7. js中find和findIndex的使用
  8. 微信从原版到现在所有界面图片_微信所有的界面都怎么设置背景图片?
  9. 实验二 面向对象(一)(预习报告)
  10. 命令模式,升级版的灭霸响指