本实验将实现如下功能:本实验DS0用来指示程序运行,400ms为一个周期。DS1用于定时器中断取反,指示定时器中断状态,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);//设置系统中断优先级分组2
- delay_init(168); //初始化延时函数
- LED_Init(); //初始化LED端口
- uart_init(115200);
- TIM3_Int_Init(5000-1,8400-1); //定时器时钟84M,分频系数8400,所以84M/8400=10Khz的计数频率,计数5000次为500ms
- TIM14_PWM_Init(500-1,8400-1); //84M/84=1Mhz的计数频率,重装载值500,所以PWM频率为 1M/500=2Khz
- TIM13_PWM_Init(500-1,8400-1);
- // while(1)
- // {
- // TIM14_PWM_Init(500-1,84-1); //84M/84=1Mhz的计数频率,重装载值500,所以PWM频率为 1M/500=2Khz.
- // while(1) //实现比较值从0-300递增,到300后从300-0递减,循环
- // {
- // 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);
- }
-
- }
复制代码
所有资料51hei提供下载:
旋转编码器.rar
(488.25 KB, 下载次数: 17)
|