英飞凌DAVE4软件使用教程---以XMC4800为例
1、首先,DAVE是基于Eclipse平台的,因此代码提示肯定是具备的,为了避免代码提示的快捷键冲突(一般会和输入法冲突),需要修改成适合自己的组合键方式,比如这里设置成Ctrl+H作为Content Asisit功能的快捷键

3、 这里新建一个名字叫做Blinky的DAVE CE(Code Engine)工程,选择好器件为XMC48002. 新建的工程目录包括有DAVE(将来会从DAVE APPs中自动产生源码库放到这个文件夹中);Library(存放CMSIS底层库,XMC的标准外设库等);Startup(存放系统的启动源码,包括中断向量表,上电后的时钟初始化,最后跳转到main函数执行);main.c中就是用户会手动去实现的逻辑代码;linker_script.ld是链接脚本文件


5、私网褡爸整个可执行文件的代码段最开始是.reset段,它位于startup_XMC4800.S文件中,开头部分丬涪斟享正是中断向量表,2个字节对齐,最前面的自然是复位向量Reset_Handler2.Reset_Handler函数的定义在中断向量表的下面,它使用thumb2指令集编译,这个函数的主要作用是赋值sp指针,这样后面就可以运行C语言的代码了3. 接着会调用C语言编写的函数SystemInit,它位于startup_XMC4800.c文件中,前面的__WEAK表示,用户可以自己也写一个同名的函数,然后编译器会优先选择你自己写的那个,如果你没有写,那就默认选择这个了,有点重载的意思4.SystemInit函数返回后还是在startup_XMC4800.S中,接下来是数据段.data的初始化,即将数据段的内容从flash中搬到ram中5. 接下来是初始化.bss段,统统清零,这是为了保证C语言中初始化的任何变量默认值为06. 最后将跳转到main函数,从此程序正式完成了loader的功能


6、分析一下,在调用main函数之前,System诔罨租磊Init函数做了哪些事情。1. 我们已经安排好了中断向量在内存中的位置,但是CPU还不知道,因此需要告滴楔孜垭诉CPU,这叫中断向量重定位2. 重定位中断向量之后,使用函数__enable_irq();开启全局中断3. 接下来就是判断是否开启VFP浮点运算协处理器,XMC4800是含有FPU的,在XMC4800.h中已经预先定义好了#define __FPU_PRESENT 1 4. 但是新建的工程默认并没有在代码中使用它,为了以后编程的方便,我们在这一并开启。为了开启浮点运算单元,需要打开宏定义__FPU_USED,从core_cm4.h文件中可以看到,只需要打开__VFP_FP_这个宏就可以打开__FPU_USED,我们需要修改工程配置,加入__VFP_FP_这个宏定义5. 接下来配置Flash的访问周期为4个周期6. 以上是SystemCoreSetup函数的分析,主要是完成了系统内核相关的极其重要的几个参数的配置7. 接下来是SystemCoreClockSetup函数的调用,就完成了一件事情,时钟初始化,过程没有必要去深入分析,最终结果见图中所示


7、下面演示如何在此基础上添加DAVE APPs,并且用两种方式实现闪烁灯。1. 在APP Dependency Tree那选择Add New App2. 在弹出页面的Search filter中输入PWM,选择PWM模块,然后单击Add3. 以同样的方式添加DIGITAL_IO模块和 Interrupt模块4. 完了以后,APP Dependency窗口中应该会显示已经添加的APP与他们之间的联系5. 为了方便记忆,一般需要修改APP的默认名字,在APP模块上右击选择Rename Instance Label





10、这一步需要配置硬件引脚信息。在需要连接硬件引脚的APP上右键选择Mannual Pin Allocator,然后选择具体的Pin Number后点击Save

11、这样就完成了APP的所有配置,点击工具栏的Generate Code按钮,DAVE软件会自动根据APP的配置信息,生成相应的源码库,在Dave下的Generated文件夹下能够看到这些源码

12、下面开始添加自己的代码。1. 在系统初始化后启动PWM模块的工作2. 在main.c文件中增加PWM_Event_Handler的中断处理函数

