【 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> 请问楼主这个《STM32G071芯片用户参考手册》是中文的吗,能分享一下吗? 学习了,楼主能分享下STM32手册吗? hujj 发表于 2019-1-12 11:08
请问楼主这个《STM32G071芯片用户参考手册》是中文的吗,能分享一下吗?
不是中文的,英文 Russel99 发表于 2019-1-14 20:45
学习了,楼主能分享下STM32手册吗?
分享了
谢谢楼主!英文版的我在官网已经下载过了,我以为您有中文版的呢。 这个板子是如何下载程序的
页:
[1]