MPC5744P(二)工程模板代码解析

MPC5744P(二)工程模板代码解析
哈喽各位小伙伴!上一篇带着大家从零创建了简易工程模板,项目框架已经搭建完毕啦。为了让大家对整体的工程有个大致了解,今天对整个工程模板做一个大致的讲解

(一)src文件夹文件结构及主要内容

系统文件结构如下:

  • 复位与启动配置flashrchw.c
  • 系统时钟与模式初始化mode_entry.c
  • 中断系统初始化MPC57xx_Interrupt_Init.cVector.c
  • 中断服务与向量分发intc_SW_handlers.Sintc_SW_mode_isr_vectors_MPC5744P.c
  • 外设与应用代码main.cperipherals/文件夹下的外设驱动
片上外设文件结构:
就是添加片上外设驱动的.c和.h文件,目前还没开始写,就只有一个adc.c(这个后续也会重新写)
文件如下图:

(二)主函数

先进行初始化,调用了下面这几个函数。
xcptn_xmpl():是中断初始化代码的入口,会配置 IVPR/IVOR、开启中断控制器,是中断系统初始化的总入口。在后续文章中将单独写一个章节对中断进行讲解
peri_clock_gating();开启外设时钟门控,让 ADC 等外设获得时钟信号
system160mhz();系统时钟配置:通过 PLL 配置系统时钟为 160MHz,配置分频器和工作模式。时钟配置详见下一章节。
关于外设时钟门控的配置,并不复杂,就相当于,每多添加一个片上外设的时候,就得给这个外设开一扇门,门打开才能接收到系统传输过来的时钟信号,但是系统的时钟信号是如何传输过来的,需要另行配置。例如:
我现在要使用ADC1外设,那么我应该将MC_ME_PCTL126寄存器与RUN_PC[1]配置到一起,查看手册MC_ME_PCTL126寄存器
将MC_ME_PCTL126的RUN_CFG位配置位001,就选择了RUN_PC[1]的配置
代码如下:
void peri_clock_gating (void) { MC_ME.RUN_PC[0].R = 0x00000000; /* gate off clock for all RUN modes */ MC_ME.RUN_PC[1].R = 0x000000FE; /* enable peri clock for all RUN modes*/ /* Note: RUN_PC0 is default cfg for PCTLs*/ MC_ME.PCTL126.R = 0X00000001; }
当然,新添一个外设模块没这么省事,还需要在时钟配置里配置时钟(时钟选择、时钟频率等),这里只是讲一下时钟门的配置。
初始化完了就执行主循环里的代码了。
下一章节开始讲MPC5744P的时钟配置。