lvxinn2006 发表于 2019-1-9 14:33

【 ST NUCLEO-G071RB测评】_02_LED灯实验

<div class='showpostmsg'> 本帖最后由 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的时钟,在寄存器的位上,只需要将位置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个引脚的功能,比如:位控制了PA0引脚的功能,位控制了PA1引脚的功能……根据实验的需求,我们想用PA5输出高电平控制LD4,所以我们需要设置PA5对应的位置,也就是两位。在说明中,能看到,两个二进制的不同组合,可以决定引脚的功能,00表示输入模式,01表示输出模式,10表示复用功能模式,11是模拟模式。因为我们想用PA5往外输出电平信号控制电路,所以我们需要把PA5设置成输出模式,也就是要把两位设置成01即可。


[*]再看一下GPIOx_ODR:

当GPIO引脚被设置成输出模式时,ODR寄存器相应数据位上的值,会决定引脚输出的电平,1为高电平,0为低电平。根据实验需求,需要让PA5输出高电平,所以需要把GPIOA_ODR寄存器中的位设置为1即可。
【分析总结】把上述所有重点整理成思维导图如下:


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


【实验代码】


[*]打开Keil并新建项目








新建main.c文件


#include "stm32g0xx.h"                  // Device header

int main(void)
{
      //使能GPIOA的时钟
      RCC->IOPENR |= (1<<0);      
      //设置PA5为输出模式
      GPIOA->MODER &= ~(0x3<<10); //清0
      GPIOA->MODER |= (1<<10);      //=01 设置PA5为输出模式
      
      //点亮LD4
      GPIOA->ODR |= (1<<5);      //=1 PA5输出高电平
}



[*]编译程序



[*]设置调试器




[*]烧写程序






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







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






</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

hujj 发表于 2019-1-12 11:08

请问楼主这个《STM32G071芯片用户参考手册》是中文的吗,能分享一下吗?

Russel99 发表于 2019-1-14 20:45

学习了,楼主能分享下STM32手册吗?

lvxinn2006 发表于 2019-1-17 09:15

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

不是中文的,英文

lvxinn2006 发表于 2019-1-17 09:15

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

分享了

hujj 发表于 2019-1-18 09:59

谢谢楼主!英文版的我在官网已经下载过了,我以为您有中文版的呢。

周小北 发表于 2019-3-14 11:42

这个板子是如何下载程序的
页: [1]
查看完整版本: 【 ST NUCLEO-G071RB测评】_02_LED灯实验