STM32管脚的复用与重映像关系

最近记忆力以指数形式下降,以前弄明白的东西结果又忘了,故而将之写下避免下次又得重新查阅资料

这里讲的是关于STM32F10X的,和STM32F0XX系列的还是有一些区别的,F0的下次有空在写了....

概括一下:复用就是一个引脚有几个功能,1.做普通IO输入输出2.其他外设的输入输出(比如I2C,TIM,SPI等等),这就是复用。

重映射就是将引脚功能重新定义到其他引脚,例如PA9是USART1-TX默认的管脚,但是现在PA9用做它用了,那可以将USART1-TX重新映射到PB6,当然这种映射不是随意的想映射到哪个脚就哪个脚,芯片内部已经固定了只能映射到固定的地方

OK,说完了概念  下面是用法

MCU复位后PA8的默认功能是普通IO管脚,我想将它设为TIM1的PWM-CH1复用输出

步骤就是:1、将TIM1初始化好,设成PWM输出,使能定时器。2、将PA8管脚设为复用推挽输出。这样就可以使用PWM了,也就是复用的用法


 
 
  1. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  2. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  3. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  4. GPIO_Init(GPIOA, &GPIO_InitStructure);
  5. RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
  6. /*Timer时基设置外设时钟频率*/
  7. TIM_TimeBaseStructure.TIM_Period = 240;
  8. TIM_TimeBaseStructure.TIM_Prescaler = 0;
  9. TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  10. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  11. TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
  12. TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  13. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  14. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  15. TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
  16. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  17. TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  18. TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  19. TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
  20. TIM_OCInitStructure.TIM_Pulse = 10;
  21. TIM_OC1Init(TIM1, &TIM_OCInitStructure);
  22. TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
  23. TIM_ARRPreloadConfig(TIM1,ENABLE);
  24. TIM_Cmd(TIM1,ENABLE);
  25.  
那如果我PA8已经用作其他了。想将其重映射咋办,,,

按照上图 只有两种映射 部分映射和完全映射 如果是部分映射  改变的是BKIN,CH1N,CH2N,CH3N这几个脚而已,所以应该选完全映射 就可以将TIM1的PWM-CH1重映射到PE9这个脚去


 
 
  1. GPIO_PinRemapConfig(GPIO_FullRemap_TIM1,ENABLE);
  2. //不懂你们有没有这样的疑问,这样会不会改变其他引脚,本来我就不想改变其他只改变一个引脚,结果其他引脚也被重映射走了....
关于这个问题,我的理解是:例如上图,假如说 连CH2 CH3 CH4也以前用了的话 那就没办法了 都会一起被重新映射走了,也就说CH2=PE11 CH3=PE13 CH4 =PE14没办法只做到只映射了一个过来而已
那如果说只使用了CH1的话 那就不会有影响 PE11 PE13 PE14照样当做普通IO使用不用将这几个管脚的复用功能打开就可以了


上述乃个人理解,不对之处还望指出.....


  •                     <li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#csdnc-thumbsup"></use>
                        </svg><span class="name">点赞</span>
                        <span class="count">6</span>
                        </a></li>
                        <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;popu_824&quot;}"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-Collection-G"></use>
                        </svg><span class="name">收藏</span></a></li>
                        <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-fenxiang"></use>
                        </svg>分享</a></li>
                        <!--打赏开始-->
                                                <!--打赏结束-->
                                                <li class="tool-item tool-more">
                            <a>
                            <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
                            </a>
                            <ul class="more-box">
                                <li class="item"><a class="article-report">文章举报</a></li>
                            </ul>
                        </li>
                                            </ul>
                </div>
                            </div>
            <div class="person-messagebox">
                <div class="left-message"><a href="https://blog.csdn.net/lincheng15">
                    <img src="https://profile.csdnimg.cn/1/A/8/3_lincheng15" class="avatar_pic" username="lincheng15">
                                            <img src="https://g.csdnimg.cn/static/user-reg-year/1x/10.png" class="user-years">
                                    </a></div>
                <div class="middle-message">
                                        <div class="title"><span class="tit"><a href="https://blog.csdn.net/lincheng15" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}" target="_blank">lincheng15</a></span>
                                            </div>
                    <div class="text"><span>发布了11 篇原创文章</span> · <span>获赞 15</span> · <span>访问量 5万+</span></div>
                </div>
                                <div class="right-message">
                                            <a href="https://im.csdn.net/im/main.html?userName=lincheng15" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
                        </a>
                                                            <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}">关注</a>
                                    </div>
                            </div>
                    </div>
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值