最近做了一款產品,使用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波則沒有了。