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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版