使用stm8s的TIM2 ,輸出38KHz的PWM
測試TIME2_CH2的PWM,輸出38KHz。
必須放在首次建立工程文件的路徑下編譯,否則無效。
測試TIME1_CH1的PWM,輸出1KHz,可以調PWM。
TIME1_CH1輸出需要更改option bytes:AFR0。
單片機源程序如下:
- /******************** (C) COPYRIGHT 風馳電子嵌入式開發工作室 ********************/
- #include "pwm.h"
- #include "stm8s_tim2.h"
- #include "stm8s_tim1.h"
- static void Delay(u16 nCount);
- void Tim1_PWM_Init(void)
- {
- //TIM1復位
- TIM1_DeInit();
-
- //16 MHz/16 分頻= 1 兆赫、向上計數, 1 MHz /1000 =計數 1000
- TIM1_TimeBaseInit( 15, TIM1_COUNTERMODE_UP, 999, 0 );
-
- //初始化捕獲/比較通道1(PWM模式1,啟用輸出比較),
- TIM1_OC1Init( TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE,
- //啟用互補輸出比較1,脈寬50%,輸出比較極性高電平,
- TIM1_OUTPUTNSTATE_ENABLE, 499, TIM1_OCPOLARITY_HIGH,
- //互補輸出比較極性高電平,輸出比較空閑狀態復位,互補輸出比較空閑狀態復//位)
- TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_SET );
- //啟用定時器
- TIM1_Cmd(ENABLE);
- //允許主輸出????? 移動 TIM1 定時器。選擇 PWM 輸出。
- TIM1_CtrlPWMOutputs(ENABLE);
- }
- void SetTIM1_PWM_DutyCycle( uint16_t TIM1_Pulse)
- {
- /* Set the Pulse value */
- TIM1->CCR1H = (uint8_t)(TIM1_Pulse >> 8);//ch1
- TIM1->CCR1L = (uint8_t)(TIM1_Pulse);
-
-
- }
- void TestTIM1_PWM_LED(void)
- {
- u16 Duty_Val;
- for(Duty_Val=0;Duty_Val<999;Duty_Val++)
- {
- SetTIM1_PWM_DutyCycle(Duty_Val);
- Delay(0xfff);Delay(0xfff);
- Delay(0xfff);Delay(0xfff);
- }
- }
- void Tim2_PWM_Init(void)
- {
-
- TIM2_TimeBaseInit(TIM2_PRESCALER_1, 420);
- TIM2_OC2Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,210, TIM2_OCPOLARITY_HIGH);
- TIM2_OC2PreloadConfig(ENABLE);
-
- TIM2_Cmd(ENABLE);
- }
- void SetTIM2_PWM_Frequency(uint16_t TIM2_Period)
- {
- /* Set the Autoreload value */
-
- TIM2->ARRH = (uint8_t)(TIM2_Period >> 8);
- TIM2->ARRL = (uint8_t)(TIM2_Period);
- }
- void SetTIM2_PWM_DutyCycle( uint16_t TIM2_Pulse)
- {
-
- TIM2->CCR2H = (uint8_t)(TIM2_Pulse >> 8);
- TIM2->CCR2L = (uint8_t)(TIM2_Pulse);
- }
- void TestTim2_PWM_LED(void)
- {
- u16 Duty_Val;
- for(Duty_Val=0;Duty_Val<999;Duty_Val++)
- {
- SetTIM2_PWM_DutyCycle(Duty_Val);
- Delay(0xfff);Delay(0xfff);
- Delay(0xfff);Delay(0xfff);
- }
- }
- void Delay(u16 nCount)
- {
- /* Decrement nCount value */
- while (nCount != 0)
- {
- nCount--;
- }
- }
- /******************* (C) COPYRIGHT 風馳電子嵌入式開發工作室 *****END OF FILE****/
復制代碼
所有資料51hei提供下載:
TIM2-PWM.rar
(255.98 KB, 下載次數: 74)
2018-5-7 16:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|