|
輸出占空比和頻率實(shí)時(shí)可調(diào)的PWM波!
實(shí)驗(yàn)?zāi)康?
學(xué)習(xí)定時(shí)器的PWM功能
硬件資源:
1,DS0(連接在PB5)
2,定時(shí)器3(TIM3),使用TIM3的通道2(CH2),開啟部分重映射,將TIM3_CH2輸出到PB5.
從而實(shí)現(xiàn)PWM輸出控制DS0亮度.
實(shí)驗(yàn)現(xiàn)象:
本實(shí)驗(yàn),DS0由暗到亮,再由亮到暗,再由暗到亮,依次循環(huán).
注意事項(xiàng):
無.
單片機(jī)源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
-
- int main(void)
- {
- u16 pwmval=6429; // 7143*90%=6428.7
- u8 flag=1;
- delay_init(); //延時(shí)函數(shù)初始化
- //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- //uart_init(115200); //串口初始化為115200
- //LED_Init(); //LED端口初始化
- TIM3_PWM_Init(7143,71);//預(yù)分頻72:72000000÷(71+1)=1000000 自動(dòng)重裝載值由140Hz頻率計(jì)算得到:1000000÷140=7142.86
- while(1)
- {
- if(flag==0)
- {
- TIM_SetCompare2(TIM3,pwmval);
- delay_ms(500); //90%的占空比延時(shí)0.5秒
- flag=1;
- }
- if(flag==1)
- {
- if(pwmval>714) // 7143*10%=714.3
- {
- pwmval=pwmval-27; // 占空比變化范圍:7143*0.8=5714.4
- // 變化時(shí)間段的時(shí)間分割1500ms÷7ms=214.285(段)
- // 每個(gè)計(jì)數(shù)周期對(duì)應(yīng)占空比變化基數(shù)
- TIM_SetCompare2(TIM3,pwmval);
- delay_ms(7); // 頻率140HZ等于周期0.007秒
- }
- if(pwmval<714)
- {
- pwmval=6429;
- flag=0;
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
(成功) PWM輸出實(shí)驗(yàn) 2017.4.20.7z
(185.82 KB, 下載次數(shù): 389)
2022-1-11 06:41 上傳
點(diǎn)擊文件名下載附件
|
|