STM8S---IO複用配置(STVP方式)
阿新 • • 發佈:2019-01-06
- 1 說明
-
STM8S的IO複用用程式程式碼配置起來比較麻煩,一般是操作flash來操作option byte位元組,配置暫存器更加麻煩,可以使用STM 標準外設驅動庫來設定。本文使用一種介面配置的方式來配置IO複用管腳,即使用STVP來配置。 因為FLASH儲存的資料是掉電不丟失的,先用STVP把Option Bytes擦寫好後,再用STVD模擬器燒寫程式就可實現IO複用了。
- 2 配置流程
-
【step1】開啟STVP軟體
- 【step2】開啟我們需要下載的xxx.s19檔案,CTRL+F5(File->Ram Exec)
- 【step3】配置需要複用的引腳
IO口的複用功能主要配置在於AFR0-AFR7。這裡我們配置定時器TIM2_CH3通道的PWM輸出管腳複用,預設是PD2為輸出,將其配置成複用為PA3輸出。如上圖,在AFR1中的下拉選單中選擇PA3即可。 - 【step4】下載程式到STM8S中,Progam->All tabs。這樣就實現了IO複用配置。
3 測試程式
/*
TIM2_CH3 PWM
PD2 output
*/
#include <STM8S103F3P.h>
void CLK_init(void)
{
CLK_ICKR |= 0X01; //使能內部高速時鐘 HSI
CLK_CKDIVR |= 0x08; // 16M內部RC經2分頻後系統時鐘為8M
while(!(CLK_ICKR&0x02));//HSI準備就緒
CLK_SWR=0xe1; //HSI為主時鐘源
}
void Init_Tim2(void)
{
TIM2_CCMR3 |= 0X70; //設定定時器2三通道(PD2)輸出比較三模式
TIM2_CCMR3 |= 0X04; //輸出比較3預裝載使能
TIM2_CCER2 |= 0x03; //通道3使能,低電平有效,配置為輸出
// 初始化時鐘分頻器為1,即計數器的時鐘頻率為Fmaster=8M/64=0.125MHZ
TIM2_PSCR = 0X06;
//初始化自動裝載暫存器,決定PWM 方波的頻率,Fpwm=0.125M/62500=2HZ
TIM2_ARRH = 62500/256;
TIM2_ARRL = 62500%256;
//初始化比較暫存器,決定PWM 方波的佔空比:5000/10000 = 50%
TIM2_CCR3H = 31250/256;
TIM2_CCR3L = 31250%256;
// 啟動計數;更新中斷失能
TIM2_CR1 |= 0x81;
//TIM2_IER |= 0x00;
}
void Init_GPIO(void)
{
/*設定為推輓輸出,PD2接了LED燈*/
PD_DDR |= 0X04; //設定PD2埠為輸出模式
PD_CR1 |= 0X04; //設定PD2埠為推輓輸出模式
PD_CR2 &= 0XFD;
PA_DDR |= 0X08; //設定PA3埠為輸出模式
PA_CR1 |= 0X08; //設定PA3埠為推輓輸出模式
PA_CR2 |= 0XF7;
}
void main(void)
{
CLK_init();
Init_GPIO();
Init_Tim2();
while (1);
}