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…

JS实现瀑布流布局

瀑布流布局是一种常见的网页布局方式&#xff0c;可以实现页面内容的动态排列&#xff0c;使页面看起来更加美观。下面是一个简单的JS实现瀑布流布局的示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8&quo…

抖音直播植物大战僵尸杂交版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…

Channel Session架构简介

"Channel Session架构" 是指在分布式系统、即时通讯、网络编程等领域中&#xff0c;结合了"Channel"&#xff08;通道&#xff09;和"Session"概念的一种设计模式。这种架构强调的是高效、安全地管理客户端与服务器之间的通信会话&#xff0c;尤…

基于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;您的三连就是我持续更…

Linux上OcenBase单机版部署及基本信息查询

OceanBase单机版部署可以通过在线和离线两种方式部署。在线部署可以通过yum源或者apt源部署&#xff0c;直接拉取官方源码即可。实际使用中&#xff0c;大部分环境连不了外网&#xff0c;本文介绍离线方式安装。 下载“OceanBase All in One”离线安装包下载官方地址&#xff1…

深入理解Linux 内核 内存管理(上)

目录 页框管理 页描述符 UMA和NUMA 内存管理区 保留的页框池 分区页框分配器 请求和释放页框 释放页框 高端内存页框的内核映射 伙伴系统算法 连续页框块释放&#xff1a; 1.数据结构 2.分配块 3.释放块 RAM中&#xff0c;剩下的自由部分被称为动态内存&#xff0…

在 Python 异步协程中使用同步队列

在 Python 异步协程中使用同步队列 使用 Python asyncio 进行异步编程时&#xff0c;如果需要在协程间交互数据可以使用异步队列 asyncio.Queue。但 asyncio.Queue 不是线程安全的&#xff0c;如果需要在不同线程间的异步程序之间或者不同线程的异步程序和同步程序间交换数据&a…

c++实战篇(三) ——对socket通讯服务端与客户端的封装

前言 在前面几篇文章中我们介绍过一些有关于网络编程的相关知识,我们介绍了在tcp传输数据的时候发送缓冲区与接收缓冲区&#xff0c;我们介绍了在tcp发送与接收的过程中可能出现的分包与粘包的问题&#xff1a; c理论篇(一) ——浅谈tcp缓存与tcp的分包与粘包 我们介绍了在网络…

MongoDB与Elasticsearch特性及知识点对比

仅作为技术选型和面试参考。对比记忆更佳。 目录 1.数据模型 2.索引机制 3. 查询性能 4.分布式架构 5.数据一致性 6.文档大小限制 7.存储引擎 8.数据压缩 10.实时搜索 11.安全性 12.版本控制 13 事务支持 14.地理空间搜索 15.多租户支持 16 运维复杂度 17,监…

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

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

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

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