zoukankan      html  css  js  c++  java
  • STM32重映射(PinRemap)的使用,注意!

    STM32重映射,内容和细节稍后补充,这里只说几个注意点,花了我一晚上的时间调试终于找到问题所在了。。。

    芯片: STM32f107vct6

    晶振: 25M

    通过分频器与锁相环,使系统时钟为72M

    背景: SPI3的重映射使用

    一、

    重映射函数原型:

    void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)

    STM32f107vct6不是FPGA,重映射是固定的,无法自行指定,要查表,看看映射到了哪

    比如SPI3,查询datasheet(好好利用ctrl+f)后可知

    Alternate function SPI3_REMAP = 0  SPI3_REMAP = 1
    SPI3_NSS  PA15 PA4
    SPI3_SCK  PB3 PC10
    SPI3_MISO PB4 PC11
    SPI3_MOSI PB5 PC12

     

     

     

     

     

     

    二、

    非常重要!remap一定要在时钟使能之后配置,否则无效

    神奇了真是

    重映射步骤
    · (1)使能被重新映射到的I/O端口时钟
      RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    · (2)使能被重新映射的外设时钟
      RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
    · (3)使能AFIO功能的时钟
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    · (4)进行重映射

      GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);

    注:· (1)(2)(3)顺序可换,

      · 或者,在APB2总线上的设备,用 或( | ) 一起进行时钟使能,

         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);

        但一定要在(4)之前。否则remap无法配置成功  

      · GPIO的配置虽然可以先GPIO再RCC。。为了统一格式,一律先开时钟再配置

     

     

     

     

     

  • 相关阅读:
    图解插入排序
    图解冒泡排序
    break 和continue的两种用法
    循环的使用选择
    jstl标签库使用报错index_jsp.java找不到问题
    [Android 除錯] Conflict with dependency
    jQueryMobile 網頁使用 ASP.NET Web API 服務
    Chart.js 與 ASP.NET MVC 整合應用
    HTML5 新增的 input 事件
    ASP.NET MVC 5 實作 GridView 分頁
  • 原文地址:https://www.cnblogs.com/Cmfvacks-IsLjj/p/5027883.html
Copyright © 2011-2022 走看看