STM32标准库编译流程

导入库函数

在ST官方固件库中找到STM32F10x_StdPeriph_Lib_V3.5.0.zip文件,解压,打开Libraries,接着打开STM32F10x_StdPeriph_Driver文件夹,继续点击src,看到库函数源文件:

将其复制到keil建立的工程的文件中,接着回到STM32F10x_StdPeriph_Driver文件夹,打开inc文件夹,继续复制到工程中;文件为上图。

除了库函数文件,还需添加一些文件,作用是配置库函数头文件包含关系与存放中断函数的:

回到STM32F10x_StdPeriph_Lib_V3.5.0,打开Project,继续打开STM32F10x_StdPeriph_Template,复制以下文件:

将其复制到keil建立的工程的文件中,并使他们生效,生效步骤为:

在keil中打开头文件#include"stm32f10x.h",找到第8296到8298行,复制USE_STDPERIPH_DRIVER到魔术棒的C/C++中的定义界面(因为头文件里的逻辑是必须定义USE_STDPERIPH_DRIVER才能使用conf文件)即可。

编写代码

点灯

对上一节的寄存器点灯方法改装(http://t.csdnimg.cn/S2jgX):

1.配置使能时钟:使用RCC_APB2PeriphClockCmd(a,b);

参数a为外设,参数b为新的状态。输入该函数名到keil上,右键点击(或Ctrl+F)可以直接查看他的源代码与参数(下面的函数均可这样操作):

上一节中,使用的外设是GPIOB和GPIOE,状态为使能,则代码为:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);

2.配置端口模式:使用GPIO_init(a,b);

参数a为选择的GPIO,b为包含参数的结构体(需自己定义);参数的结构体包括GPIO的模式/端口/速度;

则先定义b:

GPIO_InitTypeDef GPIO_InitStructure;//定义名字为GPIO_InitStructure的结构体(名字任意,也可以为b)GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;//GPIO的模式GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;    //引脚/端口GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;    //速度

(结构体的参数值也需通过Ctrl+F点击参数名查找),如模式:

先进入结构体:

点击模式的注释部分中的GPIOMode_TypeDef,Ctrl+F点击查找:

填入需要的参数,我们需要的是GPIO_Mode_Out_PP,再按该方法填入另外两个即可。

定义完结构体就可以使用GPIO_init函数了:

GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_Init(GPIOE,&GPIO_InitStructure);

3.设置端口高低电平:

使用函数GPIO_SetBits(a,b);

参数a为GPIO端口,参数b为GPIO引脚。填入后,输出高电平;

使用函数GPIO_ResetBits(a,b);

参数意义两者相同,填入后,输出低电平;

高电平代码为:

GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);

这样就配置完毕了,改装后,代码为:

#include "stm32f10x.h"     
int main(void)
{	
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_Init(GPIOE,&GPIO_InitStructure);
while(1)
{GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOE,GPIO_Pin_5);
}
}

现象与上一节相同,LED0与1同时亮;

两灯交换闪:
#include "stm32f10x.h"                  // Device header
int main(void)
{	int i=0,j=0;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);GPIO_Init(GPIOE,&GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOE,GPIO_Pin_5);GPIO_SetBits(GPIOB,GPIO_Pin_5);for(i=0;i<2550;i++){for(j=0;j<2400;j++){}}GPIO_ResetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOE,GPIO_Pin_5);for(i=0;i<2550;i++){for(j=0;j<2400;j++){}}} 
}

现象为LED0与1一亮一灭,半秒后变为一灭一亮。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SNR: Signal to Noise Ratio

https://www.xx.com/watch?vmyrZ_R6xIZA Fang, Y., Armin, A., Meredith, P. et al. Accurate characterization of next-generation thin-film photodetectors. Nature Photon 13, 1–4 (2019). https://doi.org/10.1038/s41566-018-0288-z Wang, F., Zhang, T., Xie, R. e…

抖音直播植物大战僵尸杂交版v1.2安装包—可用于抖音直播

植物大战僵尸杂交版是由玩家自制的一款改版游戏。在这个版本中&#xff0c;各种类型的植物都被融合成了全新的形态。比如&#xff0c;向日葵和阳光菇可以产出更多的阳光&#xff0c;坚果墙和火炬树桩合体成为能抗能辅的超级植物等等。这些融合植物种类繁多&#xff0c;各具特色…

从不平凡Image文件夹,自定义读取img和label,构造dataset

问题描述 torchvision.datasets.ImageFolder 假定&#xff1a;子文件名子文件夹的图像的标签 但在KDEF文件夹中&#xff0c;子文件夹下有所有的类&#xff0c;不宜用ImageFolder读取path来得到dataset My 实现&#xff1a; # how to build dataset? from torch.utils import …

AI-数学-高中-47导数与几何意义

原作者视频&#xff1a;【导数】【考点精华】7导数与几何意义考点解析&#xff08;基础&#xff09;_哔哩哔哩_bilibili 该点处切点的斜率 该点处导函数的值 示例1&#xff1a; 导数问题解决最常用方法&#xff1a;参数分离&#xff0c;在左边函数有解的值域范围内。 示例2&…

Netty 网络编程深入学习【一】:ByteBuffer 源码解析

ByteBuffer源码阅读 ByteBuffer是一个用于处理字节数据的缓冲区类。它是Java NIO 包的一部分&#xff0c;提供了一种高效的方式来处理原始字节数据。 ByteBuffer 可以用来读取、写入、修改和操作字节数据&#xff0c;它是一种直接操作字节的方式&#xff0c;比起传统的 InputSt…

基于Spring Boot的在线BLOG网设计与实现

基于Spring Boot的在线BLOG网设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台首页管理界面&#xff0c;用户经过登录前台首页查看通…

【UnityRPG游戏制作】Unity_RPG项目_玩家逻辑相关

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

HSDB使用教程

HSDB&#xff1a;Hostspot Debugger&#xff0c;JVM内置的工具&#xff0c;用于深入分析JVM运行时的内部状态 启动HSDB java -cp D:/tools/jdk-1.8/lib/sa-jdi.jar sun.jvm.hotspot.HSDB 获取进程id jps 连接到指定进程 查找类 通过查询查找对象 输入查询语句 select d from …

100/篇论文修改?提高营收从拒绝客户开始

进入4月份以来新进询盘客户可谓惨淡&#xff0c;为了完成业绩突破我接了一个并不擅长的订单&#xff0c;最终失败赔钱收场&#xff0c;痛定思痛我决定拒掉不可靠的项目&#xff1a; 不熟悉的领域 超出团队承载范围的 低价绝对低价的项目 今天收到客户询盘我非常的开心&#…

【Java EE】多线程(二)Thread 类与常用方法

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

直播素材安卓情侣飞行棋v2.22 仿dofm 支持自定义模式—可用直播素材

一个情侣间增进友谊的小游戏非常好玩&#xff0c;适合男孩女孩之间增进感情&#xff01;快和你暗恋的女孩一块玩吧&#xff0c;极速升温 永久免费&#xff01;解锁激活码内容全部畅玩&#xff01;全网最强超级给力&#xff01;真人说书音频 网盘自动获取 链接&#xff1a;http…

重要综述!全文翻译!宫鹏教授、陈镜明教授、梁顺林教授等《Nature Climate Change》!

2013年&#xff0c;由宫鹏教授、陈镜明教授和梁顺林教授等联合发表了一篇《Nature Climate Change》综述文章&#xff0c;其主题是卫星遥感在全球变化中的作用研究。&#xff08;已被引510次&#xff0c;来源谷歌学术&#xff09;。 卫星遥感方式对于气象问题、大气、陆地和海洋…

【机器学习】集成方法---Boosting之AdaBoost

一、Boosting的介绍 1.1 集成学习的概念 1.1.1集成学习的定义 集成学习是一种通过组合多个学习器来完成学习任务的机器学习方法。它通过将多个单一模型&#xff08;也称为“基学习器”或“弱学习器”&#xff09;的输出结果进行集成&#xff0c;以获得比单一模型更好的泛化性…

【中断】【ARM64】学习总结

optee中的异常向量表解读–中断处理解读 https://mp.weixin.qq.com/s/gBsy4YDYTHGRsy2zcVr6Vg

windows ubuntu sed,awk,grep篇:13.其他 awk 命令

目录 85. 使用 printf 格式化输出 86. awk 内置数值函数 87. 随机数生成器 88. 常用字符串函数 89. GAWK/NAWK 的字符串函数 90. GAWK 字符串函数 91.处理参数(ARGC,ARGV,ARGIND) 92. OFMT 93. GAWK 内置的环境变量 94. pgawk – awk 运行分析器 95. 位操作 96.用户…

Linux搭建sqlilabs靶场

提前准备&#xff1a; 文章中所使用到的Linux系统&#xff1a;Ubantu20.4sqlilabs靶场下载地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 一. 安装phpstudy phpstudy安装命令&#xff1a;wget -O install.sh h…

托普利兹矩阵(T矩阵)及其应用(Matlab demo测试)

托普利兹矩阵&#xff08;T矩阵&#xff09;及其应用&#xff08;Matlab demo测试&#xff09; 1. 概念2. Matlab简单测试2.1 生成测试2.2 基本性质及原理2.3 性质验证 3. 其他应用总结3.1 其他性质3.2 文献阅读看到的 参考资料 1. 概念 托普利兹矩阵&#xff0c;简称为T型矩阵…

H3C MSTP 实验

H3C MSTP 实验 实验拓扑 ​​ 实验需求 所有交换机上创建 Vlan10&#xff0c;Vlan20&#xff0c;Vlan30 和 Vlan40所有交换机之间的端口配置为 Trunk&#xff0c;并放行相关 VLAN按照图示分区域配置 MSTP&#xff0c;并配置主备根网桥 实验步骤 VLAN基础配置&#xff08;…

力扣面试150 简化路径 栈 模拟

Problem: 71. 简化路径 思路 &#x1f469;‍&#x1f3eb; 三叶题解 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public String simplifyPath(String path){ArrayDeque<String> d new ArrayDeque<>();…