STM32F103教程:寄存器操作点亮LED
需积分: 8 192 浏览量
更新于2024-07-09
收藏 440KB PDF 举报
"这篇论坛帖子讨论了如何使用STM32F103微控制器通过寄存器操作点亮LED,并展示了作者奋斗的蜗牛的作业代码,该代码实现了两个LED的闪烁和流水灯效果。"
STM32F103是意法半导体(STMicroelectronics)生产的一款基于ARM Cortex-M3内核的微控制器,广泛应用于嵌入式系统设计。在本讨论中,主要涉及的知识点包括:
1. **STM32微控制器结构**:STM32F103集成了多种功能模块,如GPIO(General Purpose Input/Output)端口,用于与外部设备进行接口交互,如LED。
2. **GPIO配置**:为了点亮LED,需要对GPIO端口进行配置。首先,要开启GPIO端口的时钟,例如GPIOB和GPIOE。这通常通过访问APB2(Advanced Peripheral Bus 2)总线上的RCC_APB2ENR寄存器来实现,如代码中的`*(unsigned int*)0x40021018 |= ((1)<<3)`和`*(unsigned int*)0x40021018 |= ((1)<<6)`分别打开了GPIOB和GPIOE的时钟。
3. **GPIO模式配置**:接着,需要将GPIO引脚配置为推挽输出模式,以驱动LED。这通过修改GPIOx_MODER寄存器完成,如`*(unsigned int*)0x40010C00 |=((1)<<(4*5))`和`*(unsigned int*)0x40011800 |=((1)<<(4*5))`。这里的`(1)<<(4*5)`表示设置第五位为1,对应GPIOB的PB5和GPIOE的PE5。
4. **GPIO数据输出**:LED的亮灭控制通过修改GPIOx_ODR(Output Data Register)寄存器实现。例如,`*(unsigned int*)0x40010C0C &=~(1<<5)`和`*(unsigned int*)0x4001180C &=~(1<<5)`将相应位清零,使得LED熄灭;而`*(unsigned int*)0x40010C0C |=(1<<5)`和`*(unsigned int*)0x4001180C |=(1<<5)`则将位设为1,使LED点亮。
5. **延时函数**:在LED闪烁效果中,延时函数`void Delay(__IO uint32_t nCount)`起到关键作用。这里的延时是通过循环计数实现的,当计数器`nCount`减到零时,延时结束。这种方法简单但不够精确,对于需要高精度延时的应用,可以使用系统定时器(如SysTick定时器)或硬件定时器来实现。
6. **编程风格**:代码中使用了直接地址访问寄存器的方式,这种方式适用于快速原型开发和学习,但在大型项目中,更推荐使用HAL库或LL库等抽象层,以提高代码可读性和可维护性。
7. **社区互动**:论坛的交流体现了学习社群的价值,成员们分享代码和经验,促进了共同进步。
这个帖子提供了使用STM32F103微控制器通过寄存器直接操作点亮LED的基础教程,同时展示了实际应用中的简单控制逻辑。对于初学者来说,这是一个很好的实践案例,可以帮助他们理解和掌握STM32的基本用法。
「已注销」
- 粉丝: 0
- 资源: 1
最新资源
- [影音娱乐]无组件音乐防盗链程序(PHP)_ft_php.rar
- 9Gag Simple Extension-crx插件
- profile-generator
- Dédalo:查找连接到ares p2p网络的所有房间。-开源
- 安卓壁纸v5.15.6 清爽版.txt打包整理.zip
- ruishaweigonglvwuxian,易语言c编译器模块源码,c语言
- terraform-aws网站
- MTZODROW-Style-Guide:Meghan Zodrow的更新样式指南
- asyncnio:Java 的 JDK7+ 异步套接字通道的洁净室实现(建立在 JDK1.4+ NIO SocketChannel apis 之上)
- E-commerce-website-with-realtime-tracking:这是一个具有实时跟踪的电子商务网站的项目构建。 使用此网站,您可以在购物车中添加他/她的物品,然后下订单。 该项目使用soket.io提供订单的实时跟踪
- 仿拍鞋网商城首页触屏版html5手机wap购物网站模板_网站开发模板含源代码(css+html+js+图样).zip
- Klumpinatoren-crx插件
- apitest,c语言链表源码代码,c语言
- Rating-System:一个可以对下属进行评分的简单系统
- MartinsAccount:我的个人资料库
- JS-Discord-Bot:我想学习JS