你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f103的I/O口怎么使用重新定义功能

[复制链接]
knightjie 提问时间:2018-10-15 13:46 /
求助各位大侠!        stm32f103xx数据手册的引脚定义上有一个重新定义功能,打开GPIO口时怎么编写?


TIM截图20181015134335.png
收藏 评论10 发布时间:2018-10-15 13:46

举报

10个回答
MrJiu 回答时间:2018-10-15 13:50:15
看参考资料GPIO部分,有一个叫做AF的,好像是这个玩意来分配的。。。不过Cube自动生成初始化代码,搞定一切,初学者还是多看资料!!!

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

knightjie 回答时间:2018-10-15 14:01:53
MrJiu 发表于 2018-10-15 13:50
看参考资料GPIO部分,有一个叫做AF的,好像是这个玩意来分配的。。。不过Cube自动生成初始化代码,搞定一切 ...

谢谢!
刚接触单片机不久,看的教程是使用库函数编写的,用“函数GPIO_AFIODeInit”来使用复用功能,手册里面的重定义功能是指的这个函数使用的重映射功能吗?
STM1024 回答时间:2018-10-15 14:07:16
本帖最后由 stm1024 于 2018-10-15 14:08 编辑

如果是使用标准库,使用GPIO口的替换功能,要打开相应的RCC,例如对于STM32F103VET6:
  1. void bxCAN_GPIO_Config(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_itd;
  4.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
  5.     //PB8 for CAN RX
  6.     GPIO_itd.GPIO_Pin = GPIO_Pin_8;
  7.     GPIO_itd.GPIO_Mode = GPIO_Mode_IPU;
  8.     GPIO_itd.GPIO_Speed=GPIO_Speed_50MHz;
  9.     GPIO_Init(GPIOB, &GPIO_itd);
  10.     //PB9 for CAN TX
  11.     GPIO_itd.GPIO_Pin = GPIO_Pin_9;
  12.     GPIO_itd.GPIO_Mode = GPIO_Mode_AF_PP;
  13.     GPIO_Init(GPIOB, &GPIO_itd);
  14.     //Pin Remap
  15.     GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);  
  16. }
复制代码
这个示例除了演示使用针脚的AF功能外,还把演示了PIN Remap功能。




评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

MrJiu 回答时间:2018-10-15 14:27:21
knightjie 发表于 2018-10-15 14:01
谢谢!
刚接触单片机不久,看的教程是使用库函数编写的,用“函数GPIO_AFIODeInit”来使用复用功能,手册 ...

对!!!本质上库函数也是在里么设置的寄存器,只是对寄存器的封装罢了!!!
wenyangzeng 回答时间:2018-10-15 15:21:11
举例:PA8映像第二功能AF_2 TIM1_CH1
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_2);

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

butterflyspring 回答时间:2018-10-15 15:21:11
如果初学,对MCU还不熟,建议还是用CUBEMX来配置,这样可以避免一些小问题,影响调试
knightjie 回答时间:2018-10-15 15:50:44
stm1024 发表于 2018-10-15 14:07
如果是使用标准库,使用GPIO口的替换功能,要打开相应的RCC,例如对于STM32F103VET6:这个示例除了演示使用 ...

我理解的是这个代码配置了pin8和9的管脚,打开复用功能和时钟,最后利用GPIO_PinRemap函数使用重定义中的can通讯功能。
knightjie 回答时间:2018-10-15 16:03:58
butterflyspring 发表于 2018-10-15 15:21
如果初学,对MCU还不熟,建议还是用CUBEMX来配置,这样可以避免一些小问题,影响调试 ...

这个没接触过哦
knightjie 回答时间:2018-10-15 16:04:47
wenyangzeng 发表于 2018-10-15 15:21
举例:PA8映像第二功能AF_2 TIM1_CH1
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_2);

谢谢
STM1024 回答时间:2018-10-15 17:42:28
knightjie 发表于 2018-10-15 15:50
我理解的是这个代码配置了pin8和9的管脚,打开复用功能和时钟,最后利用GPIO_PinRemap函数使用重定义中的 ...

是的,就是这个意思。只是个人觉得中文翻译中把remap翻译为重映射可能更好

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版