《开发教程10AI语音人脸识别会议记录仪_人脸打卡机GPIO.docx》由会员分享,可在线阅读,更多相关《开发教程10AI语音人脸识别会议记录仪_人脸打卡机GPIO.docx(13页珍藏版)》请在第一文库网上搜索。
1、CC3200AI实验教程疯壳开发板系列WO1verine-Tearn2018/07/18目录1.1 TiPinMuxTooI工具21.2 代码下载61.3 实验现象8官网地址:http:WWW.fengke.c1ub购买链接:http:ShOP官方QQ群:193836402GPIOGP1O全称Genera1PurposeInputOutput即通用的输入输出,是所有控制器里必备的资源,CC3200的所有数字引脚和部分模拟引脚均可作为通用的输入输出引脚(GP1O)使用,CC3200把GP1O分为三个组,分别是GPIOA0、GP1oA1、GPIOA2、GPI0A3,每一组GP1o有8个引脚,引脚分
2、配如表G0.C所示:表1.0.1CC3200引脚分配表端口组包含的引脚GPIOAOGPIc)JX)GPI0J)7GPIOA1GPIOJ)8GPICU5GPIOA2GPIO_16-GPIO_23GPIOA3GPK)_24GPIO_31根据功能引脚配置的不同,CC3200最多可以有27个GPIO,且所有的GPIO引脚均具有中断功能,触发的方式支持电平触发和边沿触发(上升沿和下降沿),不仅如此,所有的GPIo都可以用于触发DMA、可作为唤醒源,GPIO引脚可编程:可配置为内部IOUA上拉或下拉,驱动能力可调节为:2mA、4mA、6mA、8mA、10mA12mA、14mA,同样也支持开漏模式。对GP1
3、o进行操作时,主要需要了解两大寄存器:Gpiodata寄存器、GPIoDIR寄存器。GP1C)DATA寄存器是数据寄存器。在软件控制模式下,如果对应的引脚通过GP1ODIR寄存器配置为输出模式,这写至IJGP1ODATA寄存器中的值会被传到对应引脚输出。GPIODATA寄存器有256个别名地址,偏移值为OXOOO到0x3ft。一个不同地址别名可以用来直接读/写任何8个信号位的组合。这个特性可以避免读-改-写和软件读的位掩码的时间消耗。在该方案中,为了写GP1oDATA寄存器,掩码中的对应位对应于总线中9.2位必须被置位。否则在进行写操作时,对应位的值不会被改变。同样,进行读操作时,也是对应总线
4、中的9.2,在读取对应位时,也必须置位,否则读取为Oo如果引脚配置为输出模式,则读取GPIODATA寄存器返回最后一次写入的值;如果配置为输入模式则返回对应引脚的值。所有位都可以通过复位清零。如图1.0.1所示为GPIODATA寄存器。FuS4.GPiODATARg3130292827262524232221.20W181711514131211109876543210RgSBMEDDATA一R-OhfVW-0hTab1e5-4.GPIODATARegisterFie1dDescriptionsBHFte1dTypeRtDescription31RESERVEDROhSoftwareshou1
5、dnotr1yon5va1ueofareservedbitToprovideCompabbMywithKJtUreproducts,theva1ueofareservedMshou1dbepreservedacrossaread-mcxMy-wmeoperation7-0DATARzW0GPIODataTNsregisterisV1rtUahymappedto2561ocationsintheaddressspace.TofaMatethereadingandWntIngofdatatotheseregts1ersbyindependentdrivers,tedatareadfromandWn
6、neCtotherogs1ersaremskedbytheegh1address1ines(92.Readsfromthi$registerreturnrtscurrentstateWtstothisrogs1ron1yaffectXsthatarenotmaskedbyADOR92andareconfiguredasoutputs图1.0.1GPIODATA寄存器GPIODIR寄存器是数据方向寄存器。在GPIODIR寄存器中设置一位将对应的引脚配置为输出;清除一位对应的引脚配置为输入。复位时多有位都清零,也就是说所有的GPIO引脚默认是输入。如图1.0.2所示为GPIODIR寄存器。Figu
7、re5-5.GPIODIRRegister313029282726252423222120191817161514131211109876543210RESERVEDDIRR)hRW-0hTab1e5-5.GPIODIRRegisterFie1dDescriptionsBHFie1dypRMtDscription31-8RESERVEDROh7-0DIRR/W0GPIODataDirectionOhCorresponcfengpinisaninput1hCorrespondingpinsanoutput图1.0.2GPIODIR寄存器打开配套的代码例程,打开GP1o文件夹下的IAR工程,如图1
8、.0.3所示为主函数。Intmain()(/Initia1izeBoardconfigurations/BoardInitO;/PoweronthecorrespondingGPIOportBfor9r10r11.SetuptheGPIO1inestoSIode0(GPIO)/PinMuxConfigO/t7HSESGPIO_IF_1edConfigure(1ED1I1ED2I1ED3);获取端口组及弓鲫号GPIJIJ1edOff(MCU_A11_1ED_IHD)/Startthe1EDB1inkyRoutiDe/1EDB1inkyRoutine();/青水灯return0;图1.0.3GPI
9、o的主函数1.1TiPinMuxToo1工具PinMUXConfig()函数可由TIPinMUXTOO1工具生成,打开T1PinMUXTOo1工具,如图1e).4所示,第一步,在Device内找到CC3200,第二步点击“Start”。.TIRnMux-TIaoUdToT1PinMuxDevke:AM33SDefau1tPart:Package:“StartanewPinMuxDesignOpenanExistingDesignQukk1inksT1PinMuxTooKP4geT1PinMuxWiuTIPinMuxTKOrtaiVWeoinsuAwiihb1eUpdatesaWVtd,pnmu
10、Mfi1etocontinueyourdesign.RecentDesignsI23.pnmu图1.0.4T1PinMuxTooI如图1.0.5所示,第一步点击“GPIO”处的添加,默认是选取全部GP10;第二步,把“GPIOSigna1S”前面的勾去掉,去除全选;第三步,选择GPIO_9、GP10_10、GPIO_11(对应开发板上的三颗1ED);驱动1ED需要GPIo输出,第四步,把三个GP1O的“Output”勾选上。图1.0.5T1PinMuxToo1配置步骤最终完成的如图106所示。在最右边的GeneratedFi1eS处点击,把“pin_mux_config.c”和“pinmuxc
11、onfig.h,下载下来添加到工程里即可。图1.0.6配置完成示意图生成好的端口配置函数如图1.0.7所示,该函数主要是对1ED对应的端口开启时钟、设置方向等。voidPinMuxConfig(void)3/Enab1ePeriphera1C1ocks/MAP.PRCMPeripheraIC1kEnab1e(PRCM_GPIOA1,PRCM_RW_MODE_C1K);/ConfigurePIN_64forGPIOOutput/MAP_PinTypeGPIO(PIN_64fPIN_MODE_Orfa1se);MAP_GPIODirModeSet(GPIOA1_BASE,0x2,GPIO_DIR_
12、MODE_OUT);/ConfigurePIN_01forGPIOOutput/MAP_PinTypeGPIO(PIN_01,PIN_MODE_Orfa1se);MAPeGPIODirModeSet(GPIOA1_BASE,0x4,GPIO_DIR_MODE_OUT);/ConffurePIU_02forGPIOOutput/MAP_PinTypeGPIO(PIN_02,PIN_MODE_0,fa1se);MAP二GPIODirMOdeSH(WP1oAI_BASE,0x8,GPI0_DIRJ40DE_0UT);)图1.0.7端口配置函数配置好后,通过GPIeUF.1edConfigureO函数
13、把1ED端口进行处理,即把各个1ED的端口所对应的端口组,以及属于该组中的第几个IO提取出来。如图1.0.8所示。voidGPIO_IF_1edConfigure(unsignedcharucPins)(if(ucPins&1ED1)(GPIO_IF_GetPortNPin(GPIO_1ED1,&g_ui1ED1Port,&g_uc1ED1Pin);)if(ucPins&1ED2)(GPIO_IF_GetPortNPin(GPI0-1ED2r&g_ui1ED2Port,&g_uc1ED2Pin);)if(ucPins&1ED3)(GPIO_IFeGetPortNPin(GP1Oj1ED3,&g
14、_ui1ED3Port,&g_uc1ED3Pin);)图1.0.8端口处理即按顺序以一定完成上面两步后,先关闭所有的1ED,然后在一个死循环内执行“流水”部分,的时间间隔开闭1ED,如图1.0.9为“流水”效果实现代码。void1EDB1inkyRoutine()(/Togg1ethe1inesinitia11ytoturnoffthe1EDs./Theva1uesdrivenareasrequiredbythe1EDsontheIP./GPIO_IF_1edOff(MCU_A11_1ED_IND);whi1e(1)/A1ternate1ytogg1ehi-1oveachoftheGPIOs/
15、tosvitchthecorresponding1EDonoff./MAPJJti1sDe1ay(8000000);GPIO_IF_1edOn(MCU_RED_1ED_GPIO);MAPJJti1sDe1ay(8000000);GPIO_IF_1edOff(MCU_RED_1ED_GPIO);MAP_Uti1sDe1ay(8000000);GPIO_IF_1edOn(MCU_ORANGE_1ED_GPIO);MAPiisDe1ay(86OO0);一GPIO_IF_1edOff(MCU_ORANGE_1ED_GPIO);MAP_Uti1sDe1ay(8000000);GPIO_IF_1edOn(M