[技术问答] NANO112SC2AN IO 缺省值怎设置?

[复制链接]
1300|13
 楼主| hendxcn 发表于 2017-1-10 18:16 | 显示全部楼层 |阅读模式
AN, IO, gp, pc, pi
本帖最后由 hendxcn 于 2017-1-11 09:17 编辑

请问该如何设定 IO 的缺省值?
下面这段代码在 NANO112VC2AN 时,设定输入上拉。可以让 IO 口保持在高电平。
但在 NANO112SC2AN 时就做不到。

外围硬件相同
SYS_UnlockReg();

SYS->PC_L_MFP &= ~(SYS_PC_L_MFP_PC0_MFP_GPC0|SYS_PC_L_MFP_PC1_MFP_GPC1);
SYS->PB_L_MFP &= ~SYS_PB_L_MFP_PB6_MFP_GPB6;
SYS->PB_H_MFP &= ~(SYS_PB_H_MFP_PB10_MFP_GPB10|SYS_PB_H_MFP_PB11_MFP_GPB11|\
                                       SYS_PB_H_MFP_PB12_MFP_GPB12|SYS_PB_H_MFP_PB13_MFP_GPB13|\
                                       SYS_PB_H_MFP_PB14_MFP_GPB14|SYS_PB_H_MFP_PB15_MFP_GPB15);
PB->OFFD &= 0x03BFFFFF;
PC->OFFD &= 0xFF80FFFF;
GPIO_SetMode(PB, BIT6|BIT10|BIT11|BIT12|BIT13, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT14|BIT15, GPIO_PMD_INPUT);
GPIO_SetMode(PC, BIT0|BIT1, GPIO_PMD_INPUT);
PB6=0;PB10=0;PB11=0;PB12=0;PB13=0;
GPIO_ENABLE_PULL_UP(PB, BIT14|BIT15);
GPIO_ENABLE_PULL_UP(PC, BIT0|BIT1);

SYS_LockReg();



yiyigirl2014 发表于 2017-1-10 22:07 | 显示全部楼层
是的,可以在程序开始的初始化里面设置这些IO。
gejigeji521 发表于 2017-1-11 20:53 | 显示全部楼层
怎么不注释一下,有的看不太明白。
643757107 发表于 2017-1-11 23:54 | 显示全部楼层
PB->OFFD &= 0x03BFFFFF;
PC->OFFD &= 0xFF80FFFF;
这两个是做啥的
 楼主| hendxcn 发表于 2017-1-12 09:54 | 显示全部楼层
本帖最后由 hendxcn 于 2017-1-12 10:03 编辑
gejigeji521 发表于 2017-1-11 20:53
怎么不注释一下,有的看不太明白。

SYS_UnlockReg();

/* 设置 IO 做 GPIO  */
SYS->PC_L_MFP &= ~(SYS_PC_L_MFP_PC0_MFP_GPC0|SYS_PC_L_MFP_PC1_MFP_GPC1);
SYS->PB_L_MFP &= ~SYS_PB_L_MFP_PB6_MFP_GPB6;
SYS->PB_H_MFP &= ~(SYS_PB_H_MFP_PB10_MFP_GPB10|SYS_PB_H_MFP_PB11_MFP_GPB11|\
                                       SYS_PB_H_MFP_PB12_MFP_GPB12|SYS_PB_H_MFP_PB13_MFP_GPB13|\
                                       SYS_PB_H_MFP_PB14_MFP_GPB14|SYS_PB_H_MFP_PB15_MFP_GPB15);
/* 使能 IO 数字输入通道 */
PB->OFFD &= 0x03BFFFFF;
PC->OFFD &= 0xFF80FFFF;
/* 设置 IO 模式 */
GPIO_SetMode(PB, BIT6|BIT10|BIT11|BIT12|BIT13, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT14|BIT15, GPIO_PMD_INPUT);
GPIO_SetMode(PC, BIT0|BIT1, GPIO_PMD_INPUT);
/* 第一次输出 L */
PB6=0;PB10=0;PB11=0;PB12=0;PB13=0;
/* 以下脚位上拉使能 */
GPIO_ENABLE_PULL_UP(PB, BIT14|BIT15);
GPIO_ENABLE_PULL_UP(PC, BIT0|BIT1)





 楼主| hendxcn 发表于 2017-1-12 09:54 | 显示全部楼层
643757107 发表于 2017-1-11 23:54
PB->OFFD &= 0x03BFFFFF;
PC->OFFD &= 0xFF80FFFF;
这两个是做啥的

/* 使能 IO 数字输入通道 */
PB->OFFD &= 0x03BFFFFF;
PC->OFFD &= 0xFF80FFFF;

123.png

643757107 发表于 2017-1-12 20:36 | 显示全部楼层
hendxcn 发表于 2017-1-12 09:54
/* 使能 IO 数字输入通道 */
PB->OFFD &= 0x03BFFFFF;
PC->OFFD &= 0xFF80FFFF; ...

楼主太给力了,以前只用库函数,没研究过这些寄存器,看来要学习学习了。
zhuomuniao110 发表于 2017-1-12 23:36 | 显示全部楼层
手册一定要好好学习,都在手册上啊。
gejigeji521 发表于 2017-1-26 20:14 | 显示全部楼层
温故而知新,几天不看啥都不会了。
wahahaheihei 发表于 2017-1-27 14:05 | 显示全部楼层
应该有相关的例程。
dongnanxibei 发表于 2017-2-11 21:19 | 显示全部楼层
这个系列用库函数操作没法实现吗
huangcunxiake 发表于 2017-2-13 19:12 | 显示全部楼层
这两个单片机的手册说明里,提出差异在哪儿了吗
mintspring 发表于 2017-2-13 23:15 | 显示全部楼层
最后解决了,这两个哪儿的区别?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部