2024/1/21
一.模块化编程
1.概述
就是像一些功能如:LED灯的点亮,蜂鸣器的启动是需要在代码中经常要用到的。但是如果每次都要在程序中进行复写一遍的话就会十分的麻烦,所以将这些代码进行封装再调用的话代码就会变得十分的方便快捷。把各个模块的代码分别放在.c文件中,在.h文件存放函数外部可调用函数声明,在其他的.c文件想要使用其中的代码时,只需要#include"XXX.h"文件即可
预编译往往以#号开头,在真正编译前对代码进行一些处理。
2.具体实现
1.h文件
#ifndef __XXXX_X //X一般后面为大写的文件名,此段意思为如果没有定义的话则执行下面语句
#define __XXXX_X //定义XXXX
#endif //与ifndef对应
2.c文件
一般写具体的函数实现。
二.中断
1.概述
中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行
2.具体实现
基本流程为
1.配置RCC时钟,启用相应的GPIO和AFIO。
EXTI与NVIC的时钟不需要RCC时钟开启
示例代码:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
2.配置GPIO口
GPIO_InitTypeDef GPIO_InitSturcture;
GPIO_InitSturcture.GPIO_Mode=GPIO_Mode_IPD;
GPIO_InitSturcture.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitSturcture.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitSturcture);
3.配置AFIO
AFIO为一个数据选择器,主要是在前面n个GPIO口中挑选一个到EXTI程序中。其代码中为AFIO这四个字母,但是要知道这是配置AFIO的。在STM32中,AFIO主要完成两个任务:复用功能引脚重映射、中断引脚选择
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);//为AFIO的初始化程序
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource1);//为AFIO的初始化程序
GPIO_EXTILineConfig功能为配置AFIO的数据选择器来配置我们想要的中断引脚。
上面代码为配置GPIOB 0号和1号口
4.配置EXTI
EXTI(