3257|6

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【 ST NUCLEO-G071RB测评】_02_LED灯实验 [复制链接]

本帖最后由 lvxinn2006 于 2019-1-11 08:53 编辑

【实验目的】
  • 熟悉如何通过原理图分析电路原理;
  • 熟悉如何使用MCU的用户参考手册;
  • 通过本实验掌握 GPIO 输出功能的使用方法;
  • 初步熟悉单片机寄存器的配置方法;
  • 用最少的代码点亮LED灯。

【实验环境】
  • NUCLEO-G071RB开发板
  • Keil MDK-ARM(Keil uVision 5.25.2.0)
  • Keil.STM32G0xx_DFP.1.0.0.pack

【实验资料】
  • NUCLEO-G071RB开发板原理图
  • STM32G071x8/xB Data Sheet
  • STM32G071芯片用户参考手册

【实验现象】
  • 点亮LD4


【原理图分析】
  • 打开原理图,并找到LD4所在位置;

  • 分析原理,LD4阳极接3.3V正电压,阴极连接到N沟道场效应管T2的漏极,场效应管T2的源极连接到电源地;
  • 点亮LD4的条件:当场效应管导通时,LD4阴极直接连接到地,产生电流,即可点亮LD4;
  • 场效应管栅极通过1M电阻下拉到地,当Vds之间产生电压差时,即可使场效应管导通,即当栅极接高电平(3.3V)时,Vds=-3.3V,即可使场效应管导通,进而点亮LD4。
  • 在原理图中可知,场效应管的栅极连接到了PA5引脚,所以只需要使PA5输出高电平,即可点亮LD4。
  • 接下来,根据芯片参考手册,对PA5引脚进行配置。

【MCU资源分析与引脚配置】
  • 查看《STM32G071芯片用户参考手册》,在“存储器与总线结构”一章中可以看到如下段落:

根据段落的提示,可以知道,如果想使用GPIO功能单元,必须要启用相应的时钟。


在这里可以看到,RCC_IOPENR寄存器,可以控制GPIO功能的时钟,而且能够知道,GPIOA的时钟,在寄存器的[0]位上,只需要将[0]位置1即可
  • 通过查看STM32G071芯片的Data Sheet,可以知道在这一系列的处理器中,有PA、PB、PC、PD、PF共5组GPIO



  • 对于尾号R系列64pin的芯片,有多达60个引脚作为GPIO使用


  • 在上图中可以看出,每一组GPIO都有很多引脚,64pin的芯片可用的GPIO有PA0…PA15,PB0…PB15,PC0…PC15,PD0…PD9,PF0…1总共60个引脚
  • 查询数据手册可以了解到,芯片中每个GPIO分组都对应相同功能的若干寄存器,寄存器具体功能如下表所示:

寄存器分类具体寄存器功能描述
配置寄存器
GPIOx_MODER设置输入/输出模式
GPIOx_OTYPER设置输出类型(推挽、开漏)
GPIOx_OSPEEDR设置输出速度
GPIOx_PUPDR设置内部上下拉电阻
数据寄存器
GPIOx_IDR输入数据
GPIOx_ODR输出数据
置位复位寄存器
GPIOx_BSRR设置、清除数据
锁定寄存器
GPIOx_LCKR锁定引脚数据状态
复用功能选择寄存器
GPIOx_AFRH复用功能高位数据
GPIOx_AFRL复用功能低位数据



每个寄存器都有各自的功能,寄存器具体定义请参考《STM32G071芯片用户参考手册》关于GPIO的章节。
  • 本实验原理比较简单,只用到了MODER和ODR两个寄存器,所以我们只研究这两个寄存器的使用
  • 先看一下GPIOx_MODER:

MODER寄存器主要用来设置一个GPIO组中每个IO引脚的功能,寄存器中每2个数据位决定了1个引脚的功能,比如:[1:0]位控制了PA0引脚的功能,[3:2]位控制了PA1引脚的功能……

根据实验的需求,我们想用PA5输出高电平控制LD4,所以我们需要设置PA5对应的位置,也就是[11:10]两位。

在说明中,能看到,两个二进制的不同组合,可以决定引脚的功能,00表示输入模式,01表示输出模式,10表示复用功能模式,11是模拟模式。

因为我们想用PA5往外输出电平信号控制电路,所以我们需要把PA5设置成输出模式,也就是要把[11:10]两位设置成01即可。



  • 再看一下GPIOx_ODR:

当GPIO引脚被设置成输出模式时,ODR寄存器相应数据位上的值,会决定引脚输出的电平,1为高电平,0为低电平。

根据实验需求,需要让PA5输出高电平,所以需要把GPIOA_ODR寄存器中的[5]位设置为1即可。


【分析总结】把上述所有重点整理成思维导图如下:


接下来要做的,就是把这些细节,用程序代码表示出来。


【实验代码】

  • 打开Keil并新建项目








新建main.c文件


  1. #include "stm32g0xx.h"                  // Device header

  2. int main(void)
  3. {
  4.         //使能GPIOA的时钟
  5.         RCC->IOPENR |= (1<<0);        
  6.         //设置PA5为输出模式
  7.         GPIOA->MODER &= ~(0x3<<10); //[11:10]清0
  8.         GPIOA->MODER |= (1<<10);        //[11:10]=01 设置PA5为输出模式
  9.         
  10.         //点亮LD4
  11.         GPIOA->ODR |= (1<<5);        //[5]=1 PA5输出高电平
  12. }
复制代码


  • 编译程序


  • 设置调试器



  • 烧写程序





  • 按复位按键,运行程序,并查看实验结果。







此内容由EEWORLD论坛网友lvxinn2006原创,如需转载或用于商业用途需征得作者同意并注明出处






图片4.png (49.3 KB, 下载次数: 0)

图片4.png
此帖出自stm32/stm8论坛

最新回复

这个板子是如何下载程序的  详情 回复 发表于 2019-3-14 11:42
点赞 关注(1)
 

回复
举报

932

帖子

3

TA的资源

纯净的硅(中级)

沙发
 
请问楼主这个《STM32G071芯片用户参考手册》是中文的吗,能分享一下吗?
此帖出自stm32/stm8论坛
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
学习了,楼主能分享下STM32手册吗?
此帖出自stm32/stm8论坛
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

4
 
hujj 发表于 2019-1-12 11:08
请问楼主这个《STM32G071芯片用户参考手册》是中文的吗,能分享一下吗?

不是中文的,英文

RM0444_STM32G0x1单片机参考手册.rar

7.39 MB, 下载次数: 13

此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

5
 
Russel99 发表于 2019-1-14 20:45
学习了,楼主能分享下STM32手册吗?

分享了

RM0444_STM32G0x1单片机参考手册.rar

7.39 MB, 下载次数: 1

此帖出自stm32/stm8论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

6
 
谢谢楼主!英文版的我在官网已经下载过了,我以为您有中文版的呢。
此帖出自stm32/stm8论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

7
 
这个板子是如何下载程序的
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表