stm32流水灯设计

1、线路连接(1)RXD连接最小系统板的A9;TXD连接A10;(2)LED灯接3.3v和A0,B0,C15引脚2.编写程序#define GPIOB_BASE 0x40010C00#define GPIOC_BASE 0x40011000#define GPIOA_BASE 0x40010800#define RCC_APB2ENR (*(unsigned int *)0x40021018)#define GPIOB_CRL (*(unsigned int *)0x40.
摘要由CSDN通过智能技术生成

一、实验目的

学习和理解STM32F103系列芯片的地址映射和寄存器映射原理;了解GPIO端口的初始化设置三步骤(时钟配置、输入输出模式设置、最大速率设置)

二、实验内容

以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB、GPIOC、GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒。

三、地址映射与寄存器

1.寄存器

寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。

意法半导体公司为了方便大家使用,就把这些寄存器都起了一目了然的名字,把寄存器与地址映射关系放在他们提供的头文件里。这个文件就是stm32f10x.h。

2.

为什么配置时钟?为了省电,默认的时钟都是关闭的。配置STM32的任何资源前,都必须首先使能时钟。 配置哪个时钟? 时钟的信息在参考手册里边,参考手册十分巨大,不用通读,就像一个字典,需要什么查什么。 参

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计流水的方法有很多种,以下是一种基于STM32F401开发板的设计流程: 1. 确定使用的GPIO引脚,例如PA0~PA7。 2. 初始化GPIO引脚为输出模式。 3. 在主循环中使用for循环或while循环控制LED的亮灭,实现流水效果。 4. 可以通过添加延时函数来控制流水的速度和亮度。 以下是一份简单的代码示例: ```c #include "stm32f4xx.h" void Delay(__IO uint32_t nCount); int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); // 使能GPIOA时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // 设置引脚为输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 设置引脚为推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // 设置引脚输出速度 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // 不启用上下拉电阻 GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA while (1) { for (int i = 0; i < 8; i++) { GPIO_SetBits(GPIOA, GPIO_Pin_0 << i); // 点亮当前LED Delay(500000); // 延时 GPIO_ResetBits(GPIOA, GPIO_Pin_0 << i); // 熄灭当前LED } } } // 简单的延时函数 void Delay(__IO uint32_t nCount) { while (nCount--); } ``` 该例程使用PA0~PA7作为LED的控制引脚,循环控制每一盏的亮灭,通过延时函数来控制流水的速度。你可以根据自己的需要来调整代码中的参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值