正在学习32的定时器,自己写的四路pwm源代码,希望可以帮得上大家!!!
单片机源程序如下:
- #include "stm32f10x.h"
- #include "led.h"
- #include "delay.h"
- #include "timer.h"
- #include "sys.h"
- #include "key.h"
- #include "usart.h"
- //#include "intrins.h"
- int main(void)
- {
- u16 i = 0;
- u8 key = 0;
- u16 led0pwmval = 0;
- u16 led0pwmva2 = 0;
- u16 led0pwmva3 = 0;
- u16 led0pwmva4 = 0;
- delay_init();
- LED_Init();
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- TIM3_PWM_Init(100,100); //20ms
- uart_init(9600);
- KEY_Init();
- while(1)
- {
- key = KEY_Scan(0);
-
- if(key)
- {
- switch(key)
- {
- case 1: led0pwmval = 0;
- led0pwmva2 = 0;
- led0pwmva3 = 0;
- led0pwmva4 = 0; break;
-
- case 2: led0pwmval=led0pwmval+5; break;
- case 3: led0pwmva2=led0pwmva2+5; break;
- case 4: led0pwmva3=led0pwmva3+5; break;
- case 5: led0pwmva4=led0pwmva4+5; break;
-
- }
- }
-
- TIM_SetCompare1(TIM3,led0pwmval);
-
- TIM_SetCompare2(TIM3,led0pwmva2);
-
- TIM_SetCompare3(TIM3,led0pwmva3);
-
- TIM_SetCompare4(TIM3,led0pwmva4);
-
- delay_ms(1);
- i++;
- if(i == 500)
- {
- i = 0;
- printf(" dj1 = %d",led0pwmval);
- printf(" dj2 = %d",led0pwmva2);
- printf(" dj3 = %d",led0pwmva3);
- printf(" dj4 = %d\r\n",led0pwmva4);
- }
- }
- }
复制代码
所有资料51hei提供下载:
7.1 定时器3 (4 通道PWM ).7z
(185.31 KB, 下载次数: 19)
|