当前位置: 首页 > 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.lryc.cn/news/577273.html

相关文章:

  • 七天学会SpringCloud分布式微服务——05——OpenFeign
  • Hadoop WordCount 程序实现与执行指南
  • 大数据(3)-Hive
  • 【时时三省】vectorcast使用教程
  • 烘焙工业4.0:自动化升级与制造执行MES系统的深度赋能
  • 【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
  • 【原创】【5】【视频二创工具发布】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • 国产车哪款有远程代驾功能?远程代驾+自动驾驶
  • 【Wireshark】高级过滤技巧精讲
  • APP 内存测试--Android Profiler实操(入门版)
  • Unity编辑器扩展之扫描项目中所有图片资源,并找出引用这些图片的预制体及其引用路径,最终导出为CSV报告
  • Monorepo+Pnpm+Turborepo
  • Windows 安装 nodejs npm
  • 网络拓扑图绘制全流程:从架构解析到工具实战
  • Jenkins Pipeline 实战指南
  • Java基础(六):数组全面解析
  • python+uniapp基于微信小程序的生鲜订购系统nodejs+java
  • Java 图书管理系统
  • 在拉卡拉分账功能中实现实时更新,需结合异步回调通知和数据库事务来确保数据一致性。以下是具体实现方案
  • 【Linux系统部分】在Linux命令行中写一个简单的shell外壳
  • 网络安全2023—新安全新发展
  • HarmonyOS NEXT仓颉开发语言实战案例:电影App
  • 【AI时代速通QT】第四节:Windows下Qt Creator调试指南
  • Oracle 进阶语法实战:从多维分析到数据清洗的深度应用​(第四课)
  • ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模等科研应用
  • SQL参数化查询:防注入与计划缓存的双重优势
  • 高性能MySQL集群:架构设计与优化实战指南
  • 银河麒麟系统上利用WPS的SDK进行WORD的二次开发
  • 【Oracle学习笔记】7.存储过程(Stored Procedure)
  • jvm的调优命令jstack打印堆栈信息阐述以及调优