STM32学习笔记(入门篇)

STM32学习笔记(入门篇)

一、寄存器编程

1、GPIO点亮LED

(1) 打开GPIO端口的时钟

​ GPIO挂载在RCC时钟总线上,默认为关闭,需要在程序中配置RCC寄存器的值打开时钟

(2) 配置IO口为推挽输出模式

​ GPIO有输入输出模式可以选择

(3) 控制ODR寄存器

​ LED灯挂载在PB0引脚处

​ 因此要把GPIOB_ODR电平拉低

2、C语言中的置位与清零操作

(1) 置位:|=

​ e.g.

//把第3位置1,其它位不变
*(unsigned int *)0x40021018 |= ((1)<<3);
(2) 清零:&=~

​ e.g.

//把第0位清零,其它位不变
*(unsigned int *)0x40021018 &=~ ((1)<<0);

二、寄存器映射

1、GPIO简介

​ GPIO——general purpose intput output通用输入输出端口

​ STM32的最小系统:电源、晶振 IO、下载 IO、BOOT IO、复位 IO。

​ 其它的IO口统称GPIO,某些GPIO有默认功能,专用器件接到专用总线中。

2、使用寄存器映射点亮LED灯

(1) 首先宏定义总线基地址

#define APB2PERIPH_BASE ((unsigned int) 0x40000000)

(2) 再宏定义外设地址(用基地址+偏移地址的形式)

#define GPIOB_BASE (APBEPERIPH_BASE + 0x0C00)

(3) 对于需要操作的外设,直接强制转换成指针类型,为了便于操作直接在前面加上取值符。

#define GPIO_CRL *(unsigned int*)(GPIOB_BASE + 0x00)
#define GPIO_CRH *(unsigned int*)(GPIOB_BASE + 0x04)
#define GPIO_ODR *(unsigned int*)(GPIOB_BASE + 0x0C)

三、STM32固件库

1、启动文件

startup_stm32f10x_hd.s

汇编语言编写

功能:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数_main进入C的世界。

2、时钟配置文件

system_stm32f10x.c

功能:把外部时钟HSE-8M经过PLL倍频成为72M。

3、外设相关文件

stm32f10x.h

功能:实现内核之外的外设的寄存器映射

stm32f10x_xx.c

(xxx:GPIO、USART、I2C、SPI、FSMC等)

功能:外设的驱动函数库文件

stm32f10x_xx.h

(xxx:GPIO、USART、I2C、SPI、FSMC等)

功能:存放外设的初始化结构体、外设初始化结构体成员的参数列表、外设固件库函数的声明。

4、内核相关文件

CMSIS——Cortex微控制器软件接口标准

core_cm3.h

功能:实现了内核里面外设的寄存器映射

core_cm3.c

功能:实现符合标准的通用库函数

NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)

misc.h:ST公司自己的特殊寄存器映射

misc.c:ST公司自己的特殊库函数

5、头文件的配置文件

stm32f10x_conf.h

功能:头文件的头文件

内容:

//stm32f10x_usart.h

//stm32f10x_i2c.h

//stm32f10x_spi.h

//stm32f10x_adc.h

6、中断函数文件

stm32f10x_it.c

stm32f10x_it.h

功能:

专门存放中断服务函数的C文件

中断服务函数可以随意存放在其他地方,不需要专门写在stm32f10x_it.c中。

四、新建固件库函数工程

1、工程文件夹清单

名称 作用 创建者
Doc 存放说明文件 用户
Libraries 存放库文件 用户
Listing 存放编译时的C/汇编/链接的清单列表 自动生成
Output 存放编译时产生的调试信息、hex文件、预览信息、封装库等 自动生成
Project 存放工程 用户
User 用户编写的驱动文件 用户

2、新建工程

(1) 新建文件夹

请添加图片描述

(2) 在Keil5中新建工程

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

(3) 在Keil5中添加文件

请添加图片描述

请添加图片描述

(4) 添加库文件
把标准库的Libraries复制到工程Libraries中。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zjcrazy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值