1. 程式人生 > >STM8S---IO複用配置(STVP方式)

STM8S---IO複用配置(STVP方式)

1 說明

STM8S的IO複用用程式程式碼配置起來比較麻煩,一般是操作flash來操作option byte位元組,配置暫存器更加麻煩,可以使用STM 標準外設驅動庫來設定。本文使用一種介面配置的方式來配置IO複用管腳,即使用STVP來配置。 因為FLASH儲存的資料是掉電不丟失的,先用STVP把Option Bytes擦寫好後,再用STVD模擬器燒寫程式就可實現IO複用了。

檔案下載

2 配置流程

【step1】開啟STVP軟體

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); }