一、新建工程:

1.Keil中新建工程,选择开发板型号。

2.工程文件夹建立Start,Library等分类,复制模版工程中的文件到工程文件夹中。

3.在Keil中添加分组,添加文件。

4.工程选项设置:

c/c++中:Include Paths内声明所有包含头文件的分类文件夹(Start,Library等)
                Define内定义USE_STDPERIPH_DRIVER

Debug中:下拉列表选择对应调试器
                  Settings - Flash Download里选择Reset and Run。

5.在main.c文件中编程即可。

#include "stm32f10x.h"                  // Device headerint main
{return 0;
}

二、GPIO:

1.GPIO介绍:

通用输入输出口。可配置为8种模式。引脚电平 0 - 3.3V。

2.系统结构:

在stm32中,挂载在APB2总线上。

名称按照GPIOA,GPIOB等命名。

每个GPIO有16个引脚,编号0-15,GPIOA_0一般称作PA0。

3.几种模式介绍:

(1)上拉/下拉输入:不接输入时默认输入为高/低电平。

(2)模拟输入:GPIO无效,引脚直接接入ADC模块(即输入为模拟信号)

(3)开漏输出:输出时高电平为高阻态,低电平为VSS。

(4)推挽输出:输出时高电平为VDD,低电平为VSS。

 4.函数介绍:

(1)将GPIO使能:

//介绍:APB2总线时钟使能函数
//参数1:需要时钟信号的外设,具体名称可右键函数找到定义查看
//(此次为RCC_APB2Periph_GPIOA,因为要点亮PA0口的LED)
//参数2:ENABLE or DISABLE

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
 (2)GPIO设置参数结构体:

    //介绍:GPIO设置参数结构体
    //结构体成员:Mode设置模式,Pin目标引脚,Speed设置输出速度
    //Mode值:GPIO_Mode_AIN模拟输入,GPIO_Mode_IPD下拉输入,GPIO_Mode_IPU上拉输入,
    //                GPIO_Mode_Out_OD开漏输出,GPIO_Mode_Out_PP推挽输出
    //Pin值:GPIO_Pin_0到GPIO_Pin_15,GPIO_Pin_All(激活多个端口,用按位或
    //Speed值:GPIO_Speed_50MHz(选这个就行)

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
(3)告诉GPIO参数:

//介绍:GPIO初始化函数
//参数1:要设置的GPIO
//参数2:一个结构体,包含GPIO的设置参数

GPIO_Init(GPIOA, &GPIO_InitStructure);
(4)写入目标引脚的值:    

//介绍:设置GPIO引脚的值,set为置1,reset为置0
//参数:GPIOx,目标引脚

GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_ResetBits(GPIOA,GPIO_Pin_13);

 //参数:GPIOx,目标引脚,Bit_RESET或Bit_SET
 //参数:GPIOx,对应值,低位为PA0,高位为PA15

GPIO_WriteBit(GPIOA,GPIO_Pin_13,Bit_SET);
GPIO_Write(GPIOA,0x0001);

三、LED灯闪烁:

1.连线图:

2.组合代码:

#include "stm32f10x.h"                  // Device header
#include "Delay.h"int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);while (1){GPIO_ResetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);GPIO_SetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);}
}

四、蜂鸣器:

注意:A15,B3,B4为调试端口,不要使用。

1.接线图:

 

2.蜂鸣器介绍:

低电平响,高电平不响。代码原理同上。

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

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

相关文章

Rust标量、复合类型与自定义类型、第三方并发结构

以下是 Rust 中标量类型、对象类型(含结构体、复合类型、堆分配类型)以及常用第三方并发数据结构的完整分类、示例和区别对比,帮助你系统掌握它们的本质异同: 🟢 一、标量类型(Scalar Types,存储…

基于STM32温湿度检测—串口显示

基于STM32温湿度检测 (仿真+程序) 功能介绍 具体功能: 1.使用DHT11检测温湿度; 2.单片机处理完控制LCD1602显示温湿度; 3.单片机也通过串口显示检测到的温湿度; 添加图片注释,不…

Windows 10 查询 Nginx 进程教程

1. 打开命令提示符(CMD) 按 Win R,输入 cmd,回车。或者在开始菜单搜索栏输入“cmd”,选择“命令提示符”。 2. 查看是否有正在运行的 Nginx 进程 输入命令: tasklist | findstr nginx这个命令会列出所有…

使用 Kafka 优化物流系统的实践与思考

使用 Kafka 优化物流系统的实践与思考 在现代物流系统中,订单处理、仓储管理、运输调度等环节复杂且实时性要求高。为了满足异步解耦、高吞吐、高可用、事件驱动和数据可靠性等需求,Kafka 作为分布式消息队列和流处理平台,成为了我们的首选。…

Rust中模式匹配let Some(gas_price) = tx.gas_price用法

你问得非常好,let Some(gas_price) tx.gas_price 是 Rust 中的一种模式匹配写法,它用于从 Option 类型中提取值。 ✅ 背景知识:什么是 Option? 在 Rust 中,如果一个值可能存在也可能不存在,就会用 Option…

什么是LLM大语言模型

什么是LLM大语言模型 LLM的全称是,Large Language Model,简称LLM,翻译为大语言模型,其核心是模拟人类语言的复杂规律,实现语义理解、推理分析、文本生成等任务,主要目的是实现能读懂和说出人类语言的模型。…

杂谈-架构时代演进

关于未来 5-10 年软件系统演化方向 1. 云原生 ➝ 超云原生(Post Cloud Native) Kubernetes 平台自治化: K8s Operator 日益强大,逐步具备自愈、自动扩缩容、自动调优能力。 云厂商与企业私有云逐步融合为一体…

如何查看服务器的运行日志?

🟢 一、Linux服务器 Linux日志都在**/var/log**目录下,最常用的有: 📂 常用日志文件 文件内容/var/log/messages大部分系统日志(CentOS常见)/var/log/syslog系统消息日志(Ubuntu/Debian常见&a…

在幸狐RV1106开发板上用gcc14.2本地编译安装postgresql 17.5数据库

在幸狐RV1106开发板上用gcc14.2本地编译安装postgresql 17.5数据库 编译环境: RV1106G3 Linux luckfox-rv1106 5.10.160 #3 Fri Jun 27 14:16:20 AWST 2025 armv7l GNU/Linux BusyBox v1.36.1 gcc version 14.2.0 (GCC) GNU ld (GNU Binutils) 2.44 GNU Make 4.4 n…

Go语言中map[string]interface{} 和 map[string]string的区别

在 Go 语言中,map[string]interface{} 和 map[string]string 是两种不同类型的 map,它们的主要区别在于值的类型以及这种差异带来的使用场景和灵活性的不同。 1. 值的类型 map[string]interface{}:这里的 interface{} 表示 Go 中的空接口类型…

AdGuard Home 安装及使用

AdGuard Home 是 AdGuard 开源的一个私人 DNS 服务端,只需在网关部署,即可实现全局域网的广告拦截与隐私反追踪。在 DNS 解析的过程中,匹配规则库内的 URL 进行拦截,同时在客户端中,还可以通过自定义过滤规则实现网页 DOM 的拦截。 基于 Golang 编写的 AdGuard Home,官方…

绕过 GraphQL 暴力破解保护

题目要求: 本实验的用户登录机制由 GraphQL API 提供支持。API 终端节点有一个速率限制器,如果它在短时间内收到来自同一源的太多请求,则会返回错误。 要解决实验问题,请暴力破解登录机制以 .使用身份验证实验室密码列表作为密码…

C/C++ 使用rapidjson库 操作Json格式文件(创建、插入、解析、修改、删除)

目录 一、前言 1.简介 2.兼容性 3.下载 4.安装 5.官方文档 6.自述 二、封装Json 1. 创建一个 Document 对象 2. "key":"value" 3. { } 4. [ ] 5. [ { }, { } ] 6. [ [ ], [ ] ] 7. { [ ], [ ] } 8. { { }, { } } 9. 将Document转换为字符串…

免安装一键修复网络诊断 + 权限修复!打印机共享错误工具适配 Win7/10/11

各位打印小能手们!你们有没有遇到过共享打印机出问题,搞得自己焦头烂额的情况?比如系统一更新,打印机就连不上,打印任务失败,真的是让人崩溃啊!别慌,今天就给大家全面介绍一款打印机…

电脑分屏快捷键5

按window右箭头: 按window左箭头:

nt!CcFlushCache函数分析之nt!CcFindBcb

nt!CcFindBcb函数分析 第一部分: 1: kd> p nt!CcAcquireByteRangeForWrite0x377: 80a13c49 e866e4ffff call nt!CcFindBcb (80a120b4) 1: kd> t nt!CcFindBcb: 80a120b4 55 push ebp 1: kd> kc # 00 nt!CcFindBcb 01 nt!CcAcqu…

矩阵及矩阵快速幂

一.矩阵与模板 【模板】矩阵求和 时间限制:1秒 内存限制:128M 题目描述 给出两个𝑛行𝑚列的矩阵,求两个矩阵的和 输入描述 第一行输入两个以空格分隔的整数𝑛,𝑚,表示矩…

rk3588获取探维雷达数据

可以在上期部署完 FASTLIO 的工作空间内,继续部署探维雷达的驱动程序。不要问为什么不用 mid360,因为我手上只有探维雷达。 探维雷达的驱动链接:https://github.com/TanwayLab/tanwaylidar_view/blob/main/README.md 下载驱动并编译 因为沿…

HTML简介,初步了解HTML

<html> <body> <h1>我的第一个标题</h1> <p1>我的第一个段落</p1> </body> </html> 什么是HTML HTML是用来描述网页的一种语言。 HTML指的是超文本标记语言。 HTML不是一种编程语言&#xff0c;而是一种标记语言。 标记语…

ARM集群服务器 定义

ARM集群服务器的核心定义可归纳为以下要点&#xff1a; 一、核心定义 ARM集群服务器是将‌多个基于ARM架构的处理器节点‌集成在单一物理机箱内&#xff0c;通过高速网络互联形成的分布式计算系统。每个节点均具备独立的计算单元&#xff08;如CPU、GPU/NPU&#xff09;、内存…