Lickoo的小本本
Lickoo的小本本

第三周--STM32利用串口和PWM信号控制舵机角度

第三周--STM32利用串口和PWM信号控制舵机角度

操作流程:


简单地缝合了一下代码。 难度:有手就行


参考:http://news.eeworld.com.cn/mcu/article_2016122732679.html

💡 按上述流程将代码封装进入一个函数PWM_init中,成功得到"pwm.h和pwm.c"。

💡 打开野火的示例代码库,将usart部分的"usart.h和usart.c"加入工程文件。

:idea:编写主函数,直接根据各函数的名称及变量调用即可。

#include "stm32f10x.h"
#include "pwm.h"
#include "bsp_usart.h"

void Delay( uint32_t count )
{
	for(; count!=0; count--);
}

int main(void)
{
	char deg;
  uint32_t num = 500;
	USART_Config();
	PWM_init(9999,143);     //频率为:72*10^6/(9999+1)/(143+1)=50Hz
	TIM_SetCompare2(TIM3,500);
	while(1){
	printf("请输入一个N来确定角度Deg = N*20°\n");
	deg = getchar();
		if(deg != 'x')
		{
  		switch(deg)
  		{
  			case '1': 
  			{
  				num = 111;
  				break;
  			}
  			case '2':
  			{
  				num = 222;
  				break;
  			}
  			case '3': 
  			{
  				num = 333;
  				break;
  			}
  			case '4': 
  			{
  				num = 444;
  				break;
        }
  			case '5':
  			{
  				num = 555;
  				break;
  			}
  			case '6':
  			{
  				num = 666;
  				break;
  			}
  			case '7':
  			{
  				num = 777;
  				break;
  			}
  			case '8':
  			{
  				num = 888;
  				break;
  			}
  			case '9':
  			{
  				num = 999;
  				break;
  			}
  			case '0':
  			{
  				num = 0;
  				break;
				case '+':
				{
					num +=10;
					break;
				}
				case'-':
				{
					num-=10;
					break;
  			}
			}
		}
	}else
			{
				uint32_t time;
				time = getchar();
				while(time--)
				{
      		TIM_SetCompare2(TIM3,250);
      		Delay(0x4ffff);
      		TIM_SetCompare2(TIM3,1250);
      		Delay(0x4ffff);
				}
			}
		TIM_SetCompare2(TIM3,250 + num);     //TIM_SetCompare2(TIM3,X); 得到占空比为(X/100)%的pwm波形
		}
}

 

PWM 配置的大致流程:

 

 

STM32_PWM输出.pdf


总用时:「2天」

工程下载: 舵机Demo.zip

没有标签
首页      博客迁移前的文章      第三周--STM32利用串口和PWM信号控制舵机角度

Lickoo的小本本

第三周--STM32利用串口和PWM信号控制舵机角度
操作流程: 简单地缝合了一下代码。 难度:有手就行 参考:http://news.eeworld.com.cn/mcu/article_2016122732679.html :idea: 按上述流程将代码封装进入一个函数PWM_init中,成功得到…
扫描二维码继续阅读
2022-02-26
--> <-- mouse effects show end -->