使用寄存器点亮led灯

GPIO 简介
        GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚, STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F103VET6 型号的芯片有 GPIOA、 GPIOB、 GPIOC 至 GPIOE 共 5 组 GPIO,芯片一共 100 个引脚,其中 GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。

        最基本的输出功能是由 STM32 控制引脚输出高、低电平,实现开关控制,如把 GPIO 引脚接入到 LED 灯,那就可以控制 LED 灯的亮灭,引脚接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的通断。

        最基本的输入功能是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低区分按键是否被按下。

实验:使用寄存器点亮 LED 灯

启动文件

“ startup_stm32f10x_hd.s” 的文件,它里边使用汇编语言写好了基本程序,当 STM32 芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起 C 语言的运行环境,所以我们把这个文件称为启动文件。

在编程之前我们要先实现寄存器映射,有关寄存器映射的代码都统一写在 stm32f10x.h 文件中

main 文件

在 main 文件中先编写一个 main 函数,里面什么都没有,暂时为空。

错误提示 SystemInit 没有定义。从分析启动文件时我们知道, Reset_Handler 调用了该函数用来初始化 SMT32 系统时钟,为了简单起见,我们在 main 文件里面定义一个 SystemInit 空函数,什么也不做,为的是骗过编译器,把这个错误去掉。

// 函数为空,目的是为了骗过编译器不报错

这时再编译就没有错了,完美解决。

 

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一份简单的使用寄存器点亮LED的实验报告。 实验目的: 了解单片机基本输入输出操作,掌握使用寄存器控制GPIO口输出高低电平,掌握使用按键控制LED亮灭。 实验器材: 1. STC89C52单片机开发板 2. LED 3. 按键开关 4. 杜邦线 实验步骤: 1. 将LED的正极接单片机的P1口,负极接单片机的GND口。 2. 将按键开关的一端接单片机的P3口,另一端接单片机的GND口。 3. 打开Keil C51开发环境,新建一个工程。 4. 在工程中编写以下代码: ```c #include <reg52.h> void delay(unsigned int xms) { unsigned int i, j; for (i = xms; i > 0; i--) for (j = 112; j > 0; j--); } void main() { P1 = 0xfe; // 将P1口电平置高,使LED亮起 while (1) { if (P3 == 0) { // 当按键按下时 delay(10); // 延时去抖动 if (P3 == 0) { // 再次检测按键状态 P1 = ~P1; // 取反P1口电平,使LED亮灭交替 while(!P3); // 等待按键松开 delay(10); // 延时去抖动 } } } } ``` 5. 编译、烧录程序到单片机,并将开发板上电。 6. 按下按键,LED会亮起;再次按下按键,LED会熄灭。按键可以控制LED的亮灭交替。 实验结果: 实验成功,LED可以通过按键控制亮灭交替。 实验总结: 本次实验主要是通过控制单片机GPIO口输出高低电平来控制LED的亮灭。在实验中,我们还学习了使用按键控制LED亮灭的方法,同时还掌握了去抖动的技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值