【STM8S003】GPIO复用问题 TIM2_CH3 采用PD2引脚输出

        最近做了一款产品,使用STM8S003F3的片子,产品要求使用TIM2,在PD2引脚输出PWM波形。

        安装了STM8专用版的IAR,下载了STM8的库文件,新建了工程,开始编写功能。

        由于没有STM的经验,也是查阅了大量资料,花了1天时间搭建环境,写了一个简单的IO口定时输出高低电平的测试程序进行测试,用库文件,GPIO控制还算简单。

        但是在接下来的一步,采用TIM2,在PD2引脚上输出波形时,出了问题。怎么配置都没有波形输出,上网查资料,才知道原来TIM2的CH3通道,有两路,一路是PA3,一路是PD2,GPIO复用,需要配置复用资源。量了量PA3,该引脚有输出,TIM2的初始化代码如下:

  // init timer1    /1 perscaler-16MHz/up counter mode
  //                /time overload value/start at 0
  TIM2_TimeBaseInit( TIM2_PRESCALER_1 , 16 );
  // interrupt config and enable
  TIM2_ITConfig( TIM2_IT_UPDATE, ENABLE );
  // enable auto reload
  TIM2_ARRPreloadConfig( ENABLE );
  // 50% pulse width
  TIM2_OC3Init( TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE, 8, 
                TIM2_OCPOLARITY_LOW );
  TIM2_CCxCmd( TIM2_CHANNEL_3, ENABLE );
  TIM2_OC3PreloadConfig( ENABLE );
  // start timer
  TIM2_Cmd( ENABLE );
  // start interrupt
  __enable_interrupt();

        STM8片子如图所示:

        找到原因后,那就找相应的解决办法就行了,先查了查STM8库文件的帮助手册,查阅相关函数,没有发现跟复用引脚有关的函数,然后查了查STM8的中文数据手册,手册上关于复用的那一页真凑巧没了,一脸黑线。上网查了查,找到了解决方法,直接在升级工具STVP上修改引脚复用配置即可。具体配置如下:

        首先选择要升级的程序,然后点击【OPTION BYTE】按钮,在该界面的AFR1后边,点小三角,选择如图中红框的配置(其他复用可自行查看),选择好后,点击下载,完成后,GPIO复用配置就OK了,使用示波器量了量,成功在PD2上输出了PWM波,而PA3上的PWM波则没有了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章