|
本實驗將實現(xiàn)如下功能:本實驗DS0用來指示程序運行,400ms為一個周期。DS1用于定時器中斷取反,指示定時器中斷狀態(tài),1000ms為一個周期。下載完后,可以看到DS0快閃,DS1慢閃。
stm32單片機源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "timer.h"
- extern int flag;
- int main(void)
- {
- u16 led0pwmval=300;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級分組2
- delay_init(168); //初始化延時函數(shù)
- LED_Init(); //初始化LED端口
- uart_init(115200);
- TIM3_Int_Init(5000-1,8400-1); //定時器時鐘84M,分頻系數(shù)8400,所以84M/8400=10Khz的計數(shù)頻率,計數(shù)5000次為500ms
- TIM14_PWM_Init(500-1,8400-1); //84M/84=1Mhz的計數(shù)頻率,重裝載值500,所以PWM頻率為 1M/500=2Khz
- TIM13_PWM_Init(500-1,8400-1);
- // while(1)
- // {
- // TIM14_PWM_Init(500-1,84-1); //84M/84=1Mhz的計數(shù)頻率,重裝載值500,所以PWM頻率為 1M/500=2Khz.
- // while(1) //實現(xiàn)比較值從0-300遞增,到300后從300-0遞減,循環(huán)
- // {
- // delay_ms(10);
- // led0pwmval--;//dir==1 led0pwmval遞增
- // if(led0pwmval==0)
- // led0pwmval=300;
- // TIM_SetCompare1(TIM14,led0pwmval); //修改比較值,修改占空比
- // }
- // };
- while(1)
- {
- if(flag==0){
- TIM_SetCompare1(TIM14,led0pwmval); //修改比較值,修改占空比
- }
- else TIM_SetCompare1(TIM14,500); //修改比較值,修改占空比
- if(flag==0){
- TIM_SetCompare1(TIM13,led0pwmval); //修改比較值,修改占空比
- }
- else TIM_SetCompare1(TIM13,500); //修改比較值,修改占空比
- // LED1=!LED1;
- // delay_ms(200);
- }
-
- }
復(fù)制代碼
所有資料51hei提供下載:
旋轉(zhuǎn)編碼器.rar
(488.25 KB, 下載次數(shù): 17)
2018-8-10 15:57 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|