《【开发教程6】ARM功能手机-GPIO实验教程.docx》由会员分享,可在线阅读,更多相关《【开发教程6】ARM功能手机-GPIO实验教程.docx(10页珍藏版)》请在第一文库网上搜索。
1、疯壳-开发板系列版权所有,盗版必究GPIO实验教程疯壳开发板系列W olverine-Team2018/10/30目录第一节LED硬件电路2第二节GPIO寄存器42.1 GPI0弓I脚介绍42.2 寄存器介绍42.2.1 P0数据寄存器42.2.2 P0设置数据寄存器42.2.3 P0复位数据寄存器42.2.4 P00模式寄存器52.2.5 P1P3的寄存器配置52.3 寄存器配置讲解5第三节GPIO实验7官网地址:http:www.fengke.club淘宝店: 官方 QQ 群:193836402疯壳开发板系列版权所有,盗版必究官网地址:http:/www.fenRke.club淘宝店: 官
2、方 QQ 群:193836402开机测试教程整板资源介绍开发环境搭建教程快速上手教程 SIM900A通信实验代码及教程 TFT_LCD屏实验代码及教程 TP_Cap电容触摸屏实验代码及教程 W25Q128-Flash实验代码及及教程 OV2640摄像头实验代码及教程 TF_Card接口实验代码及教程 MP3音乐播放实验代码及教程 SRAM实验代码及教程初绳教旌?主处理器(SM324X) GPIO实验代码及教程 终端实验代码及教程 定时器实验代码及教程 串口实验代码及教程 ADC实验代码及教程 12c实验代码及教程 SPI实验代码及教程 DMA实验代码及教程 FSMC实验代码及教程 DCMI实验
3、代码及教程 SDIO实验代码及教程 USB实验代码及教程 STM资源整合 SIMCOM资源整合 Dialog资源整合 OmniVision资源整合 触摸屏实验 打接电话实验 收发短信实验 音乐播放实验 拍照实验 手机与手环时间同步实验 读取手环步伐卡路里 心率湾试实验,一 体温监测实验 NFC通信实验 GPIO实验代码及教程 中断实验代码及教程 定时器实验代码及教程 串口实验代码及教程 ADC实验代码及教程 12c实验代码及教程 SPI实验代码及教程郦簿I datasheet数据手册 摄像头应用文档 BLE蓝牙低功耗应用文档 GSM/GPRS应用文档 MP3相关文档 充电电路相关文档 触摸屏相
4、关文档 TF卡相关文档官网地址:http:/www.fengke.dub购买链接:http:官方 QQ 群:193836402第一节LED硬件电路板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:LED3DA LEDR24IKDA P24疯壳开发板系列版权所有,盗版必究第二节GPIO寄存器2.1 GPIO引脚介绍DA14580的I/O引脚功能可以通过软件配置,分为4组,分别为PortOPort 1Port2 Port3,其中Port2只在QFN40与QFN48封装的芯片中,Port3只在QFN48封装的芯片中。Port。有8个引脚,Portl有6个引
5、脚(其中包括DEBUG弓I脚SWJ2LK与SWDIO),Port2有10个引脚,Port3有8个引脚;每个引脚都可以选择上拉或者下拉25KOhm的电阻;每个引脚上拉电压在VBAT3V(降压模式)与VBAT1V(升压模式)两者可选;4路模数转换的引脚固定分配为PortO中的0:3引脚;当系统进入睡眠模式时,引脚保持最后的状态。2.2 寄存器介绍2.2.1 P0数据寄存器Table 223: PO_DATA_REG (0x50003000)BitModeSymbolDescriptionReset,Reserved0x07:0R/WP0_DATASet P0 output register whe
6、n wntten; Returns the value of P0port when read0x015:8位:保留不使用;7:0位:写该寄存器则设置P0输出寄存器的值,读该寄存器则返回P0 口的值。2.2.2 P0设置数据寄存器Table 224: P0_SET_DATA_REG (0x50003002)BitModeSymbolDescriptionResetReserved0x07:0R/WPOSSETWnting a 1 to P0y sets P0y to 1. Writing 0 is discarded;Reading returns 00x015:8位:保留不使用;7:0位:写
7、H到对应位则对应的引脚置写U无效,读该寄存器则返回0。2.23 P0复位数据寄存器Table 225: P0_RESET_DATA_REG (0x50003004)BitModeSymbolDescriptionReset一Reserved0x07:0R/WP0_RESETWnting a 1 to P0y sets P0(y to 0. Writing 0 is discarded;Reading returns 00x015:8位:保留不使用;7:0位:写T到对应位则对应的引脚置O,写U无效,读该寄存器则返回0。2.2.4 P00模式寄存器Table 226: POO_MODE_REG (
8、0x50003006)BitModeSymbolDescriptionReset.一Reserved0x09:8R/WPUPD00 二 Input, no resistors selected01 二 Input, pull-up selected10 = Input, Pull-down selected11 = Output, no resistors selectedIn ADC mode, these bits are donft care0x27:5Reserved0x04:0R/WPIDFunction of port0 = Port function, PUPD as set a
9、bove1 = UART1_RX2 = UART1_TX3 = UART2_RX4 = UART2_TX5 = SPLDI6 = SPLDO7 = SPLCLK8 = SPLEN9 = I2C_SCL10 = I2C_SDA11 = UART1JRDA_RX12 = UART1RDA_TX13 = UART2JRDA_RX14 = UART2_IRDA_TX15 = ADC (only for P03:0)16 = PWM017 = PWM118 = BLE_DIAG (only for P07:0)19 = UART1_CTSN20 = UARTVRTSN21 = UART2_CTSN22
10、二 UART2.RTSN23 = PWM224 = PWM325 = PWM4Note: when a certain input function (like SPI_DI) is selectedon more than 1 port pin, the port with the lowest index has thehighest pnority and P0 has higher priority than P1.0x015:10位:保留不使用;9:8位:设置引脚的上拉、下拉电阻的模式,00为输入,无电阻;01为输入,上拉电阻;10为输入,下拉电阻;11为输出,无电阻;在ADC模式中
11、该位的设置无效。7:5位:保留不使用;4:0位:设置引脚功能,025分别对应不同的功能,具体看上图,注:当一个输入功能设置为多个引脚时,引脚序号越低优先级越高,即优先选用序号低的引脚设置为该功能。P0的优先级比P1的高。2.2.5 P1P3的寄存器配置参照P0寄存器的配置,需要注意的是P14与P15两个引脚模式的默认值是1,即默认上拉电阻。注:P14与P15为SWD调试接口的时钟与数据接口,在使用川nk调试过程中不要使用这两个引脚。2.3寄存器配置讲解#define P0_DATA_REG#define P0_SET_DATA_REG#define PO_RESET_DATA_REG(* (v
12、olatile uintl6*)0x50003000)(* (volatile uintl6*)0x50003002)(* (volatile uintl6*)0x50003004)官网地址:http:www.fengke.club淘宝店: 方 QQ 群:193836402疯壳-开发板系列版权所有,盗版必究#define POO_MODE_REG#define P01_MODE_REG#define P02_MODE_REG#define P03_MODE_REG#define P04_MODE_REG#define P05_MODE_REG#define P06_MODE_REG#defin
13、e P07 MODE REG(* (volatile uintl6*)0x50003006)(* (volatile uintl6*)0x50003008)(* (volatile uintl6*)0x5000300A)(* (volatile uintl6*)0x5000300C)(* (volatile uintl6*)0x5000300E)(* (volatile uintl6*)0x50003010)(* ( volatile uintl6*)0x50003012)(* (volatile uintl6*)0x50003014)如果对PO整体操作,可以使用PO_DATA_REG寄存器,
14、若使P07:0 = Oxaa,因为以上宏定义是定义的地址,则寄存器操松为P0_DATA_REG=0xaa;如果要读取P0的状态值,则通过读取PO_DATA_REG寄存器,P0_STATUS =PO.DATA.REG,若要读取某一位的状态值,则通过与操作之后返回逻辑值即可。柞为输出时PO_DATA_REG适合对整体P0 操作,而对于某一位进行操作则需要经过一些逻辑操作保持其它位的值不变,不是很方便。而PO_SET_DATA_REG和PO_RESET_DATA_REG这两个寄存器对位操作就十分方便。对某一位亶O或宜1只需另应位标1,具它位赋0即可,因为该寄存器忽视写0操作。若使P00=l,P01 =