8路舵机都可控制,在买pca9685驱动之前写的一部分,只用了2个定时器,如果只用舵机还可以接受,否则太懒费资源,
stm32调试舵机8路全用定时器(库函数)
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
-
- /************************************************
- ALIENTEK战舰STM32开发板实验9
- PWM输出实验
- ************************************************/
-
- int main(void)
- {
- delay_init(); //延时函数初始化
- KEY_Init();
- uart_init(115200); //串口初始化为115200
- TIM4_PWM_Init(199,7199);
- TIM3_PWM_Init(199,7199);
-
- TIM_SetCompare1(TIM4,5);// GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; D
- TIM_SetCompare2(TIM4,5);
- TIM_SetCompare3(TIM4,5);
- TIM_SetCompare4(TIM4,5);
- TIM_SetCompare1(TIM3,5);//GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; C
- TIM_SetCompare2(TIM3,5);
- TIM_SetCompare3(TIM3,5);
- TIM_SetCompare4(TIM3,5);
- while(1)
- {
- if(KEY0==0)
- {
- TIM_SetCompare1(TIM4,10); //45度
- TIM_SetCompare1(TIM3,10);
- }
- if(KEY1==0)
- {
- TIM_SetCompare2(TIM4,15); //90度
- TIM_SetCompare2(TIM3,15);
- }
- if(KEY2==0)
- {
- TIM_SetCompare3(TIM4,20); //135度
- TIM_SetCompare3(TIM3,20);
- }
- if(WK_UP==1)
- {
- TIM_SetCompare4(TIM4,25); //180度
- TIM_SetCompare4(TIM3,25);
- }
- }
- }
复制代码
所有资料51hei提供下载:
stm32调试舵机8路全用定时器(库函数).7z
(185.68 KB, 下载次数: 90)
|