stm32学习笔记:实验一 按键控制灯的亮灭

一:实验目的
        1.深入了解STM32微控制器的寄存器编程方式。
        2.学习如何使用寄存器来配置GPIO口和中断控制相关的寄存器。
        3.理解寄存器编程与使用库函数的区别和优劣,并能根据需要选择合适的编程方式。
        4.实现按键输入的轮询或中断检测,并根据按键状态改变相应的LED输出状态。
        5.掌握寄存器读写、中断配置和外设控制等关键操作,深入理解硬件与软件的交互过程。
二:实验原理
        1.输入部分:使用一个按键作为输入设备。按键通常是一个开关,当按下时闭合,释放时断开。按键的引脚连接到STM32微控制器的GPIO口。
        2.输出部分:使用LED作为输出设备,通过控制LED的电平来实现灯的亮灭。LED的引脚也连接到STM32微控制器的GPIO口。
        3.程序控制:在程序中,需要先对GPIO口进行配置,确定其工作模式和寄存器存储状态。通过读取输入端口的状态,检测按键的按下与释放。根据按键状态改变,控制输出端口的电平,从而控制LED的亮灭。
        4.轮询方式:一个简单的实现方式是采用轮询的方法,在主循环中不断地检查按键的状态,并根据按键状态改变来更新LED的状态。
三:实验内容
1.程序逻辑:
        (1)硬件驱动程序:首先需要实现对LED灯和按键的硬件驱动程序。包括设置相应的引脚为输入或输出模式,并配置GPIO端口的初始状态。本实验配置PA1,PA2为输出口,PB1,PB2为输入口。LED灯使用低电平点亮,按键使用高电平输入。另外对于LED灯编写状态转换函数LED_Turn(),使用GPIO_ReadOutputDataBit()函数读寄存器中储存状态并将其翻转。同样在按键驱动中编写按键输入口状态检测函数Key_GetNum(),仍然使用GPIO_ReadOutputDataBit(),返回不同的KeyNum值。
        (2)系统程序:在主函数之外,可能需要编写一些系统程序,如延时函数。延时函数可用于创建时间间隔,使得LED灯可以以可见的频率闪烁或根据按键的状态变化做出相应反应。
        (3)主函数:在主函数中,执行循环重复执行Key_GetNum(),根据读取 KeyNum
值执行相应LED灯变化程序。

2.电路仿真:

                                                                          图1 原理图

        仿真视频与详细代码见附件
四:实验小结
        调试与验证:在实验过程中,需要使用合适的开发环境和仿真软件进行调试和验证。通过观察LED灯的亮灭情况,或使用示波器等工具检测GPIO口的电平变化,可以确认程序逻辑的正确性。
        结果分析:根据实验结果,可以判断按键控制LED灯的亮灭是否符合预期。如果发现问题,可以通过调试和排除故障的方法逐步修复。
        总结与展望:实验一帮助加深了对STM32微控制器编程和硬件驱动的理解。在今后的实验或项目中,可以根据这些基础知识继续扩展功能,并学习更复杂的嵌入式系统开发。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值