历史上的今天
今天是:2025年03月28日(星期五)
2019年03月28日 | STM32入门开发--LED模块实现跑马灯
2019-03-28 来源:eefocus
1、案例描述
利用STM32F103ZE开发板实现控制LED灯实现跑马灯现象。
正在不断学习嵌入式开发中,博客还会持续更新,敬请关注!
2、开发环境
keil 5.14 + Windows 10 + FlyMcu
参考资料:STM32参考手册
3、实现原理
A.根据硬件接口图:


由接口图发现,开发板上面的两个LED分别接在PB5,和PE5接口处。即我们可以操作GPIO口的寄存器从而操作GPIO端口的控制器。

B、初始化(使能)PB,PE端口,查找手册发现端口PB,PE分别由APB2ENR端口的第三位和第六位控制。我们就将该位置1,其他位不变(|=操作)
APB2ENR:外设时钟使能寄存器


C、配置GPIOx端口


首先将PB5对应的20-23位清0,设置为输入模式,清0(&=操作)
其次配置LED对应的GPIOB和GPIOE端口为推挽输出,即通用推挽输出即00,输出模式速度根据实际情况定义,我这里为50MHz,即11,由于GPIOB_CRL为32位,即20-23位应设置为0011 = 3,其他位不变
PE5端口和PB5端口设置一样。
led.c:
void led_init()
{
// 由结构图可知,LED0接在PB5,LED1接在PE5
// RCC_APB2ENR APB2外设时钟使能寄存器
RCC->APB2ENR |= 1<<3; // 设置第三位,即使能IOPB
RCC->APB2ENR |= 1<<6; // 设置第六位,即使能IOPE
// 端口配置低寄存器 GPIOx_CRL 32位
GPIOB->CRL &= 0XFF0FFFFF; // 设置第23-20位为0 ,即设置在输入模式
GPIOB->CRL |= 0X00300000; // 设置第23-22位为00 设置第21-20位为11
// 推挽输出,最大速度50MHz
// ODR 端口数据输出寄存器
GPIOB->ODR = 1<<5; // 使能ODR5,由于LED灯分别接在PB5,PE5,所以要由ODR5输出
GPIOE->CRL &= 0XFF0FFFFF;
GPIOE->CRL |= 0X00300000;
GPIOE->ODR = 1<<5;
}
下一篇:STM32固件库使用分析
史海拾趣
|
流水线结构 pipeline MIPS 是最简单的体系结构之一,所以使大学喜欢选择 MIPS 体系结构来介绍计算体系结构课程。 ARM has barrel shifter shifter是两面性的,一 ...… 查看全部问答> |
|
本开发板命名为Landbcm 2008 下面开始介绍介绍Landbcm 2008 1.Landbcm 2008系统框图 1.Landbcm 2008学习板提供了 硬件: 1个WAN口, 1个100M以太网口, 4M Flash,16M SDRAM , 主控芯片为BCM47XX , 交换芯片为BCM5XXX 软件: 全套开发 ...… 查看全部问答> |
|
小弟准备测试下网络,下了Iperf源代码。用在ARMV4I wince 6.0上。 但是不知道怎么在VS2005下面编译 目前SDK已经导出 哪位老大有成功的经验,分享下,多谢了!… 查看全部问答> |
|
WINCE6系统 烧入扳子启动后是不是根据组件的多少启动的服务多少来占有内存呢? 我现在用的板子的总的内存是128M,但是我进去后看系统属性->内存 看到能使用的存储内存和程序内存总的是40M左右, 而其中存储内存和程序内存正在使用总的是17M左右 那我的还有88M左右的内存到哪里去了啊?… 查看全部问答> |




