一、蜂鸣器学习
代码实现:
二、BSP工程管理
利用BSP工程管理,使文档显示不杂乱;
将这些文件分为4类,并保存到4个不同的文件夹里。
首先在新的工程文件夹里创建一个之后我们编写的类似led驱动,clk驱动等等外设驱动程序都放在这文件夹里面,创建名为bsp文件夹;
再创建project文件夹,存放 start.s和 main.c 文件,也就是应用文件;
一个imx6ull文件夹,用来保存NXP的相关库cc.h、fsl_common.h、fsl_iomuxch和 MCIMX6Y2.h 这四个文件;
最后再创建一个obj文件夹,用来存放编译生成的.o 文件。
三、 按键练习
代码实现:
四、中断
4.1 GIC控制器(通用中断控制器)
VFIQ/VIRQ中V指虚拟化的;
我们使用IRQ;
作用:
- 作用是中断优先级排序;
- 中断屏蔽的控制;
GIC控制器(v2版本)最多处理8个内核;最多有1020个中断源:
- SGI (软件中断):( 0 - 15 ),由软件产生的中断;
- PPIs(私有中断):(16 - 31),每个核都有自己独有的中断;
- SPI(共享中断):(32-1019),外设中断,如定时器、外部中断、串口中断等。
4.2 异常向量表
异常向量表重映射是指在处理器发生异常时,通过改变异常向量表的物理地址与逻辑地址之间的映射关系
目的:确保系统能够正确响应和处理异常。
4.3 协处理器
协处理器:用于减轻系统微处理器特定处理任务的芯片;
cortex A7 共16个协处理器,CP0~CP15
4.3.1 mcr指令与mrc指令
用mcr与mrc来访问协处理器;
mcr写入协处理器;
mrc读取协处理器;
协处理器编号p0-p15;
读取出来的寄存器内容:
SCTLR寄存器:
CPS指令
获取中断号,并记录
GPIOx_ICR //设置中断寄存器
GPIOx_IMR //设置中断屏蔽寄存器 ,若为1,开中断
GPIOx_ISR //设置中断标记寄存器 ,若为1,则说明该位产生中断,但要手动清零