2366|0

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求看一下pwm控制电机的程序 [复制链接]

功能是 串口助手发送一个数,单片机收到后,控制电机实现转速从零到全速的变化
中断能进,led灯可以亮,可是控制不了电机的转速。。。

#include
#include
#include "utils/ustdlib.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/rom.h"
#include "driverlib/gpio.h"
#include "driverlib/fpu.h"
#include "driverlib/pin_map.h"
#include "driverlib/pwm.h"
#include "grlib/grlib.h"
#include "driverlib/interrupt.h"
#include "inc/tm4c123gh6pm.h"
#include "driverlib/uart.h"

#define PWM_MAX 100   
#define PWM_MIN 0

void delay()
{
int i,j;
for(i=0;i<1000;i++)
{
for(j=0;j<1000;j++);
}
}
void UART5IntHandler(void)
{

  unsigned int ulStatus;
ulStatus = ROM_UARTIntStatus(UART5_BASE, true);
  ROM_UARTIntClear(UART5_BASE, ulStatus);
  
while(ROM_UARTCharsAvail(UART5_BASE))
  {
      GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_PIN_1);
    delay();
      ROM_UARTCharPutNonBlocking(UART5_BASE,ROM_UARTCharGetNonBlocking(UART5_BASE));
  }
}


int main (void)
{

  FPUEnable();
  FPULazyStackingEnable();

  SysCtlClockSet(SYSCTL_SYSDIV_2_5 |SYSCTL_USE_PLL
  |SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART5);
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
   ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);
    GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0);

   ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
   ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
   ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
   GPIOPinConfigure(GPIO_PE4_U5RX);
   GPIOPinConfigure(GPIO_PE5_U5TX);
   GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5);
  ROM_IntMasterEnable();
    ROM_UARTConfigSetExpClk(UART5_BASE, ROM_SysCtlClockGet(),9600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
    ROM_IntEnable(INT_UART5);
    ROM_UARTIntEnable(UART5_BASE, UART_INT_RX | UART_INT_RT);
   int PWM_Width=ROM_UARTCharGet(UART5_BASE);

   ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
    ROM_SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
  ROM_GPIOPinConfigure(GPIO_PC5_M0PWM7);
  ROM_GPIOPinTypePWM(GPIO_PORTC_BASE,GPIO_PIN_5);
  ROM_PWMGenConfigure(PWM0_BASE, PWM_GEN_3,
    PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
  ROM_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, 100);
    ROM_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_7, 0);
   ROM_PWMGenEnable(PWM0_BASE, PWM_GEN_3);      
   ROM_PWMOutputState(PWM0_BASE,  PWM_OUT_7_BIT, true);  
        
   while(1);

}

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表