自学《STM32库开发实战指南》的笔记一

自学《STM32库开发实战指南》《STM32不完全手册》的笔记一


自学《STM32库开发实战指南》的笔记

STM32库开发

基础知识
  1. STM32库是对STM32提供的函数接口,API。通过调用函数接口来配置STM32寄存器。在这里插入图片描述
  2. 为解决不同芯片厂商生产的Cortex微控制器软件的兼容性,建立了CMSIS标准。CMSIS层提供的是硬件抽象层,对软件移植有好处。在这里插入图片描述
  3. 用户层是要进行删减(条件编译)和改动的文件,CMSIS层的文件直接包含进工程。在这里插入图片描述
C语言复习

1.位操作
清零:& 设值: |
移位操作:GPIOA->ODR|=1<<5; //PA.5 输出高,不改变其他位
这样我们一目了然,5 告诉我们是第 5 位也就是第 6 个端口,1 告诉我们是设置为 1 了。
~取反操作:SR 寄存器的每一位都代表一个状态,某个时刻我们希望去设置某一位的值为 0,同时其他位都保留为 1,
TIMx->SR = (uint16_t)~TIM_FLAG;#defineTIM_FLAG ((uint16_t)0x0001))
2.define 宏定义
3.ifdef 条件编译

#ifdef 标识符
程序段 1 
#else 
程序段 2 
#endif

4.extern 变量声明
5.typedef 类型别名

struct _GPIO
{
 __IO uint32_t CRL;
 __IO uint32_t CRH;
 …
};

struct _GPIO GPIOA;//定义结构体变量 GPIOA

使用类型别名的代码如下:

typedef struct
{
  _IO unit32_t CRL;
  _IO unit32_t CRH;
  ....
  }GPIO_TypeDef;
  
GPIO_TypeDef  GPIOA;//定义结构体变量 GPIOA

6.结构体
声明结构体类型:
struct 结构体名{
成员列表;
}变量名列表;
引用:结构体变量名字.成员名 若是结构体指针 Usart->BaudRate;

STM32系统架构

在这里插入图片描述

STM32时钟系统

在这里插入图片描述

端口复用

STM32的内置外设的外部引脚是与GPIO复用的。复用端口初始化有几个步骤:
1) GPIO 端口时钟使能。要使用到端口复用,当然要使能端口的时钟了。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
2) 复用的外设时钟使能。比如你要将端口 PA9,PA10 复用为串口,所以要使能串口时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
3) 端口模式配置。 在 IO 复用位内置外设功能引脚的时候,必须设置 GPIO 端口的模式。

端口重映射

一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。具体对应关系查看《STM32 中文参考手册 V10》的 P116 页“8.3 复用功能和调试配置”。
所以重映射我们同样要使能复用功能的时候讲解的 2 个时钟外,还要使能 AFIO 功能时钟,然后要调用重映射函数。详细步骤为:
1)使能 GPIOB 时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
2)使能串口 1 时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
3)使能 AFIO 时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
4)开启重映射:
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);

猜你喜欢

转载自blog.csdn.net/LGYSYGWH/article/details/106447714