文章目录

  • main.c
  • led.c
  • led.h

STM32 的 IO 口可以由软件配置成如下 8 种模式:

  1. 输入浮空
  2. 输入上拉
  3. 输入下拉
  4. 模拟输入
  5. 开漏输出
  6. 推挽输出
  7. 推挽式复用功能
  8. 开漏复用功能

STM32 的每个 IO 口都有 7 个寄存器来控制。

  1. 配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH;
  2. 2 个 32 位的数据寄存器 IDR 和 ODR;
  3. 1 个 32 位的置位/复位寄存器 BSRR;
  4. 1 个 16 位的复位寄存器 BRR;
  5. 1 个 32 位的锁存寄存器 LCKR。

main.c

#include "delay.h"
#include "sys.h"
#include "led.h"
//ALIENTEK miniSTM32 开发板实验 1
//跑马灯实验
int main(void)
{delay_init();  //延时函数初始化LED_Init();    //初始化与 LED 连接的硬件接口while(1){ LED0=0;LED1=1;delay_ms(300); //延时 300msLED0=1;LED1=0;delay_ms(300); //延时 300ms}
}

led.c

在配置 STM32 外设的时候,任何时候都要先使能该外设的时钟。

#include "led.h"
//初始化 PA8 和 PD2 为输出口.并使能这两个口的时钟
//LED IO 初始化
void LED_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD, ENABLE);   //使能 PA,PD 端口时钟GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8;             //LED0-->PA.8 端口配置GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;         //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO 口速度为 50MHzGPIO_Init(GPIOA, &GPIO_InitStructure);                   //初始化 GPIOA.8GPIO_SetBits(GPIOA,GPIO_Pin_8);                        //PA.8 输出高GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_2;          //LED1-->PD.2 端口配置GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;         //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO 口速度为 50MHzGPIO_Init(GPIOD, &GPIO_InitStructure);                   //初始化 GPIOD.2GPIO_SetBits(GPIOD,GPIO_Pin_2);                        //PD.2 输出高
}


因为 GPIOA 和 GPIOD 的 IO 口的初始化参数都是设置在结构体变量 GPIO_InitStructure 中,因为两个 IO 口的模式和速度都一样,所以我们只用初始化一次,在 GPIOD.2 的初始化的时候就不需要再重复初始化速度和模式了。

led.h

#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED 端口定义
#define LED0 PAout(8) // PA8
#define LED1 PDout(2) // PD2
void LED_Init(void);//初始化
#endif

【STM32】跑马灯实验主要程序代码分析相关推荐

  1. stm32跑马灯实验

    本文记录STM32mini开发板实验 普通跑马灯 回归GPIO基础知识 每组IO口含有下面7个寄存器,7个寄存器一共可以控制一组GPIO的16个IO口. GPIOx_CRL:端口配置低寄存器 GPIO ...

  2. 嵌入式系统stm32 跑马灯实验

    一.实验目的和实验要求 实验要求:短按实验板扩展板上的按键SW18,依次点亮核心板上D2-D4指示灯.长按按键2秒,实现四个灯循环点亮(跑马灯). 二.实验原理 如上图所示,四个 LED 正极通过电阻 ...

  3. 【STM32】按键检测实验主要程序代码分析

    文章目录 main.c key.c key.h main.c #include "led.h" #include "delay.h" #include &quo ...

  4. 【STM32】串口收发主要程序代码分析

    文章目录 数据发送与接收 串口状态 开启串口响应中断 获取相应中断状态 main.c usart.c usart.h 串口设置的一般步骤可以总结为如下几个步骤: 串口时钟使能,GPIO 时钟使能 串口 ...

  5. STM32跑马灯实验的基本步骤(库函数)

    1.硬件设计 本次用到的硬件只有 LED(DS0 和 DS1).其电路在 ALIENTEK 探索者 STM32F4 开发板 上默认是已经连接好了的.DS0 接 PF9,DS1 接 PF10.所以在硬件 ...

  6. STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本

    一.stm32跑马灯实验 a.GPIO general purpose input output 通用输入输出端口,可以做输入也可做输出,GPIO端口可通过程序配置成输入或输出. STM32FXXXI ...

  7. 汇编语言比C51需要效率高,汇编语言与C51语言实现跑马灯实验的比较 -

    当前开发单片机应用系统程序主要应用汇编语言和C51语言,采用汇编语言编写可直接操纵系统的硬件资源,能编写出高效运行的程序代码,程序运行速度快.而采用C51语言编写可改善程序的可读性和可移植性,利于产品 ...

  8. 【stm32】如何把原子哥的代码移植到最小系统板stm32f103c8t6 以跑马灯实验为例

    [stm32]如何把原子哥的代码移植到最小系统板stm32f103c8t6 以跑马灯实验为例 外部硬件: stm32仿真编程器 (仿真编制器自己在网上买,不确定买哪个的可以就买我这个,图片上有牌子,自 ...

  9. 【正点原子MP157连载】第十章 跑马灯实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

最新文章

  1. 第三次作业-结对编程
  2. [转载]图的割点、桥与双连通分支
  3. power designer 连接数据库提示“connection test failed”
  4. 【百度地图API】暑假放假回老家——城市切换功能
  5. NeurIPS 2018 中的贝叶斯研究
  6. 26_多线程_第26天(Thread、线程创建、线程池)
  7. 2021年中国动态内容交付市场趋势报告、技术动态创新及2027年市场预测
  8. 检查java程序假死的脚本
  9. Settings点击Location(位置)后右上角的开关button不会消失
  10. Hyper-V 2012 R2 故障转移群集之建立域控(AD DS)与加入域
  11. android的adb命令总结
  12. 第二章、Linux操作系统及常用命令
  13. 安川机器人报错_安川机器人伺服驱动器常见的报警代码
  14. 浏览器pdf朗读插件
  15. AdventureWorksCycle案例分析
  16. Python基础-Python实现阶乘计算器
  17. 【实例学模式】一针见血装饰器模式
  18. 通过JS代码动态生成HTML表格(Table),Input框,Button按钮.并且通过Input框的值进行查询动态生成数据填写在指定的表格里
  19. javaSE探赜索隐四<数组>
  20. 在C和C++定义最大最小整数值

热门文章

  1. java笔记4-类型转换
  2. 2019-04-12 cookie基础
  3. Java基础 Day07(方法)
  4. JMeter和JMeterPlugin 下载安装
  5. MySQL的简单使用-(一)
  6. 操作系统之CPU调度
  7. JAVA 利用SimpleDateFormat将String转换为格式化的日期
  8. scrapy-1.2.1安装失败之解决方法
  9. Apahce的虚拟用户认证及server-status页
  10. 前端性能优化之DOM(三)