资源描述:
《mqx培训2驱动和板级支持包bs》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MQX™I/O驱动和BSPMQX培训-2GuoJiaApplicationsEngineerUpdatedMay2012培训内容MQX™RTOSI/O驱动MQX如何管理I/O驱动I/O驱动相关的文件目录结构使用MQX提供的I/O驱动创建一个新的驱动如何从定义调试串口MQX中断MQX如何处理中断MQXBSP移植什么情况下需要一个新的BSP与电路板相关的目录BSP移植中的重要文件BSP移植的关键步骤使用脚本文件加速BSP移植演示Demo1:使用MQX自带的驱动Demo2:创建一个新的驱动并且进行测试MQX如何管理I/O驱动软件采用分层设计屏蔽驱动细节易用的APII/
2、O子系统APIPOSIX标准I/O接口WhatdoestheI/OsubsystemAPIlooklike?I/O驱动相关的文件目录结构这里,我们关心右边红色方框内的目录:config有user_config.h文件以及编译BSP,PSP,MFS,RTCS,SHELL,USB的工程文件lib输出文件.liband.hmqxbsp,包含BSP驱动代码(重要目录,我们需要根据新的目标板对此进行修改)bat,包含.bat文件,在编译后把.lib和.h文件拷贝到输出
3、目录其他文件夹,比如mfs,rtcs,shell,usb是对应协议栈的内容MQX驱动MQX提供了片上模块的驱动:TTYI2CSPIGPIOADCRTCFlashSDcardandmuchmore!如何使用MQX的I/O驱动在user_config.h使能对应的模块…#defineBSPCFG_ENABLE_I2C01#defineBSPCFG_ENABLE_II2C00#defineBSPCFG_ENABLE_I2C10#defineBSPCFG_ENABLE_II2C10#defineBSPCFG_ENABLE_SPI00#de
4、fineBSPCFG_ENABLE_ISPI00…重编译MQX库fopenfreadfwriteioctlfclose使用MQX的I/O驱动使用MQX的I/O驱动要点:学习如何使用MQX的I2C驱动来访问板上的MMA8451I2C接口加速度传感器步骤步骤1:使能I2C0驱动在configtwrk60n512user_config.h文件里#defineBSPCFG_ENABLE_I2C01步骤2:重新编译BSP使用MQX的I/O驱动步骤3:在应用中使用API访问MMA8451voidinit_i2c(void){f_i2c=fopen("i2c0:",NUL
5、L);if(f_i2c==NULL){printf("FailedtoopentheI2Cdriver!");_mqx_exit(1L);}ioctl(f_i2c,IO_IOCTL_I2C_SET_MASTER_MODE,NULL);}使用MQX的I/O驱动步骤4:使用API访问MMA8451u8mma8451_read_reg(u8addr){uint_32param;u8mem[1];//setdestaddressforthisaccessparam=I2C_ADDR_MMA8451;ioctl(f_i2c,IO_IOCTL_I2C_SET_DESTI
6、NATION_ADDRESS,¶m);//1.start,senddstaddressfwrite(mem,1,0,f_i2c);ioctl(f_i2c,IO_IOCTL_FLUSH_OUTPUT,¶m);//2.sendregaddressmem[0]=addr;fwrite(mem,1,1,f_i2c);fflush(f_i2c);//3.repeatanddeviceaddressioctl(f_i2c,IO_IOCTL_I2C_REPEATED_START,NULL);param=1;ioctl(f_i2c,IO_IOCTL_I2C_SE
7、T_RX_REQUEST,¶m);//4.readfread(mem,1,1,f_i2c);//5.stopioctl(f_i2c,IO_IOCTL_I2C_STOP,NULL);returnmem[0];}使用MQX的I/O驱动步骤5:读取MMA8451数据voidhw_mma8451_get_data(s16*x,s16*y,s16*z){u8v;v=mma8451_read_reg(0);if(v&1)*x=((s16)((mma8451_read_reg(0x01)<<8)
8、mma8451_read_reg(0x02)))>>4;if(v&2)*
9、y=((s16)((mm