几台哥

  • 30 主题
  • 47 帖子
  • 726 积分
  • 身份:版主
  • 优秀版主
  • E币:501

【原创】《stm32,我来了》小白教程之第一章:点亮LED灯

2018-12-26 22:56:03 显示全部楼层
第一章:点亮LED灯

本节课配套笔记和源代码:链接: https://pan.baidu.com/s/1IKvOipEgr9k8QLQSfKqnQg 提取码: dh44
写在前面:
本教程是基于野火指南者这个开发板的,当然,你也可以去淘宝买个单片机最小系统来购买相应的模块,来结合面包板进行单片机的学习。

关于野火及其官方资料:
         在此之前请确定KEIL 5这个软件安装完毕。(资料盘里有所需要的驱动,软件,注册机这些,群里面也有,网上也有很多现成的安装教程)
        通常,市面上的教程都是从搭建一个工程文件开始的,本教程想用一种“超越”的方式,来快速入门,有问题?先放下,我们要在最短的时间里,通过简单的C语言编程,出现一个成果。让我们先从点亮一个LED灯开始!
        我打算的是从浅入深地学习,在最短的时间内和保证大家能够理解的情况下,点亮LED 灯,实现这样的一个实验效果,或许你在编程的过程中有疑问,别着急,在点亮LED灯之后,我将详细讲解每个细节。
注意:此教程是基于野火指南者这个开发板,如果是其他的开发板需要改变配置文件,请参照这篇文章: 链接:https://pan.baidu.com/s/1Kx6mJJYX_1w1c4LkumLBHg 提取码:9gqj
1.png



跟我一步一步来操作,干就完了!

首先,我们到01点亮LED灯\项目模板\Project\RVMDK(uv5)这个文件夹里找到
1、打开项目文件
1.jpg
2、打开main主函数
2.jpg
3.jpg
3、正式打代码咯!
4.jpg
1、定义一个GPIO(通用的输入输出头文件)的结构体变量。
5.jpg
对于结构体关键字是不是有点看不懂?实际上他就是一个重定义过的关键字而已,本质上还是struct,我们可以去看看他的源代码:
6.jpg
7.jpg
英文好的同学可以试着翻译一下,我们可以看到这个结构体一共有三个结构体成员:Pin引脚,Speed速率和模式,我们即将要给他们赋值。

2、打开相关GPIO的时钟
  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
8.jpg
3、配置GPIO并初始化。
模式为推挽输出
  1. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
根据原理图我们知道这个电路板LED挂载在PB5的引脚上。
PB5的含义是GPIOB端口的第5个引脚

  1. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO的速率
  1. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
这个初始化函数
  1. GPIO_Init(GPIOB,&GPIO_InitStructure);

效果是这样的:
9.jpg
上图的GPIO_Pin_5等赋的值不知道哪里来的,还可以像之前的操作一样,直接Go To Defination of “XXX”,找到代码的定义部分。
到这里或许你不懂推挽输出,速率这些词是啥意思,别急,都说别急了哦,请跟着我打完代码,之后我会做出解释。

4、将相关的引脚拉低
  1. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
另一端接3.3V的电源,另一边和GPIO相连的那一端应该拉低才能使LED导通从而点亮。
成功啦!!!!
10.png


最新评论

楼层直达:

238112554_qq

  • 25 主题
  • 117 帖子
  • 593 积分
  • 身份:LV3 中级技术员
  • E币:282
238112554_qq 2018-12-27 10:50:27 显示全部楼层
好帖,支持

几台哥

  • 30 主题
  • 47 帖子
  • 726 积分
  • 身份:版主
  • E币:501

54marlboro

  • 0 主题
  • 2 帖子
  • 326 积分
  • 身份:LV2 初级技术员
  • E币:312
54marlboro 2018-12-27 18:06:49 显示全部楼层
赞一个????
广告

54marlboro

  • 0 主题
  • 2 帖子
  • 326 积分
  • 身份:LV2 初级技术员
  • E币:312

几台哥

  • 30 主题
  • 47 帖子
  • 726 积分
  • 身份:版主
  • E币:501

Brokem_heart

  • 0 主题
  • 1 帖子
  • 203 积分
  • 身份:LV2 初级技术员
  • E币:201
Brokem_heart 2018-12-28 10:28:34 显示全部楼层
不错,赞

805249609_783300633

  • 0 主题
  • 13 帖子
  • 252 积分
  • 身份:LV1 技术小白
  • E币:142
广告

几台哥

  • 30 主题
  • 47 帖子
  • 726 积分
  • 身份:版主
  • E币:501

murmur9964_946239902

  • 0 主题
  • 12 帖子
  • 136 积分
  • 身份:LV1 技术小白
  • E币:48

江畔美少年

  • 6 主题
  • 29 帖子
  • 728 积分
  • 身份:版主
  • E币:730
江畔美少年 2018-12-29 19:49:03 显示全部楼层
这些不用写在另外的.C文件里面吗

几台哥

  • 30 主题
  • 47 帖子
  • 726 积分
  • 身份:版主
  • E币:501
几台哥 2019-1-4 14:45:32 显示全部楼层
江畔美少年 发表于 2018-12-29 19:49
这些不用写在另外的.C文件里面吗

这仅仅是点亮一个LED而已,随着项目的逐渐复杂,我会讲如何去规范化自己代码和思路
广告

weijinke2008

  • 1 主题
  • 56 帖子
  • 376 积分
  • 身份:LV2 初级技术员
  • E币:325
weijinke2008 2019-1-26 13:22:16 显示全部楼层
不错的帖子,希望出更多的教程~
我要评论
12
15
广告
关闭 热点推荐上一条 /2 下一条
快速回复 返回列表