Thread 中讨论的其他器件: C2000WARE
工具与软件:
您好!
我想熟悉 TMS320F280049C 和 CCS、所以我想控制伺服电机。
但是、即使我在查看示例时尝试编写代码、也无法使其正常工作。
我要做的是使用引脚10的 PWM 信号输出来控制 SG90伺服电机。
我希望占空比为1/10。 伺服电机的 PWM 周期为50Hz。
下面是我拥有的代码:
//############################################################################################################################################################################################
//
//文件:empty_driverlib_main.c
//
//! \addtogroup driver_example_list
//!
空项目示例
//!
//! 此示例是用于 Driverlib 开发的空项目设置。
//!
//
//############################################################################################################################################################################################
//
//
//$Copyright:
//版权所有(C) 2024德州仪器(TI)公司- http://www.ti.com/
//
//以源代码和二进制形式重新分发和使用、无论有无
//修改、但前提是满足以下条件
//已满足:
//
//重新分发源代码必须保留上述版权
//通知、此条件列表和以下免责声明。
//
//以二进制形式重新分发必须复制上述版权
//通知、此条件列表和中的以下免责声明
//随提供的文档和/或其他材料
//分布。
//
//既不是德州仪器(TI)公司的名称、也不是的名称
//其贡献者可用于认可或推广衍生产品
//未经事先书面许可、从本软件中获取。
//
//此软件由版权所有者和贡献者提供
//"按原样"以及任何明示或暗示的保证、包括但不包括
//仅限于对适销性和适用性的暗示保证
//不考虑特定目的。 在任何情况下均不得享有版权
//所有者或贡献者对任何直接、间接、附带、
//特殊、示例性或后果性损害(包括但不包括)
/仅限于采购替代商品或服务;不使用、
//数据或利润;或业务中断)、无论其原因是什么
//责任理论,无论是合同,严格责任,或侵权
//(包括疏忽或其他)以任何方式产生的使用
//此软件、即使被告知此类损坏的可能性。
//$
//############################################################################################################################################################################################
//
//包含的文件
//
#include "driverlib.h"
#include "device.h"
#include "board.h"
#include "c2000ware_libraries.h"
#define EPWM1_FREQ 50UL
#define EPWM1_PERIOD (uint16_t)(DEVICE_SYSCLK_FREQ/(2 * EPWM1_FREQ))
void initEPWM1 (void);
//
// Main (主菜单)
//
void main (void)
{
//
//初始化器件时钟和外设
//
device_init();
//禁用引脚锁定和启用内部上拉。
//
device_initGPIO();
GPIO_setControllerCore (10、GPIO_CORE_CPU1);
GPIO_setPadConfig (10、GPIO_PIN_TYPE_OD);
GPIO_setPinConfig (GPIO_10_EPWM6_A);
Interrupt_initModule();
interrupt_initVectorTable();
SYSCTL_disablePeripheral (SYSCTL_PERIPH_CLK_TBCLKSYNC);
initEPWM1();
board_init();
EINT;
SYSCTL_enablePeripheral (SYSCTL_PERIPH_CLK_TBCLKSYNC);
for (;;)
{
}
}
void initEPWM1 (void)
{
EPWM_setClockPrescaler (EPWM1_BASE、EPWM_CLOCK_DIVIDER_1、EPWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod (EPWM1_BASE、EPWM1_PERIOD);
EPWM_setCounterCompareValue (EPWM1_BASE、EPWM_COUNTER_COMPARE_A、EPWM1_PERIOD/10U);
EPWM_setTimeBaseCounterMode (EPWM1_BASE、EPWM_COUNTER_MODE_UP_DOWN);
EPWM_setTimeBaseCounter (EPWM1_BASE、0U);
}