STM8S Timer2_OC1_PWM1輸出模式
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 實(shí)驗(yàn)平臺(tái): STM8S103F2P6 FM 接收實(shí)驗(yàn)核心板
+ 硬件 : STM8S103F2P6
+ 開(kāi)發(fā)平臺(tái): IAR For STM8 1.10
+ 仿真器 : ST-Link
+ 日期 : 2010-6-22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stm8s.h"
/*******************************************************************************
* ==啟用外部晶振函數(shù)==
*******************************************************************************/
voidHSE_CLK_INIT(void)
{
CLK_DeInit();
CLK_HSECmd(ENABLE);
while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchCmd(ENABLE);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
}
/*******************************************************************************
* ==定時(shí)器2初始化函數(shù)==
* TIM2_DeInit(); --> 初始化定時(shí)器2寄存器
* TIM2_TimeBaseInit(TIM2_PRESCALER_1, 224); --> 定時(shí)器2基本初始化 設(shè)置 分頻系數(shù) , 初值
--> ( 無(wú)分頻 , 7372800 / 32768 = 225 校準(zhǔn)為224 )
* TIM2_OC1Init(TIM2_OCMODE_PWM1 , TIM2_OUTPUTSTATE_ENABLE , 112 , TIM2_OCPOLARITY_HIGH);
--> 定時(shí)器2輸出方式 為PWM1 , 定時(shí)器2輸出狀態(tài)使能 , 輸出占空比 50% , 輸出起始電平 為高
* TIM2_Cmd(ENABLE); --> 啟動(dòng)定時(shí)器
*******************************************************************************/
voidTIME2_INIT(void)
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_1,224);
TIM2_OC1Init(TIM2_OCMODE_PWM1,TIM2_OUTPUTSTATE_ENABLE,112,TIM2_OCPOLARITY_HIGH);
TIM2_Cmd(ENABLE);
}
/*******************************************************************************
* ==Main函數(shù)==
* 用示波器測(cè)量stm8s103f2p6 的Timer_OC1端,即1腳。得到占空比50%的,32768Hz的方波
* 為確保穩(wěn)定,可以在輸出管教加上上拉電阻
*******************************************************************************/
voidmain(void)
{
HSE_CLK_INIT();
TIME2_INIT();
while(1);
}
+ 實(shí)驗(yàn)平臺(tái): STM8S103F2P6 FM 接收實(shí)驗(yàn)核心板
+ 硬件 : STM8S103F2P6
+ 開(kāi)發(fā)平臺(tái): IAR For STM8 1.10
+ 仿真器 : ST-Link
+ 日期 : 2010-6-22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stm8s.h"
/*******************************************************************************
* ==啟用外部晶振函數(shù)==
*******************************************************************************/
voidHSE_CLK_INIT(void)
{
CLK_DeInit();
CLK_HSECmd(ENABLE);
while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchCmd(ENABLE);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
}
/*******************************************************************************
* ==定時(shí)器2初始化函數(shù)==
* TIM2_DeInit(); --> 初始化定時(shí)器2寄存器
* TIM2_TimeBaseInit(TIM2_PRESCALER_1, 224); --> 定時(shí)器2基本初始化 設(shè)置 分頻系數(shù) , 初值
--> ( 無(wú)分頻 , 7372800 / 32768 = 225 校準(zhǔn)為224 )
* TIM2_OC1Init(TIM2_OCMODE_PWM1 , TIM2_OUTPUTSTATE_ENABLE , 112 , TIM2_OCPOLARITY_HIGH);
--> 定時(shí)器2輸出方式 為PWM1 , 定時(shí)器2輸出狀態(tài)使能 , 輸出占空比 50% , 輸出起始電平 為高
* TIM2_Cmd(ENABLE); --> 啟動(dòng)定時(shí)器
*******************************************************************************/
voidTIME2_INIT(void)
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_1,224);
TIM2_OC1Init(TIM2_OCMODE_PWM1,TIM2_OUTPUTSTATE_ENABLE,112,TIM2_OCPOLARITY_HIGH);
TIM2_Cmd(ENABLE);
}
/*******************************************************************************
* ==Main函數(shù)==
* 用示波器測(cè)量stm8s103f2p6 的Timer_OC1端,即1腳。得到占空比50%的,32768Hz的方波
* 為確保穩(wěn)定,可以在輸出管教加上上拉電阻
*******************************************************************************/
voidmain(void)
{
HSE_CLK_INIT();
TIME2_INIT();
while(1);
}
評(píng)論