STM32f103入门(1) 配置点亮Led灯

  • 1 安装keil5 MDK

    • 双击 MDK524a.EXE
    • 安装成功后管理员模式打开
    • CID复制到破解软件 选择ARM
    • 生成代码复制到New License ID Code
    • Add LIC
    • 破解完毕
      在这里插入图片描述
      在这里插入图片描述
  • 2安装stm32芯片

    • 可找资料自行安装 如下
      在这里插入图片描述
  • 3 创建工程

    • Project->new project 本篇芯片为stm32f103
    • 保存到自定义文件夹下
    • 在根目录下创建以下文件夹用来储存环境文件

配置STM32环境
分别储存在

  • User
  • Library
  • Start
  • System
  1. User(用户文件夹):
    这个文件夹是为了用户自己编写的代码而存在的。在这个文件夹中,用户可以编写自定义的应用程序代码,包括配置外设、处理中断、主程序等。
  1. Library(库文件夹):
    这个文件夹中包含了STM32的标准外设库(Standard Peripheral Library,简称SPL)。SPL是STM32官方提供的库文件,方便用户对各个外设进行配置和操作。库文件包含了许多头文件和源文件,用于提供函数和宏定义,以方便用户使用和控制STM32的各个外设。
  1. Startup(启动文件夹):
    这个文件夹中包含了STM32的启动文件,其中最重要的是启动代码(startup code)。启动代码主要是设置芯片的初始状态和初始化相关的处理,如设置中断向量表、堆栈指针初始化、外设时钟初始化等。启动文件夹也包含一些链接脚本和连接文件,用于指导编译和链接的过程。
  1. 在STM32的头文件中,System文件夹通常包含与系统初始化和底层支持相关的内容。以下是System文件夹中可能包含的内容:
    1.系统启动文件(startup文件):
    System文件夹中可能包含与启动代码相关的文件,用于设置芯片的初始状态和初始化处理。这些文件包括启动代码(startup code)、中断向量表等,并可能包含链接脚本和连接文件。
    2. 系统初始化文件:
    System文件夹中可能包含与系统初始化相关的文件,用于设置芯片的各种时钟配置、中断初始化等。这些文件可能包含有关时钟配置、中断向量表初始化、堆栈初始化等的代码。
    3. 系统配置文件:
    System文件夹中可能包含与系统配置相关的文件,用于设置芯片的默认配置和参数。这些文件可能包含有关系统时钟、外设配置等的宏定义和配置数据。
    4. 系统库文件:
    System文件夹中可能包含与系统底层支持相关的库文件,例如提供底层操作函数和宏定义的库文件。
    请注意,System文件夹的具体内容可能因不同的STM32系列和开发工具链而有所差异。上述列举的内容仅是一般情况下可能存在于System文件夹中的内容。具体的内容可能需要根据实际情况和目标芯片的文档进行确认。
  • 4将路径信息以及组配置到keil
  • 在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    然后就可以在main文件中写代码了
    点亮PA0的led灯

#include "stm32f10x.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);GPIO_ResetBits(GPIOA,GPIO_Pin_0);while(1){}}1. `RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);`这行代码是使用`RCC_APB2PeriphClockCmd`函数打开GPIOA外设的时钟。`RCC_APB2PeriphClockCmd`函数用于使能特定外设的时钟,这里使能的是GPIOA外设的时钟。2. `GPIO_InitTypeDef GPIO_InitStructure;`定义了一个名为`GPIO_InitStructure`的结构体变量`GPIO_InitTypeDef`,用于存储GPIO口的初始化参数。3. `GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;`设置`GPIO_InitStructure`结构体变量的成员`GPIO_Mode`为输出推挽模式。这意味着GPIOA的第0引脚是被配置为输出模式,可以提供高或低电平输出。4. `GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;`设置`GPIO_InitStructure`结构体变量的成员`GPIO_Pin`为GPIO_Pin_0。这表示要配置的GPIO口引脚为GPIOA的第0引脚。5. `GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;`设置`GPIO_InitStructure`结构体变量的成员`GPIO_Speed`为50MHz。这表示GPIOA的输出速率被设置为50MHz,即输出电平的切换速度为50MHz。6. `GPIO_Init(GPIOA, &GPIO_InitStructure);`使用`GPIO_Init`函数将上述配置应用到GPIOA外设。该函数将GPIOA的相关参数和配置信息作为参数传递进去,以完成GPIO口的初始化。7. `GPIO_ResetBits(GPIOA, GPIO_Pin_0);`最后一行代码将GPIOA的第0引脚输出拉低,即设置为逻辑低电平。这样可以确保初始化后,GPIOA的第0引脚输出为低电平状态。

在这里插入图片描述

端口赋值常用函数void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
对指定端口置0void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
对指定端口置1void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
对指定端口置自定义值(BitsVal = Bit_RESET/Bit_SET)void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
//Led闪烁程序
#include "stm32f10x.h"
#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);GPIO_ResetBits(GPIOA,GPIO_Pin_0);while(1){GPIO_ResetBits(GPIOA,GPIO_Pin_0);Delay_ms(500);GPIO_SetBits(GPIOA,GPIO_Pin_0);Delay_ms(500);}}
//开漏输出 
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_OD; //开漏输出 高电平相当于高阻态没有驱动能力
//低电平有驱动能力//推免输出
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; //推挽输出均有驱动能力

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

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

相关文章

【SkyWalking】分布式服务追踪与调用链系统

1、基本介绍 SkyWalking是一个开源的观测平台,官网:Apache SkyWalking; 可监控:分布式追踪调用链 、jvm内存变化、监控报警、查看服务器基本配置信息。 2、SkyWalking架构原理 在整个skywalking的系统中,有三个角色&am…

WPS右键新建没有docx pptx xlsx 修复

解决wps右键没有新建文档的问题 右键没有新建PPT和Excel 1 wps自带的修复直接修复没有用 以上不管咋修复都没用 2 先编辑注册表 找到 HKEY_CLASSES_ROOT CTRLF搜文件扩展名 pptx docx xlsx 新建字符串 三种扩展名都一样操作 注册表编辑之后再次使用wps修复 注册组件&am…

K8S如何部署ZooKeeper以及如何进行ZooKeeper的平滑替换

前言 在之前的章节中,我们已经成功地将Dubbo项目迁移到了云环境。在这个过程中,我们选择了单机ZooKeeper作为注册中心。接下来,我们将探讨如何将单机ZooKeeper部署到云端,以及在上云过程中可能遇到的问题及解决方案。 ZooKeeper…

picGo+gitee+typora设置图床

picGogiteetypora设置图床 picGogitee设置图床下载picGo软件安装picGo软件gitee操作在gitee中创建仓库在gitee中配置私人令牌 配置picGo在插件设置中搜索gitee插件并进行下载 TyporapicGo设置Typora 下载Typora进行图像设置 picGogitee设置图床 当我了解picGogitee可以设置图床…

Vue3 [Day11]

Vue3的优势 create-vue搭建Vue3项目 node -v npm init vuelatest npm installVue3项目目录和关键文件 Vetur插件是Vue2的 Volarr插件是Vue3的 main.js import ./assets/main.css// new Vue() 创建一个应用实例 > createApp() // createRouter() createStore() // 将创建实…

TensorFlow中slim包的具体用法

TensorFlow中slim包的具体用法 1、训练脚本文件(该文件包含数据下载打包、模型训练,模型评估流程)3、模型训练1、数据集相关模块:2、设置网络模型模块3、数据预处理模块4、定义损失loss5、定义优化器模块 本次使用的TensorFlow版本…

【C++】—— C++11之可变参数模板

前言: 在C语言中,我们谈论了有关可变参数的相关知识。在C11中引入了一个新特性---即可变参数模板。本期,我们将要介绍的就是有关可变参数模板的相关知识!!! 目录 序言 (一)可变参…

0基础学习VR全景平台篇 第90篇:智慧眼-数据统计

【数据统计】是按不同条件去统计整个智慧眼项目中的热点,共包含四大块,分别是数据统计、分类热点、待审核、回收站,下面我们来逐一进行介绍。 1、数据统计 ① 可以按所属分类、场景分组、所属场景、热点类型以及输入热点名去筛选对应的热点&…

文生图模型之Stable Diffusion

原始文章地址 autoencoder CLIP text encoder tokenizer最大长度为77(CLIP训练时所采用的设置),当输入text的tokens数量超过77后,将进行截断,如果不足则进行paddings,这样将保证无论输入任何长度的文本&…

Kaniko在containerd中无特权快速构建并推送容器镜像

目录 一、kaniko是什么 二、kaniko工作原理 三、kanijo工作在Containerd上 基于serverless的考虑,我们选择了kaniko作为镜像打包工具,它是google提供了一种不需要特权就可以构建的docker镜像构建工具。 一、kaniko是什么 kaniko 是一种在容器或 Kube…

【Linux】进程状态|僵尸进程|孤儿进程

前言 本文继续深入讲解进程内容——进程状态。 一个进程包含有多种状态,有运行状态,阻塞状态,挂起状态,僵尸状态,死亡状态等等,其中,阻塞状态还包含深度睡眠和浅度睡眠状态。 个人主页&#xff…

Diffusion Models for Image Restoration and Enhancement – A Comprehensive Survey

图像恢复与增强的扩散模型综述 论文链接:https://arxiv.org/abs/2308.09388 项目地址:https://github.com/lixinustc/Awesome-diffusion-model-for-image-processing/ Abstract 图像恢复(IR)一直是低水平视觉领域不可或缺的一项具有挑战性的任务&…

算法竞赛入门【码蹄集新手村600题】(MT1220-1240)C语言

算法竞赛入门【码蹄集新手村600题】(MT1220-1240)C语言 目录MT1221 分数的总和MT1222 等差数列MT1223 N是什么MT1224 棋盘MT1225 复杂分数MT1226 解不等式MT1227 宝宝爬楼梯MT1228 宝宝抢糖果MT1229 搬家公司MT1230 圆周率MT1231圆周率IIMT1232 数字和MT1233 数字之…

适配器模式实现stack和queue

适配器模式实现stack和queue 什么是适配器模式?STL标准库中stack和queue的底层结构stack的模拟实现queue的模拟实现 什么是适配器模式? 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff…

时间和日期--Python

1. 时间:time模块 总结:2. datetime模块 相比与time模块,datetime模块的接口更直观、更容易调用 2.1 datetime模块定义的类 (1)datetime.date:表示日期的类。常用的属性有:year、month、day; &#xff…

k8s节点pod驱逐、污点标记

一、设置污点,禁止pod被调度到节点上 kubectl cordon k8s-node-145 设置完成后,可以看到该节点附带了 SchedulingDisabled 的标记 二、驱逐节点上运行的pod到其他节点 kubectl drain --ignore-daemonsets --delete-emptydir-data k8s-node-145 显示被驱逐…

抓包相关,抓包学习

检查网络流量 - 提琴手经典 (telerik.com) Headers Reference - Fiddler Classic (telerik.com) 以上是fiddler官方文档 F12要勾选保留日志 不勾选的话跳转到新页面之前页面的日志不会在下方显示 会保留所有抓到的包 如果重定向到别的页面 F12抓包可能看不到响应信息,但是…

【PHP】PHP开发教程-PHP开发环境安装

1、PHP简单介绍 PHP(全称:Hypertext Preprocessor)是一种广泛使用的开放源代码脚本语言,特别适用于Web开发。它嵌入在HTML中,通过在HTML文档中添加PHP标记和脚本,可以生成动态的、个性化的Web页面。 PHP最…

Vant 4.6.4发布,增加了一些新功能,并修复了一些bug

导读Vant 4.6.4发布,增加了一些新功能,并修复了一些bug等。 新功能 feat(area-data): 更新芜湖的县区数据,由 nivin-studio 在 #12122 中贡献feat(Locale): 添加塞尔维亚语到国际化,由 RogerZXY 在 #12145 中贡献feat(ImagePreview): 添加 c…