这是一个私人开发的,仅对NXP KinetisKEA系列芯片提供支持的底层驱动库,简称CSL,作者是中国某大学在校本科学生,为参加第十三届NXP杯智能汽车竞赛而开发
这个手册文件会提供对该驱动库的基本技术支持,包括这个库的一般思路,使用方法以及其他信息
-
该驱动库的支持范围 该驱动库支持KEA系列芯片的绝大部分外设及其功能,它提供比较完整的low-layer APIs,同时预留各种接口供用户自定义外设配置
-
中断
除了启动文件中已注册的中断函数外,该驱动库中提供由默认中断函数调用的用户中断,如下例
//Prototype void CSL_UART_IRQHandler(UART_HandleTypeDef* cuart); //Call void UART0_IRQHandler(void) { CSL_UART_IRQHandler(&cuart0); }
若使用此种方式,则用户只需重定义各种中断回调函数即可,若不使用,请自定义中断函数
-
用户配置
驱动库中提供
KinetisKE_csl_config.h
头文件,用户可根据需要自定义某些配置,具体内容请见文件 -
外设初始化
针对每一个外设均提供控制句柄,用户只需定义句柄然后调用初始化函数即可
-
系统集成模块(SIM)
系统集成模块主要用于引脚选择,内部互联和时钟配置,此部分在CSL库中分散在关联模块中,如果要直接对此部分的寄存器赋值,只能使用位操作,禁止直接赋值,以防某些重要功能失效
-
工程文件
该库目前支持两种IDE,分别为Keil MDK和IAR Workbench for ARM,不过在Github Release中,只提供基于IAR的工程模板
使用IAR时,需要添加以下宏定义到Processer中(必须)
//标准C语言库支持 _DLIB_FILE_DESCRIPTOR //MCU型号指定,该宏定义见于KinetisKE_Common.h CSL_KEAZ128xxx4 //若使用数学库,请添加此定义 ARM_MATH_CM0PLUS //外部时钟频率,大小自定,默认为16MHz,若无此定义则默认8MHz,见system_keaz1284.h CPU_XTAL_CLK_HZ=16000000
若使用MDK,则除第一个宏以外,其他的都要添加
-
裁剪
该驱动库是可裁剪的,如不需要某些部分,则可不添加此驱动到工程中,但是此时需对
KinetisKE_csl_inc.h
做出修改,注释掉相应头文件以免报错上述头文件可以在main文件中包含,但是不建议在用户外设的初始化文件中包含,以免代码体积过大
可以通过对CSL库进行裁剪以缩减代码体积
-
参数检查
若要使用参数检查,请在Processer中添加
USE_FULL_ASSERT
,此时参数检查会启用,如果用户库函数中输入了非法参数则会生成相应警告 -
其他便捷操作
驱动库中提供一些对寄存器的便捷操作,位于
KinetisKE_csl_def.h
中,请有需要的用户自行查阅 -
宏函数
CSL中每个模块均提供宏函数,这些宏函数没有参数类型限制,因此显得比较危险,请合理使用以达到最佳之效果
-
轮询模式
通信接口的控制句柄中会提供指向收发缓冲区的指针,用户不需要按值传递参数即可实现收发,值得注意的是,轮询模式下的收发函数,是真收发函数,发送和接收的操作均在此函数中完成
-
中断模式(IT)
原理类似轮询模式,但是收发函数(后缀为IT)是中断配置函数,用户不必手动开启中断控制位,但需要手动配置中断优先级,在此类函数中,函数完成配置后,即等待中断生成,中断生成后自动收发,若使用驱动库提供的中断方式,则在发生不可预知行为时,会调用相应中断回到完成中断,此后回到主函数中继续循环直至下次中断被配置
-
直接地址访问(DMA)
该系列芯片不支持DMA
Copyright © Yangtze University EE Stark Zhang, All Rights Reserved 12.2017
Copyright © 长江大学 电子信息学院 张璞 保留所有权利 2017.12