请选择 进入手机版 | 继续访问电脑版
搜索
查看: 3294|回复: 10

[已解决] stm32f103的I/O口怎么使用重新定义功能

[复制链接]

该用户从未签到

1

主题

5

帖子

0

蝴蝶豆

新手上路

最后登录
2018-10-16
发表于 2018-10-15 13:46:19 | 显示全部楼层 |阅读模式
求助各位大侠!        stm32f103xx数据手册的引脚定义上有一个重新定义功能,打开GPIO口时怎么编写?


TIM截图20181015134335.png
回复

使用道具 举报

该用户从未签到

3

主题

1002

帖子

363

蝴蝶豆

版主

最后登录
2021-4-15
发表于 2018-10-15 13:50:15 | 显示全部楼层
看参考资料GPIO部分,有一个叫做AF的,好像是这个玩意来分配的。。。不过Cube自动生成初始化代码,搞定一切,初学者还是多看资料!!!

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

蝴蝶豆

新手上路

最后登录
2018-10-16
 楼主| 发表于 2018-10-15 14:01:53 | 显示全部楼层
MrJiu 发表于 2018-10-15 13:50
看参考资料GPIO部分,有一个叫做AF的,好像是这个玩意来分配的。。。不过Cube自动生成初始化代码,搞定一切 ...

谢谢!
刚接触单片机不久,看的教程是使用库函数编写的,用“函数GPIO_AFIODeInit”来使用复用功能,手册里面的重定义功能是指的这个函数使用的重映射功能吗?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2021-4-15 11:47
  • 签到天数: 537 天

    [LV.9]

    29

    主题

    2176

    帖子

    127

    蝴蝶豆

    论坛元老

    最后登录
    2023-8-27
    发表于 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

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    1002

    帖子

    363

    蝴蝶豆

    版主

    最后登录
    2021-4-15
    发表于 2018-10-15 14:27:21 | 显示全部楼层
    knightjie 发表于 2018-10-15 14:01
    谢谢!
    刚接触单片机不久,看的教程是使用库函数编写的,用“函数GPIO_AFIODeInit”来使用复用功能,手册 ...

    对!!!本质上库函数也是在里么设置的寄存器,只是对寄存器的封装罢了!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    74

    主题

    3420

    帖子

    82

    蝴蝶豆

    社区小助手

    最后登录
    2023-11-12
    发表于 2018-10-15 15:21:11 | 显示全部楼层
    举例:PA8映像第二功能AF_2 TIM1_CH1
      GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_2);

    评分

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

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    1306

    帖子

    929

    蝴蝶豆

    版主

    最后登录
    2021-3-31
    发表于 2018-10-15 15:21:11 | 显示全部楼层
    如果初学,对MCU还不熟,建议还是用CUBEMX来配置,这样可以避免一些小问题,影响调试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2018-10-16
     楼主| 发表于 2018-10-15 15:50:44 | 显示全部楼层
    stm1024 发表于 2018-10-15 14:07
    如果是使用标准库,使用GPIO口的替换功能,要打开相应的RCC,例如对于STM32F103VET6:这个示例除了演示使用 ...

    我理解的是这个代码配置了pin8和9的管脚,打开复用功能和时钟,最后利用GPIO_PinRemap函数使用重定义中的can通讯功能。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2018-10-16
     楼主| 发表于 2018-10-15 16:03:58 | 显示全部楼层
    butterflyspring 发表于 2018-10-15 15:21
    如果初学,对MCU还不熟,建议还是用CUBEMX来配置,这样可以避免一些小问题,影响调试 ...

    这个没接触过哦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2018-10-16
     楼主| 发表于 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);

    谢谢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-17 04:23 , Processed in 0.216600 second(s), 47 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表