STM32开发入门(二):

一、寄存器配置的方法实现走马灯

1、使能时钟

打开STM32的参考手册。

首先是RCC的一个寄存器来使能GPLC的时钟。GPIO都是APB2的外设,所以在这个APB2外设时钟使能寄存器 RCCAPB2ENR 里面配置。

假设我们要点亮的是PC13引脚的LED灯,那么我们就去寄存器里找负责使能PC引脚的位,可以看到 IOPCEN 这一位就是对应使能GPIOC的时钟。

整个寄存器的二进制数据换成16进制,就是四个一分组,也就是00000010。

2、配置引脚模式

找到端口配置高寄存器GPIOx_CRH 或者 端口配置高寄存器GPIOx-CRH

众所周知每种 IO 共有16个引脚,所以前8位在 CRL 寄存器中配置,后8位在 CRH 寄存器中配置。根据需要我们去看 CRH 寄存器中哪一位对应 PC13 引脚。

我们将引脚配置为通用推挽输出模式,速度可以选 50MHz ,对应四位的值就是 0011 ,换算成十六位是 0030 0000

3、给端口输出数据

找到端口输出数据寄存器GPIOx_ODR,中间有一位ODR13,它就是控制13号引脚输出电平的。写1就是输出高电平,写0就是输出低电平。如果写1的话,ODR的值就是 0000 2000

而LED是低电平点亮的,所以该位写1就是灭,写0就是亮。

这个操作方式也有个弊端,就是我们把除了PC13之外的位都配置成了0,这样会影响到其他端口的原有配置。如果要做到只配置PC13而不影响其他位,那还需要 &= (与等于) 和 |=(或等于) 的操作。这个在51单片机的视频里我们也经常遇到。所以这种寄存器的操作方式虽然代码简洁,但是还是不太方便。

二、用库函数的方式点亮LED灯

1、为工程添加库函数

2、配置外设时钟

3、初始化GPIO_init 结构体,通过结构体来配置GPIO参数

相关推荐
炸膛坦客7 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
华清远见IT开放实验室11 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
AI的探索之旅13 小时前
AI辅助原理图评审:电源去耦、BOOT引脚、VCAP——19项逐一核查,遗漏?不存在的
人工智能·vscode·嵌入式硬件
茯苓gao14 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
GeekArch14 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
Freedom_my15 小时前
STM32项目3
stm32·单片机·嵌入式硬件
国科安芯16 小时前
星间光链路:AS32S601型抗辐射MCU在空间激光通信终端控制中的技术实现
服务器·网络·单片机·嵌入式硬件·物联网·安全·信息与通信
小李不困还能学17 小时前
基于 51 单片机的8 路抢答器设计教程
单片机·嵌入式硬件·mongodb·抢答器
CedarQR17 小时前
万字长文:从零在 RK3588 上部署 PaddleSpeech 中文 TTS 全流程(FastSpeech2 + HiFiGAN)
开发语言·c++·嵌入式硬件·ubuntu·json
萌动的小火苗17 小时前
嵌入式开发中的栈与队列:任务调度为什么依赖数据结构
数据结构·c++·单片机·嵌入式硬件