ARM开发总结


前言

目前使基于STM32F407的总结


一. 新建工程的步骤:

1、新建6个文件夹,用于不同文件的管理。分别是USER, HARDWARE, FWLIB, SYSTEM, CORE, OBJ;
2、新建工程,工程目录也按上述文件夹归类
3、通过魔术棒按键,设置路径,使软件能自动查找头文件
4、通过魔术棒按键,设置全局宏定义,程序中头文件自动配置芯片型号相对应的宏定义
5、选择仿真器并设置编译后自动执行,设置编译后的输出地址(OBJ文件夹)

二、编程方法

2.1梳理模块

  阅读参考手册对应内容,或者阅读《STM32F4开发指南-库函数版》,后者是已经整理好的内容。
梳理的具体过程
 梳理程序流程的过程包含:
  (1) 统计所有用到的模块,以及基本信息,包括:各模块分别挂载在什么下面,配置什么时钟,有什么样的电路结构;
    a)外围挂载在哪?需要激活什么时钟信号?
    要看存储器映射(stm32f4参考手册page52),也可以在stm32f4xx.h文件里面查找如下的宏定义:
    #define RCC_AHB1Periph_GPIOA ((uint32_t)0x00000001)
    #define RCC_AHB1Periph_GPIOB ((uint32_t)0x00000002)
    上述代码说明GPIOA和GPIOB挂载在AHB上

    b)搜索相应的使能时钟;
    c)电路结构、相关寄存器的配置要看参考手册模块的说明。

  (2) 梳理梳理模块的配置流程;
  (3) 搜索对应的库函数。搜索库函数的方法如下:
    a) 看文件头注释,熟悉不同库函数文件的作用,去对应文件内查找;
    b) 通过手册查询模块需要配置的寄存器;通过keil中Edit–>Find功能,或者.chm的库函数说明文件,搜索寄存器名,一般属于一个结构体;最后搜索哪个函数调用了该结构体指针的成员(该成员用于配置相应寄存器),即找到对应函数。

2.2写模块程序

  一般而言,模块配置的顺序为:
  (1) 时钟的配置;
  (2) GPIO的基础配置,以及复用;
  (3) 屏蔽相应模块;
  (4) 模块电路结构的配置;
  (5) 模块工作模式的配置;
  (6) 使能相应模块;
  (7) 中断优先级;
  (8) 中断函数;(这些是配置模块的顺序,并不是程序执行的顺序)

如何了解函数参数的取值范围?
从语法层面:
  定义函数,函数的输入参数是结构体指针,以及宏定义的参数。
  通过宏定义来声明函数的输入参数,实际上是寄存器的配置值;输入参数若是结构体指针,用于对实际寄存器赋值。
  (1) 函数定义中assert_param部分,查看类似“IS_GPIO_ALL_PERIPH”的判断参数有效性的函数。能看到具体的参数范围。
  (2) 查看参数类型的定义,注释部分会说明参数范围

关于确定模块配置时程序的执行顺序
一般来说,电子系统要先满足输入条件才能产生预期输出。如果模块初始化时间较短,电路配置结束前相当于瞬态,几乎不会受到启动流程和初始化的影响而产生错误输出。所以我们配置某个模块,必须保证中间过程短,规避出现不符合设计要求的情形。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值