為什么STM8的PWM用TIM1不能輸出,TIM2可以,下面針對TIM1的PWM輸出做了下列程序代碼的編寫。
STM8S系列單片機
PC1管腳來控制PWM的輸出,即TIM1_CH1通道
PC2管腳來控制PWM的輸出,即TIM1_CH2通道
PC3管腳來控制PWM的輸出,即TIM1_CH3通道
//PWM初始化
void Driver_PWMON(u8 ch,u8 Num)
{
//開TIM1時鐘
CLK->PCKENR1 |= CLK_PCKENR1_TIM1;
//設置PWM頻率,Fpwm=Fmaster/TIM2_ARR
//這里Fpwm = 2000000/100 = 20K
TIM1->ARRH = 0;
TIM1->ARRL = 100;
//啟動計數,開始PWM輸出
TIM1->BKR |= TIM1_BKR_MOE;
switch(ch)
{
case 1:
TIM1->CCMR1 |= 0x70;//設置TIM1_CH1為PWM模式2 有效電平為高電平
pwm_ch_on(1);//開啟TIM1_CH1 通道輸出
TIM1->CCR1H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR1L = Num;
break;
case 2:
TIM1->CCMR2 |= 0x70;//設置TIM1_CH2為PWM模式2 有效電平為高電平
pwm_ch_on(2);//開啟TIM1_CH1 通道輸出
TIM1->CCR2H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR2L = Num;
break;
case 3:
TIM1->CCMR3 |= 0x70;//設置TIM1_CH3為PWM模式2 有效電平為高電平
pwm_ch_on(3);//開啟TIM1_CH1 通道輸出
TIM1->CCR3H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR3L = Num;
break;
case 4:
TIM1->CCMR4 |= 0x70;//設置TIM1_CH4為PWM模式2 有效電平為高電平
pwm_ch_on(4);//開啟TIM1_CH1 通道輸出
TIM1->CCR4H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR4L = Num;
break;
}
TIM1->CR1 |= TIM1_CR1_CEN;
}
//PWM占空比調節 0-100
void Driver_PWMSet(u8 ch,u8 Num)
{
if(Num > 100)
return;
switch(ch)
{
case 1:
TIM1->CCR1L = Num;
break;
case 2:
TIM1->CCR2L = Num;
break;
case 3:
TIM1->CCR3L = Num;
break;
case 4:
TIM1->CCR4L = Num;
break;
}
}
//打開PWM通道
void pwm_ch_on(u8 ch)
{
switch(ch)
{
case 1:
TIM1->CCER1 |= 0x01;
break;
case 2:
TIM1->CCER1 |= 0x10;
break;
case 3:
TIM1->CCER2 |= 0x01;
break;
case 4:
TIM1->CCER2 |= 0x10;
break;
}
}
//關閉PWM通道
void pwm_ch_close(u8 ch)
{
switch(ch)
{
case 1:
TIM1->CCER1 &= ~0x01;
break;
case 2:
TIM1->CCER1 &= ~0x10;
break;
case 3:
TIM1->CCER2 &= ~0x01;
break;
case 4:
TIM1->CCER2 &= ~0x10;
break;
}
}
//運行主函數
int main(void)
{
Driver_PWMON(1,0);
Driver_PWMON(2,0);
Driver_PWMON(3,0);
while(1)
{
u8 a= 0,b=0;
for(b=1 ;b<4; b++)
{
for(a=1;a<99;a++)
{
Driver_PWMSet(b,a);
delay_ms(5);
}
for(a=99;a>0;a--)
{
Driver_PWMSet(b,a);
delay_ms(5);
}
}
}
}
TIM2的跟TIM1的區別是:TIM1->BKR |= TIM1_BKR_MOE;
TIM2不需要配置這個寄存器。
OCi的輸出使能通過(TIM1_CCERi和TIM1_BKR寄存器中)CCiE、MOE、OISi和OSSR位和OSSI位的組合來控制。
上一篇:STM8S的按鍵PWM調光燈歷程
下一篇:STM8S TIM2 輸出PWM初始化函數
推薦閱讀
史海拾趣
ELEMENT14一直注重創新產品的引入和推廣。公司緊跟電子行業的最新技術趨勢,及時引入高性能、高可靠性的電子元器件產品。同時,ELEMENT14還積極推廣這些創新產品,通過舉辦技術研討會、發布技術白皮書等方式,幫助客戶了解產品的特點和優勢。這些努力不僅提升了公司的技術水平,也為客戶提供了更多的選擇。
ELEMENT14始終將提升服務質量和客戶滿意度作為首要任務。公司建立了完善的客戶服務體系,提供快速響應、專業解答的客戶服務。同時,ELEMENT14還定期開展客戶滿意度調查,針對客戶的反饋和建議進行改進。這些努力不僅提升了客戶滿意度,也增強了公司的品牌形象和市場競爭力。
隨著市場需求的不斷變化,達晶微不斷加大研發投入,推出了一系列具有創新性的產品。這些產品不僅提高了能效,降低了成本,還滿足了客戶對高質量、高性能半導體器件的需求。公司憑借技術創新和產品升級,贏得了客戶的廣泛認可。
在發展過程中,AE公司不斷突破技術瓶頸,實現了多項重要技術的創新。這些技術突破不僅提升了公司產品的性能和質量,也推動了整個電子行業的發展。隨著技術的不斷進步,AE公司開始將業務拓展至全球市場。通過與各國客戶的合作與交流,AE公司不斷了解市場需求,優化產品設計,為全球客戶提供更加優質的電源解決方案。
AE公司一直將創新作為企業發展的核心動力。公司不斷投入研發資源,推動電源技術的持續創新。同時,AE公司也積極與各大電子企業建立合作伙伴關系,共同推動電子行業的發展。通過與合作伙伴的緊密合作,AE公司不僅獲得了更多的市場機會,也提升了自身的技術水平和創新能力。
Future Designs, Inc.(FDI)成立于幾十年前,最初由一群在電子設計領域擁有豐富經驗的工程師創立。他們看到市場上對于高質量、快速響應的觸摸屏LCD圖形用戶界面(GUI)解決方案的需求日益增長,于是決定成立一家公司,專注于提供此類產品和服務。初創時期,FDI面臨諸多挑戰,包括資金短缺、市場認可度低以及技術難關等。然而,憑借團隊成員的堅持不懈和專業技術,他們逐步攻克難關,開發出了ELI?和羅德里格斯?GUI家族產品,為公司贏得了初步的市場地位。
醫用監護儀是一種能夠對人體重要的勝利、生化指標有選擇地進行經常性或連續的檢測,并且具有存儲、顯示、分析和控制功能,對超出規定范圍的參數發出警報的系統。由于它可以實時、連續、長時間地檢測病人的重要的生命參數,因此,成為醫院數量較大的 ...… 查看全部問答∨ |
|
我用數據采集卡采集差動變壓器型電感傳感器(LVDT)的輸出信號(正負5V范圍),采集卡0通道接傳感器信號調理電路輸出,采集卡的模擬地接調理電路的地,采集卡其他通道懸空。在幾分鐘內采集的電壓值比較穩定,上下波動幾mV,幾分鐘之后數據會突然變 ...… 查看全部問答∨ |
1,開發wince 6.0 usb 聲卡驅動,要求可以外接耳麥,可以正常播放和錄音; 2,懸賞1萬元; 有意愿者:請QQ:50708929 [ 本帖最后由 change1978 于 2012-5-18 11:03 編輯 ]… 查看全部問答∨ |
【玩轉C2000 Launchpad】NOKIA 5110液晶顯示 花了一個早上寫了一個NOKIA5110液晶顯示程序! 祝大家元旦快樂! 附上工程: $(\'flv_cmR\').innerHTML=(mobileplayer() ? "" : AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptA ...… 查看全部問答∨ |
用單片機的3.3V輸出IO口控制12V電源的通斷 12V電源端的電流為300MA,那么功率應該是3.6W MOS管太多,不知道常用來做開關的有哪些 求推薦常用的開關MOS管,容易買到,價格便宜。封裝越小越好… 查看全部問答∨ |