当前位置: 首页 > news >正文

STM32-第一节-新建工程,GPIO,点亮LED,蜂鸣器

一、新建工程:

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.dtcms.com/a/262797.html

相关文章:

  • GC3910S:一款高性能双通道直流电机驱动芯片
  • 【Wireshark】高级过滤技巧精讲
  • Chromium 136 编译指南 Ubuntu篇:Python环境与开发工具配置(五)
  • 解决VSCode打开最近项目后终端shell不正常的问题
  • TCP 滑动窗口实现机制
  • 颠覆传统加密:微算法科技创新LSQb算法,提升量子图像处理速度
  • 芯谷科技--150KHz 3A PWM 降压型 DC/DC 转换器D1507
  • 【原创】【5】【视频二创工具发布】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • UE5 一台电脑+双显示器 配置nDisplay裸眼3D效果
  • 【MCP服务】蓝耘元生代 | 蓝耘MCP平台来袭!DeepSeek MCP服务器玩转大模型集成
  • 【启发式算法】Dynamic A*(D*)算法详细介绍(Python)
  • 直播 APP 开发需要多少成本
  • 数据结构入门-图的基本概念与存储结构
  • 如何在Vue3中正确使用ref和reactive?
  • 洛科威岩棉板打造宁静空间,为业主构筑建筑“静世界”
  • 数据结构与算法分析课设:一元多项式求值
  • 【MySQL】JDBC编程
  • DDL-8-小结
  • 前端开发面试题总结-原生小程序部分
  • LLaMA-Factory支持的Alpaca和ShareGPT格式
  • 插入排序的简单介绍
  • 【算法】动态规划 70: 爬楼梯
  • 函数在球内恒为零的证明
  • 杭州燕壹画室:美术艺考领域新崛起的黑马画室
  • Kotlin空安全与异常处理
  • Apache Seata < 2.3.0 raft反序列化漏洞
  • 使用Dirichlet分布进行随机初始化
  • Hily×亚矩云手机:社交元宇宙的“云端心跳加速器”
  • mysql mvcc
  • (4)pytest-fixture