IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 固件库点灯-1时钟及结构体配置 -> 正文阅读

[嵌入式]固件库点灯-1时钟及结构体配置

用固件库点灯的原理和用寄存器点灯原理一样,都是通过配置寄存器,只不过固件库是把寄存器封装在一个结构体里直接调用即可。
1.在固件库的文件夹中的USER里新建LED文件夹,在LED文件夹中新建led.c和led.h文件。
把led.c新添加进USER里(双击USER然后添加)
led.h添加方式:在led.c里包含进去即可 #include “led.h”
然后编译led.c 编译完成后就可以看到led.h在led.c的目录下
在这里插入图片描述

2.定义声明
在led.c中加入库函数#include “stm32f10x.h”,并且写一个函数LED_Init(void)
在这里插入图片描述
既然写了一个函数,那就要在相对应的.h文件里进行声明,这里我们open #include “led.h” ,在这里声明。
声明方法:在#include "led.h"里 void LED_Init(void);(记住声明要加分号)并且led.h里不要忘了包含#include "stm32f10x.h"的库
在这里插入图片描述
3.调用
main.c里调用函数,值得注意的是,main.c文件中不能直接包含#include “led.h” 。需要在魔术棒-c/c++中添加led.h的路径
在这里插入图片描述
在这里插入图片描述
4.在led.c里写函数

  1. 使能APB2的时钟GPIO
    ①怎么找时钟呢
    去外设FWLIB目录中rcc文件
    在这里插入图片描述.c文件是包含一些宏定义的文件的,所以我们打开rcc.c直接找到里面的rcc.h文件,我们目标是找到外设配置的使能函数,我们直接复制过来到led.c这里
    在这里插入图片描述
    第一个参数是外设。我们直接到rcc.h文件里找到APB2的GPIOC接口,复制过来,代替括号里的第一个参数。
    在这里插入图片描述
    第二个参数是功能状态。如果不知道其类型可以到rcc.h里找到这个函数名然后Go To Definition,查看其定义类型。我们这里类型是枚举类型,定义了失能和使能。
    在这里插入图片描述
    在这里插入图片描述我们要使其打开,所以填入ENABLE
    至此,第一步的使能APB2的时钟GPIC配置完成,如图所示
    在这里插入图片描述
  2. 结构体配置
    和第一步类似,我们到goio.c中找到gpio.h,在其中找到结构体的定义。我们看到第一个是引脚,第二个是速度,第三个是模式。
    在这里插入图片描述
    新定义一个结构体 led_init后,想要访问可以直接加个小数点. 会自动弹出,如图
    在这里插入图片描述
    结构体的参数在gpio.h中找,如图,GPIOMode的枚举类型如图所示:
    依次是模拟输入、浮空输入、下拉、上拉、开漏输出、推挽输出
    复用推挽输出(GPIO_Mode_AF_PP):用作串口的输出。
    复用开漏输出(GPIO_Mode_AF_OD):用在IIC。
    所有的开漏输出都需要接上拉电阻。

我们本次用到的是推挽输出,所以我们复制GPIO_Mode_Out_PP到输出模式,用以作为参数
在这里插入图片描述

同样的我们找到Pin的引脚,因为我们用到的是p13,所以我们找到GPIO_Pin_13,复制到led.c,
在这里插入图片描述
第三个是speed,同样也是枚举类型,我们找到后又因为点亮LED灯,其速度没有区别,所以选用10MHz。
在这里插入图片描述
至此,结构体已经定义完,如图
在这里插入图片描述
在定义完结构体之后,需要对结构体函数进行初始化,我们在gpio.h中找到另一个函数GPIO_Init
在这里插入图片描述
将其复制到led.c中,其口号内的第一个参数我们改为GPIOC,第二个因为要用指针类型,因此我们要对其取址。
在这里插入图片描述
保存编译后,我们发现一个错误:结构体定义要在时钟之前,因此将定义挪到时钟之前,再编译后发现0错误0警告。至此,我们时钟及结构体配置部分已完成。
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:00:11  更:2021-10-04 13:00:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:21:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码