|
#include "IOSTM8S103F3.h"
unsigned int FRE=200; //frequency 頻率 4M / 100 = 40K
void PWM_GPIO_Init( void )
{
PC_DDR |= ( 1 << 7 ); //PC7 推挽輸出
PC_CR1 |= ( 1 << 7 );
}
void TIM1_Init( void )
{
PWM_GPIO_Init();
TIM1_CR1 = ( 1 << 7 ); //自動預裝載允許
TIM1_CCMR2 = ( 6 << 4 ) | ( 1 << 3 ) | ( 1 << 2 ); //TIM1 CH2 PWM1 輸出比較1預裝載使能 輸出比較1 快速使能
TIM1_CCER1 |= 0x10; //CC2為輸出 高電平有效
TIM1_PSCRH = 0x00; //預分頻 0
TIM1_PSCRL = 0x03; //16M/(1+3)=4 M
TIM1_ARRH = FRE >> 8; //設定自動重裝載值高8位
TIM1_ARRL = FRE; //設置自動重裝載值低8位
TIM1_BKR = 0x80; //剎車寄存器 使能OC1輸出 定時器不工作時輸出無效電平
TIM1_EGR = ( 1 << 0 ); //產生更新事件
TIM1_CR1 |= 0x01; //使能計數器
}
//TIM1 CH2 PC7
void TIM1_CH2_FRE_DC_Change( unsigned int freq, unsigned int dc )
{
TIM1_ARRH = freq >> 8; //設置頻率
TIM1_ARRL = freq;
TIM1_CCR2H = dc >> 8;
TIM1_CCR2L = dc;
}
void SysClkInit( void )
{
CLK_SWR = 0xe1; //HSI為主時鐘源 16MHz CPU時鐘頻率
CLK_CKDIVR = 0x00; //CPU時鐘0分頻,系統時鐘0分頻
}
void main( void )
{
unsigned int i = 100;
SysClkInit();
__asm( "sim" );
TIM1_Init();
__asm( "rim" );
while( 1 )
{
for( i = 100; i < 2000; i++ )
{
TIM1_CH2_FRE_DC_Change( i, i / 2 );
}
}
}
|
-
-
PWM變頻輸出(寄存器).rar
2022-7-27 10:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
162.39 KB, 下載次數: 16, 下載積分: 黑幣 -5
-
-
TIM1_PWM輸出(庫函數).rar
2022-7-27 10:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
643.47 KB, 下載次數: 18, 下載積分: 黑幣 -5
評分
-
查看全部評分
|