stm32的C语言相关笔记
2016-09-23 23:33
218 查看
GPIO_InitTypeDef GPIO_InitStructure;typedef struct{ uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO_Mode; GPIOSpeed_TypeDef GPIO_Speed; GPIOOType_TypeDef GPIO_OType; GPIOPuPd_TypeDef GPIO_PuPd; }GPIO_InitTypeDef;32中包含大量的结构体定义,如上为最基本的用typedef定义新的结构体定义名GPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)第一个参数为指向某个结构体的指针,其结构体实质如下包含了GPIO的各个寄存器,实际传入函数的是各寄存器的地址typedef struct{ __IO uint32_t MODER; __IO uint32_t OTYPER; __IO uint32_t OSPEEDR; __IO uint32_t PUPDR; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint16_t BSRRL; __IO uint16_t BSRRH; __IO uint32_t LCKR; __IO uint32_t AFR[2]; } GPIO_TypeDef;#define __IO volatile 英[ˈvɒlətaɪl]volatile的作用是:作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如下程序:
对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化,认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(产生四条代码)#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE)继续追踪下去实质为外部地址的映射,GPIOF_BASE是一个GPIOF的基址,(GPIO_TypeDef *) 将其强制转化为指向结构体的指针,所以GPIOF实际是一个指针
相关文章推荐
- C语言相关笔记
- STM32 中断优先级相关概念与使用笔记
- c语言学习笔记 指针相关
- STM32 中断优先级相关概念与使用笔记
- C语言相关 实习笔记
- stm32usb功能设备以及在linux下的USB相关总线、设备驱动笔记
- C语言的相关简短笔记
- STM32编程相关笔记。
- 《objective-c程序设计》笔记——C语言相关篇
- C语言快速学习笔记001-相关语法
- Hibernate应用笔记 相关问题
- c语言笔记1-关键字
- C语言缺陷与陷阱(笔记)
- C语言学习笔记(一)变量声明的规则
- JSP及Servlet相关基础技术 学习笔记
- c语言数组、数组相关的计算
- Android 相关笔记
- Python笔记(6)----列表、元组、字符串、字典等的相关用法
- mysql相关语句笔记
- 学习iOS笔记第一天的C语言学习记录