完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-6-11 10:10 编辑
按照芯片的逻辑来说,配置IO的过程应该如下: a) 配置系统时钟 b) 打开与此 GPIO 端口对应的端口时钟。 c) 将端口配置为数字输入输出的 GPIO 功能,而不是端口的其它复用功能 d) 配置 GPIO 端口驱动电流大小和上下拉电阻的模式 e) 设置管脚的输入输出方向。 f) 设置管脚输出是高电平还是低电平。 |
|
相关推荐
4个回答
|
|
本帖最后由 xyz549040622 于 2015-11-7 00:06 编辑
接上,配置IO为普通IO的时候,按照上图中的流程,应该分6步配置了,那我们实际看看官方的例程,是这么配置的 SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//启用GPIOF端口并提供一个时钟 GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);//配置IO为输出模式 GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1);//配置输出高电平 实际中只用了4步,没有配置为数字功能,没有配置GPIO的时钟,没有配置IO的模式。这是为什么呢? 1.关于时钟的问题,TIVA的GPIO时钟可以选择挂在APB总线上或者挂在AHB总线上,复位后是默认挂在APB总线上的。因此这个选择使用默认的了,当选择AHB的时候需要用到这个函数 SysCtlGPIOAHBDisable(SYSCTL_PERIPH_GPIOF);//使能GPIO的AHB时钟,默认是通过APB时钟访问的 寄存器的介绍如下: 2.关于GPIO选择是外设还是普通IO,其实是有这么一个寄存器的,手册中的说明如下 这个寄存器在函数GPIODirModeSet()中被设置了,当设置IO方向的时候,自动就设置这个寄存器了 3.关于IO的方向和模式设置数,是这GPIODirModeSet()和GPIOPadConfigSet(),但是函数中没有直接设置,这是因为函数库提供了GPIOPinTypeGPIOOutput()这么一个函数,当使用这个函数的时候,自动配置了IO的方向和模式,函数源码如下: GPIOPinTypeGPIOOutput(uint32_t ui32Port, uint8_t ui8Pins)[ // // Check the arguments. // ASSERT(_GPIOBaseValid(ui32Port)); // // Set the pad(s) for standard push-pull operation. // GPIOPadConfigSet(ui32Port, ui8Pins, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD); // // Make the pin(s) be outputs. // GPIODirModeSet(ui32Port, ui8Pins, GPIO_DIR_MODE_OUT);] |
|
|
|
所以,TIVA设置普通IO用作输出的时候,一般有下面几句就够了
1.SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//启用GPIOF端口并提供一个时钟 2.GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);//配置IO为输出模式 3.GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1);//配置输出高低电平 |
|
|
|
当设置普通IO为输出模式,并需要设置引脚的电流和输出引脚的配置时候,一般有下面几句就够了
1.SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//启用GPIOF端口并提供一个时钟 2.GPIOPadConfigSet(ui32Port, ui8Pins, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);//设置引脚的电流和引脚的模式 3.GPIODirModeSet(ui32Port, ui8Pins, GPIO_DIR_MODE_OUT);//设置引脚为输出模式 4.GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1);//配置输出高低电平 |
|
|
|
当设置普通IO为输出模式,并需要设置引脚的电流和输出引脚的配置时候,一般有下面几句就够了
1.SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//启用GPIOF端口并提供一个时钟 2.GPIOPadConfigSet(ui32Port, ui8Pins, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);//设置引脚的电流和引脚的模式 3.GPIODirModeSet(ui32Port, ui8Pins, GPIO_DIR_MODE_OUT);//设置引脚为输出模式 4.GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1);//配置输出高低电平 |
|
|
|
只有小组成员才能发言,加入小组>>
332 浏览 1 评论
528 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
772 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
649 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1124 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
51浏览 29评论
84浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
244浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
196浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
54浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 13:21 , Processed in 0.971689 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号