结构体在固件库中的应用
上次介绍了一般结构体的定义以及引用方法,那么接下来将对结构体在官方固件库是如何具体使用的做出简单说明。
结构体指针成员变量引用方法是通过“→”符号来实现,比如要访问student1结构体指针指向的结构体的成员变量name,那么方法是:
stuednt1—>name;
如在STM32官方固件库中对端口使用模式结构体定义如下:
typedef enum{ GPIO_Mode_AIN = 0x0, //模拟输入模式GPIO_Mode_IN_FLOATING = 0x04, //浮空输入模式GPIO_Mode_IPD = 0x28, //下拉输出模式GPIO_Mode_IPU = 0x48, //上拉输出模式GPIO_Mode_Out_OD = 0x14, //开漏输出模式GPIO_Mode_Out_PP = 0x10, //通用推挽输出模式GPIO_Mode_AF_OD = 0x1C, //复用功能开漏输出GPIO_Mode_AF_PP = 0x18 //复用功能推挽输出}GPIOMode_TypeDef; typedef enum //端口传输速率设定 { GPIO_Speed_10MHz = 1, GPIO-Speed-2MHz; GPIO-Speed-50MHz; }GPIOSpeed_TypeDef;
typedef struct
{ uint16-t GPIO-Pin; GPIOSpeed-Typedef GPIO-Speed; GPIOMode-TypeDef GPIO-Mode; }GPIO_InitTypeDef;
以上为官方库中对于端口的一些设定,具体的引用如下举例:
#include "stm32f10" void Delay(u32 count){ u32 i=0; for(;i<count;i++); } int main(void) { GPIO-InitTypeDef GPIO-InitStructure; //定义结构体类型 RCC-APB2PeriphClockCmd(RCC-APB2Peruph-GPIO,ENABLE); //启用外设时钟APB2 GPIO-InitStructure.GPIO-Pin=GPIO-Pin-5; //配置PB.5端口 GPIO-InitStructure.GPIO-Mode=GPIO-Mode-Out-PP; //推挽输出 GPIO-InitStructure.GPIO-Speed-50MHz; //IO口速度为50MHz GPIO-Init(GPIOB,GPIO-Pin-5); //PB.5端口初始化 while(1) { GPIO-ResetBits(GPIOB,GPIO-Pin-5); //PB.5B输出低 Delay(3000000); //延时 GPIO-SetBits(GPIOB,GPIO-Pin-5); //PB.5输出高 Delay(3000000); } }
上述代码为对库函数进行操作使PB5口进行LED灯的闪亮程序,也可以对寄存器进行操作,程序如下:
while(1){GPIOB->BRR=0x0020;delay(3000000); GPIOD->BSRR=0x0020;delay(3000000);} }
如上两种不同的操作,最终达到的效果相同,但是可以看出,无论是何种操作方式,在对STM32进行编程序的时候,都必须要事先对相应端口和时钟进行配置,才可以使用。
转载于:https://www.cnblogs.com/lwangj/p/5068357.html
结构体在固件库中的应用相关推荐
- 串口初始化结构体和固件库讲解
串口初始化结构体和固件库讲解 常用的6个函数,结构体: USART 初始化结构体(USART_InitTypeDef) USART 时钟初始化结构体(USART_ClockInitTypeDef) 串 ...
- C语言小记:结构体及其在内存中的储存形式
C语言小记:结构体及其在内存中的储存形式 1.结构体 结构体的作用:自定义一个包含多种不同数据类型的变量. 语法: struct 结构体名称 {结构体成员1:结构体成员2:结构体成员3:... } 定 ...
- c++ 使用结构体实现有理数库
c++ 使用结构体实现有理数库 问题描述 代码实现 使用方法 问题描述 使用结构体设计实现有理数库.使用整数表示有理数的分子与分母,完成有理数的加减乘除与简化运算. 代码实现 刚学习C++,对知识掌握 ...
- STM32 串口固件库中定义的几个中断标志什么意思?
STM32 串口固件库中定义的几个中断标志位什么意思? #define USART_IT_PE ((uint16_t)0x0028) #define USA ...
- 盘点一下结构体标签在Go中的应用
掌握了Go语言的朋友们应该都知道,在Go的结构体类型声明里面,字段声明后可以跟一个可选的字符串标签. type User struct {Name string `json:"name&qu ...
- 33. 使用fread()/fwrite()往文件中写入结构体,从文件中读出结构体
1 //读写结构体 2 #include <stdio.h> 3 typedef struct student 4 { 5 int num; 6 char name[30]; 7 char ...
- matlab单元数组与结构体的区别,MATLAB中的结构体和单元数组
MATLAB中的结构体和单元数组 一.结构: x.real=10 x.imag=5 增加字段 x.scale=1 使用struct函数 s=struct('field1',values1,'field ...
- 在QT中结构体快速从二进制文件中读取数据
这可能是一个比较基础的问题,但由于刚开始学习c++,但是对我来说,结构体快速从二进制文件读取数据,给我解决了很大的问题,这里我把方法写出来,和有需要的人分享一下,高手看到了请多包涵. 我的二进制文件是 ...
- Linux中的两个经典宏定义:获取结构体成员地址,根据成员地址获得结构体地址;Linux中双向链表的经典实现。...
倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生.这两个宏最初是极客写出的,后来在Linux内核中被推广使用. 1. offse ...
最新文章
- 对Tensor结果使用opencv2中的操作
- word 段显示在页面最下方_Word你说的白是什么白
- [SuperM]Shell编程课堂笔记+PPT总结
- 使用 npm 命令查看某个 npm 开发包明细
- LeetCode 6038. 向表达式添加括号后的最小结果
- Hbase Shell Filter 过滤
- 桃李不言,下自成蹊——《大数据》编辑部祝各位老师节日快乐!
- 前沿 | 美国白宫AI峰会闭幕:特朗普政府5大措施加速布局AI生态
- JS动态赋值同时触发onchange方法
- SSM整理笔记1——SSM网站初步功能设计
- Laravel核心解读--控制器 1
- window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法
- 团队DevOps实践之一
- linux下获取程序所在目录绝对路径
- 浅议磁盘分区——从MBR到GPT
- Unity视频组件Video Player的介绍
- 《国富论》阅读笔记03
- 《遥远的救世主》遵守客观规律(一)——对王庙村能做什么分析
- 恕我直言,在座的各位根本写不好Java!
- 单片机应用系统设计技术——智能温控器