购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5.4 样例工程构建过程

MQX第一个样例工程的硬件涉及LED小灯及串口。SD-FSL-K60-C型板有4个LED(Light_D1~Light_D4),分别对应K60芯片的PTB6~PTB9引脚,高电平时灯点亮;SD-FSL-K60-C型板有6个串口,其中串口4使用了K60芯片的PTE25、PTE24引脚作为收、发引脚,作为本书中默认的调试串口。

1.LED小灯的硬件设置方法

(1)LED小灯硬件引脚配置。本工程使用两个LED小灯,分别使用了B口的6、7两个引脚,并设为GPIO功能,见工程目录下的“..\MQX\bsp\sd_k60_c.h”配置。

以BSP_LED1为例说明,BSP_LED1称为 引脚代号 ,代表K60芯片B端口第6引脚,BSP_LED1的高3位表示端口号,低5位表示引脚号,宏展开后,BSP_LED1的表达式为“(((0x0001 << 0x05) | 0x80000000) | (6))”。其中,0x0001表示K60芯片的B端口号(A端口为0x0000,B端口为0x0001,依次类推),此信息用于lwgpio_init( )函数获取B端口的端口引脚控制寄存器的地址和GPIO功能寄存器基地址;将0x0001左移5位的目的是为了预留低5位保存引脚号,每个端口引脚号用5位表示,最大引脚号为31;0x80000000最高位为1,在“…\mqx\source\io\gpio\kgpio\io_gpio_kgpio.c”用于验证引脚有效性;6表示第6引脚号。宏BSP_LED1_MUX_GPIO展开后的结果为1,为K60芯片引脚配置寄存器的MUX位域准备的常数,为1时表示GPIO功能。

(2)LED小灯引脚数据结构初始化。

LWGPIO_STRUCT结构体称为GPIO引脚数据结构,用于存储GPIO端口引脚相关信息,在工程“..\MQX\io\lwgpio\lwgpio_kgpio.h”文件中定义。LWGPIO_PIN_ID用于存储参数引脚代号(如BSP_LED1),可分离出端口号和引脚号信息,在工程“..\MQX\io\lwgpio\lwgpio.h”文件中定义。小灯初始化函数light_init()利用lwgpio_init( )函数根据小灯构件二次封装的参数引脚代号(如Light_D1),解析出端口号和引脚号信息,并进一步获取端口引脚控制寄存器指针(保存在pcr_reg),获得端口GPIO功能寄存器基址指针(保存在gpio_ptr),并把引脚位掩码和引脚代号分别保存在pinmask 和flags中。GPIO_MemMapPtr为GPIO功能寄存器结构类型。在接下来的函数中也就是对该结构体的成员进行赋值即可达到需要实现的功能。指示灯引脚数据结构在task_main.c中初始化。

2.串口4接收发送数据功能的构建流程

MQX第一个工程样例中利用SD-FSL-K60-C板的串口4作为默认调试串口,PTE25和PTE24作为收、发引脚。

(1)串口4引脚配置和模块时钟的开启。根据开发板引出的串口引脚进行配置,并开启该模块的时钟功能,配置文件位于“..\MQX\bsp\ init_gpio.c”文件中的_bsp_serial_io_init函数,具体代码如下。

(2)串口4波特率设置并配置为默认串口。在“..\MQX\bsp\sd_k60_c.h”文件中修改串口波特率和指定默认串口(可以使用printf()函数从串口输出数据),sd_k60_c.h文件通过MQX源码文件twrk60n512.h根据SD-FSL-K60-C评估板硬件特性修改而生成,关于串口波特率设置的具体代码如下。

(3)串口4的启用。在“..\MQX\config\user_config.h”文件中,设定串口4宏常量的值为1,启用串口4模块的功能。通过配置宏常量,可以对系统进行裁剪,减少不必要的软硬件资源消耗。相应的代码如下。

(4)串口4的安装。在“..\MQX\bsp\init_bsp.c”中安装串口初始化驱动程序,即将串口设备的初始化程序登记到设备管理队列中,安装串口初始化驱动程序功能分为以下两种。

安装轮询功能串口4:

或安装中断功能串口4:

(5)串口4的打开。用户只有在用fopen()中打开串口4,它才能真正被初始化,才能获得正常通信的功能。打开串口的格式如下。

其中,'ittye:'为串口名称,它必须与安装时的名称保持一致;IO_SERIAL_RAW_IO为打开时传入的参数。

以上的配置步骤也能用于其他的串口,只要在相应的位置进行修改即可。

(6)中断接收服务例程构建。在样例工程中串口4中断接收服务例程实现接收串口数据组帧功能,根据中断服务例程的常用命名规则(即“中断构件名称+序号+‘_’+中断功能+‘_ISR’”)将其命名为UART4_RX_ISR,存放于“..\08_Source\isr.c”文件中。

(7)数据发送功能设计。串口4数据发送功能在样例工程中在普通的任务函数task_C()中实现,存放于“..\09_MQX\app\task_C.c”文件中。 q1IVr0wIasoLrYemnfgocaEXrnt4lE1pIW4AEWfDpZnPCiiWGvltPUYLSqBEX8zH

点击中间区域
呼出菜单
上一章
目录
下一章
×