PC13,PC14,PC15怎么PC设置颜色成普通IO口

STM32F1系列PB3,PB4,PA13,PA14,PA15用作普通IO口的特殊配置
最近博主用STM32F103C8T6做了一个温度测控模块,用到PB3,PB4,PA15等引脚控制外设。发现不管怎么配置,这三个引脚都不能置零。后来发现是包括这三个引脚在内的PB3,PB4,PA13,PA14,PA15是特殊的IO口,用作JTAG/SWD仿真器的调试接口。其中PA13,PA14分别作为SWD调试的SWIO和SWCLK;PB3,PB4,PA13,PA14,PA15共同用于JTAG。这五个引脚的中英文描述如下图所示,图片来源于STM32F1参考手册:
这五个IO引脚非常特殊,正常情况下作为SWJ仿真器的调试引脚,如果要作为普通IO口使用需要特别的配置。以PA13引脚为例,该引脚在STM32F1数据手册中的描述如下图:
相较与其他的普通IO,PA13的Main function 为JTMS-SWDIO。反而普通IO口的功能在Alternate functions中的remap里。也就是说PA13要想当做普通IO口使用,就必须使用它复用功能中的重映射。因此就需要这样的两步操作:
一.在时钟配置中打开复用时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
二.对PA13引脚进行重映射:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
步骤一比较好理解,这里重点叙述下步骤二的重映射操作。针对SWJ五个引脚的重映射操作方式在STM32F1参考手册中的中英文描述下图所示:
由上图可知,重映射的方式一共有三种。分别描述如下:
1.GPIO_Remap_SWJ_JTAGDisable: /*!& JTAG-DP Disabled and SW-DP Enabled */
即能用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试
2.GPIO_Remap_SWJ_Disable:
/*!& Full SWJ Disabled (JTAG-DP + SW-DP) */
5个引脚全为普通引脚,但不能再用JTAG&SWD仿真器调试,只能用st-link调试
3.GPIO_Remap_SWJ_NoJTRST: /*!& Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */PB4可为普通IO口,JTAG&SWD正常使用,但JTAG没有复位
如果你用到所有的五个引脚当做普通IO口,那么上述步骤二中的重映射配置应写为GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); 如果你用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试,则重映射配置应写为GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 同理可配置只用PB4可为普通IO口的情况。
没有更多推荐了,查看: 11843|回复: 6
实时时钟晶振脚PC14,PC15如何作为普通IO使用?
主题帖子精华
中级会员, 积分 497, 距离下一级还需 3 积分
在线时间25 小时
一个项目,没有用到实时时钟,于是PC14,PC15空出来,但是一时大意,放着好几个空着的IO口没有用,
直接把LCD的两个控制脚接到了PC14,PC15。程序中就设置为推挽输出,2M速度,貌似经过测试,压根不能输出高电平。
有没有类似使用经验的哥们,出来赐教下,谢谢!
046f50ff0be46e4b170d768_401.png (0 Bytes, 下载次数: 0)
22:54 上传
&参考了各位大神的方案, 已经解决,原来没有添加头文件&&&&&&&& #include "stm32f10x_pwr.h"
&&&&&&&&&&& RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC& | RCC_APB2Periph_AFIO, ENABLE ); &
&GPIO_InitStructure.GPIO_Pin&& = GPIO_Pin_14 | GPIO_Pin ...
主题帖子精华
中级会员, 积分 497, 距离下一级还需 3 积分
在线时间25 小时
&参考了各位大神的方案, 已经解决,原来没有添加头文件&&&&&&&& #include "stm32f10x_pwr.h"
&&&&&&&&&&& RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC& | RCC_APB2Periph_AFIO, ENABLE ); &
&GPIO_InitStructure.GPIO_Pin&& = GPIO_Pin_14 | GPIO_Pin_15& ;
&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
&GPIO_InitStructure.GPIO_Mode& = GPIO_Mode_Out_PP;
&GPIO_Init(GPIOC, &GPIO_InitStructure);
&&& PWR_BackupAccessCmd(ENABLE);//允许修改RTC 和后备寄存器
&&& RCC_LSEConfig(RCC_LSE_OFF);//关闭外部低速外部时钟信号功能 后,PC13 PC14 PC15 才可以当普通IO用。
&&& PWR_BackupAccessCmd(DISABLE);//禁止修改后备寄存器
针对很多人所说的,手册上标明,PC13,PC14,PC15不能同时作为输出,但是最新的手册已经做了更改,并且经过我的测试是可行的,可以同时都是高电平。
abd81cfdddb8d7_245.jpg (0 Bytes, 下载次数: 0)
22:54 上传
不过在管脚足够的情况下,还是不太建议使用这几个管脚作为普通IO口,毕竟速度太慢,即使能输出高电平,我还真不知道能不能驱动LCD,容性负载没法测。
哎,慢慢调试吧!一时大意啊。
主题帖子精华
金钱129367
在线时间1160 小时
不错,谢谢分享.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
主题帖子精华
初级会员, 积分 57, 距离下一级还需 143 积分
在线时间8 小时
早看到就好了。。。。。。。
主题帖子精华
初级会员, 积分 105, 距离下一级还需 95 积分
在线时间16 小时
能做为输入口使用吗?
主题帖子精华
中级会员, 积分 391, 距离下一级还需 109 积分
在线时间79 小时
天哪,这是哪一出的飞机!我用PC13驱动LED,用PC14指示内核活跃状态,都是正常的。
而且PC14为了反应速度,设置为50MHz,得到了20ns的上升时间,怎么看都跟其它的没有区别。
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间9 小时
天哪,这是哪一出的飞机!我用PC13驱动LED,用PC14指示内核活跃状态,都是正常的。
而且PC14为了反应速度 ...
对啊,直接led灌电流进来,他们都瞎几把扯淡的
有钱人家也不信你
"原子哥”推荐 /1
资料包括正点原子开发板全套视频,源码,手册等。原子粉丝请关注公众号。
Powered by21ic官方微信-->
GD32F103RCT6 里面的特殊引脚:PC13、PC14、PC15 怎么配置为普通输入IO来用?
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
GD32F103RCT6 里面的特殊引脚:PC13、PC14、PC15 怎么配置为普通输入IO来用?
技术总监, 积分 25421, 距离下一级还需 24579 积分
技术总监, 积分 25421, 距离下一级还需 24579 积分
技术总监, 积分 25421, 距离下一级还需 24579 积分
技术总监, 积分 25421, 距离下一级还需 24579 积分
本来它们就是普通IO吧?
高级工程师, 积分 5035, 距离下一级还需 2965 积分
高级工程师, 积分 5035, 距离下一级还需 2965 积分
高级工程师, 积分 5035, 距离下一级还需 2965 积分
高级工程师, 积分 5035, 距离下一级还需 2965 积分
这个默认的就是普通IO口,输入的话就需要将IO的方向寄存器的设置成输入不就OK了
高级工程师, 积分 5206, 距离下一级还需 2794 积分
高级工程师, 积分 5206, 距离下一级还需 2794 积分
高级工程师, 积分 5206, 距离下一级还需 2794 积分
高级工程师, 积分 5206, 距离下一级还需 2794 积分
这个是IO口的简单配置的没啥难度的哈
高级工程师, 积分 5206, 距离下一级还需 2794 积分
高级工程师, 积分 5206, 距离下一级还需 2794 积分
高级工程师, 积分 5206, 距离下一级还需 2794 积分
高级工程师, 积分 5206, 距离下一级还需 2794 积分
参照已有的例程的,像几个线管的寄存器的配置的,照猫画虎的就可以的
资深工程师, 积分 11682, 距离下一级还需 8318 积分
资深工程师, 积分 11682, 距离下一级还需 8318 积分
资深工程师, 积分 11682, 距离下一级还需 8318 积分
资深工程师, 积分 11682, 距离下一级还需 8318 积分
默认的就是普通的IO口管脚的啊
资深工程师, 积分 12141, 距离下一级还需 7859 积分
资深工程师, 积分 12141, 距离下一级还需 7859 积分
资深工程师, 积分 12141, 距离下一级还需 7859 积分
资深工程师, 积分 12141, 距离下一级还需 7859 积分
这个就是普通IO口的设置的呀
资深工程师, 积分 12677, 距离下一级还需 7323 积分
资深工程师, 积分 12677, 距离下一级还需 7323 积分
资深工程师, 积分 12677, 距离下一级还需 7323 积分
资深工程师, 积分 12677, 距离下一级还需 7323 积分
这个还不复杂的,主要是注意寄存器的配置的。
资深工程师, 积分 12435, 距离下一级还需 7565 积分
资深工程师, 积分 12435, 距离下一级还需 7565 积分
资深工程师, 积分 12435, 距离下一级还需 7565 积分
资深工程师, 积分 12435, 距离下一级还需 7565 积分
这个就不很明白了,其默认的不是一般的IO口功能么?
扫描二维码,随时随地手机跟帖
技术奇才奖章
人才类勋章
奔腾之江水
发帖类勋章
时间类勋章
精英会员奖章
等级类勋章
湍急之河流
发帖类勋章
技术高手奖章
人才类勋章
时间类勋章
精华达人奖章
等级类勋章
欢快之小溪
发帖类勋章
时间类勋章
技术新星奖章
人才类勋章
突出贡献奖章
等级类勋章
沉静之湖泊
发帖类勋章
您需要登录后才可以回帖下次自动登录
现在的位置:
& 综合 & 正文
PC13 PC14 PC15 才可以当普通IO用
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);//开C口时钟,复用时钟。
GPIO_InitTypeDef GPIO_InitS//设为输出 注意:2MHZ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
PWR_BackupAccessCmd(ENABLE);//允许修改RTC 和后备寄存器
RCC_LSEConfig(RCC_LSE_OFF);//关闭外部低速外部时钟信号功能 后,PC13 PC14 PC15 才可以当普通IO用。
// BKP_TamperPinCmd(DISABLE);//关闭入侵检测功能,也就是 PC13,也可以当普通IO 使用
// BKP_ITConfig(DISABLE); 这样就可以当输出用啦。
【上篇】【下篇】STM32把PC13、PC14、PC15、PB3、PB4、PA15作为普通IO使用
在MCU刚上电时,PC13作为侵入检测TAMPER引脚, PC14、PC15默认是作为连接32.768K低速外部晶振用的脚,PB3、PB4、PA15是JTAG调试脚,不能直接作为普通IO使用,下面是将他们作为普通IO使用的配置方法:
1、PC13、PC14和PC15作为普通IO:
PWR-&CR |= 1&&8;//取消备份区写保护
RCC-&BDCR &= 0xFFFFFFFE; //关闭外部低速振荡器,PC14,PC15成为普通IO
BKP-&CR &= 0xFFFFFFFE; //侵入检测TAMPER引脚(PC13)作为通用IO口使用
PWR-&CR &= 0xFFFFFEFF; //备份区写保护&/span&
2、PB3、PB4、PA15作为普通IO:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
//切换到SWJ调试,释放PA15,PB4
DBGMCU-&CR &= 0xFFFFFFDF;
//禁止异步跟踪,释放PB3
没有更多推荐了,

我要回帖

更多关于 PC28怎么设置 的文章

 

随机推荐