STM32学习笔记——仿库函数写法点亮LED

本文详细介绍了STM32中的头文件使用、GPIO控制的结构体定义、模块化编程以及GPIO_Init函数的工作原理,包括GPIO配置、输出模式和速度设置等。

参考海创电子的STM32视频。

1.头文件

头文件作为一种包含功能函数、数据接口声明的载体文件

#include <stm32f10x.h>                #include "stm32f10x.h"
<>:Keil自带的头文件,只要写上能自动去相应的文件夹加载!
“ ”:自定义的头文件,使用的时候一定要指明路径!

 如:

#define PERIPH_BASE    0X4000 0000//总线基地址
#define ABP1PERIPH_BASE    PERIPH_BASE
#define ABP2PERIPH_BASE    (PERIPH_BASE+0x40010000)
#define AHBPERIPH_BASE    (PERIPH_BASE+0x40020000)

#define GPIOC_BASE      (ABP2PERIPH_BASE+0X00010000)
#define GPIOC_CRH    *(unsigned int*)(GPIOC_BASE+0X04)

 2.结构体

 将上面图片用结构体表示:

typedef struct
{
    uint32_t CRL;
    uint32_t CRH;
    uint32_t IDR;
    uint32_t ODR;
    uint32_t BSRR;
    uint32_t BRR;
    uint32_t LCKR;
}GPIO_TypeDef;//总名字,上面中括号里是他的“成员”

但结构体只有名字没有地址,需要和第一章结合起来。

(GPIO_TypeDef*)GPIOC_BASE//GPIOC_BASE表示0x4001 1000,加“*”将其转化为地址

 引用结构体中的成员:

((GPIO_TypeDef*)GPIOC_BASE)->ODR;
//"->"是对结构体指针变量的引用
//由于((GPIO_TypeDef*)GPIOC_BASE)过于长,进行如下定义
#define GPIOC    ((GPIO_TypeDef*)GPIOC_BASE)
GPIOC->ODR;

3.模块化

 模块化编程是将大型程序分解为互相独立的小模块,每个模块负责特定的功能,以便更方便地阅读、维护和复用代码,主要分为源文件(*.c)和头文件(*.h)两部分。

源文件(*.c)

  • 各个函数的具体形式

头文件(*.h)

  • 各个函数的声明
  • define函数的定义
  • 结构体

输出高电

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值