Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
大家好、
我喜欢将"ti/CSL/example/ePWM"中的 PWM 示例集成到用例的一个 RTOS 主函数中。 我已在"chains_main_BIOS_vision.c"中的"epwm_app.c"中添加了他们正在使用的所有函数。 当我编译并执行 时,用例和 PWM 都不起作用。
尽管编译成功。
请帮助我们了解如何将 PWM 程序集成到其中一个用例中。 或在用例的主函数中。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI-RTOS
大家好、
我喜欢将"ti/CSL/example/ePWM"中的 PWM 示例集成到用例的一个 RTOS 主函数中。 我已在"chains_main_BIOS_vision.c"中的"epwm_app.c"中添加了他们正在使用的所有函数。 当我编译并执行 时,用例和 PWM 都不起作用。
尽管编译成功。
请帮助我们了解如何将 PWM 程序集成到其中一个用例中。 或在用例的主函数中。
您是否可以共享您所做的所有更改? 我可以回顾一下是否存在一些差距。
顺便说一下、您不能将 PWM 示例原样集成到 VSDK 中。
PDK 示例是 BareMetal、VSDK 基于 TI SYSBIOS。 因此、您不应将 PDK 示例中与操作系统相关的函数(如启动、中断、缓存等)转到 VSDK。 您应该只将 PWM CSL-FL 编程到 VSDK 中。 对于上述所有内容、应使用 SYSBIOS API。
Prasad、您好!
请查找下面复制 的 chains_main_BIOS_vision.c 文件。 我想使用从链中生成的 PWM 信号来执行显示亮度控制,因此我尝试将 PWM 程序集成到主函数中。 在调整 PWM 占空比时、我想通过输出引脚控制亮度。
在下面复制的文件中,我添加了对 PWM 进行地理调速所必需的所有 PWM 功能。 请指导我如何继续。
/*********
* 包含文件
秘书长的报告
*
#include
#include
#include
#include
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
/* 包含文件 */
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
#include "ePWM_app.h"
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
/* 宏 */
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
/*
*可配置参数
*
/**
* \brief PWM 实例基址。
*
* 注意:如果更改为其他实例、则需要更改 PRCM 和 pinmux
* 在应用程序中得到了注意。
*
#define APP_EHRPWM_INST_BASE_ADDR (SOC_PWMSS1_IPWMSS_BASE)
/**
* \brief 输出通道- A 或 B
*
* 注意:如果更改为通道 B、则需要注意引脚多路复用
*。
*
#define APP_EHRPWM_OUTPUT 通道 (CSL_ePWM_OUTPUT CH_A)
/**\PWM 输出信号的频率(以 Hz 为单位)-选择1KHz */
#define APP_EHRPWM_OUT_FREQ (1U * 1000U)
/**\PWM 输出信号的短暂占空比(以%为单位)-给出0至100的值*/
#define APP_EHRPWM_Duty_cycle (25U)
/**\brief 应用程序运行时间(以秒为单位)*/
#define APP_RUN_TIME (30U)
/**\brief 应用程序运行计数(如果等于零 ISR 计数)*/
#define APP_RUN_TIME_ISRCOUNT (APP_RUN_TIME * APP_EHRPWM_OUT_FREQ)
/**
* \向 PWMSS 简要介绍功能时钟。
* 为平台修复-不能更改。
*
#define SOC_EHRPWM_MODULE_FREQ (133U * 1000U * 1000U)
/**\简述 以 Hz 为单位的 TB 频率,以便使用/4分频器*/
#define APP_EHRPWM_TB_FREQ (SOC_EHRPWM_MODULE_FREQ / 4U)
/**
* \brief PRD 值-这决定了周期
*
* PRD =(TBCLK/PWM FREQ)/2
* 注意:由于选择了向上和向下计数器、因此添加了/2。 因此周期为2倍
*
#define APP_EHRPWM_PRD_VAL ((APP_EHRPWM_TB_FREQ \
/ APP_EHRPWM_OUT_FREQ)/2U)
/**
* \brief compa value -这将决定占空比
*
* compa =(PRD -((dutycycle * PRD)/ 100)
*
#define APP_EHRPWM_COMPA_VAL (APP_EHRPWM_PRD_VAL - \
((APP_EHRPWM_Duty_cycle * \
APP_EHRPWM_PRD_VAL)/100U))
#define APP_EHRPWM_INT (32U)
#define APP_EHRPWM_XBAR_CPU (CSL_XBAR_IRQ_CPU_ID_IPU1)
#define APP_EHRPWM_XBAR_INST (CSL_XBAR_INST_IPU1_IRQ_32)
#define APP_EHRPWM_XBAR_INTR_SOURCE (CSL_XBAR_PWMSS1_IRQ_ePWM0INT)
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
/* 全局变量 */
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
/**\brief IP 默认配置*/
静态 CSL_EPwmAppPwmObj_t gAppPwmObj =
{
APP_EHRPWM_OUTPUT 通道、 /* pwmCh */
APP_EHRPWM_INST_BASE_ADDR、 // instAddr *
SoC_EHRPWM_MODULE_FREQ、 /* funcClk */
false, /* enableDeadband */
false, /* enableChopper */
false, /* enableTripzone */
true、 //* enableEventTrigger */
false, /* enableHighResolution */
/* CSL_EpwmAppPwmCfg_t*/
{
/* CSL_EpwmTimebaseCfg_t */
{
APP_EHRPWM_TB_FREQ、 /* TBCLK */
APP_EHRPWM_OUT_FREQ、 /* pwmtbCounterFreqPrd *
CSL_ePWM_TB_COUNTER_DIR_UP_DOWN、 /* tbCntrDirection *
false, /* enableSynchronization */
PWMS_ePWM_TBCTL_PHSDIR_COUNT_DOWN、// cntDirAfterSync *
0U、 /* phsCountAfterSync *
PWMS_ePWM_TBCTL_SYNCOSEL_EPWMXSYNC /* syncOutSrc *
}、
/* CSL_EpwmCounterCmpCfg_t */
{
APP_EHRPWM_COMPA_VAL、 /* cmpAValue */
APP_EHRPWM_COMPA_VAL //* cmpBValue *
}、
/* CSL_EpwmAqActionCfg_t */
{
CSL_ePWM_AQ_ACT_DONOTHING、 //零操作*/
CSL_ePWM_AQ_ACT_DONOTHING、 /* prdAction *
CSL_ePWM_AQ_ACT_HIGH、 /* cmpAUpAction *
CSL_ePWM_AQ_ACT_LOW、 /* cmpADownAction *
CSL_ePWM_AQ_ACT_HIGH、 /* cmpBUpAction */
CSL_ePWM_AQ_ACT_LOW /* cmpBDownAction *
}、
/* CSL_EpwmDeadbandCfg_t */
{
CSL_ePWM_DB_IN_MODE_A_RED_A_FED、 /* InputMode *
CSL_ePWM_DB_OUT_MODE_BYPASS、 // outputMode *
CSL_ePWM_DB_POL_SEL_ACTV_HIGH、 /* polaritySelect *
0U、 /* risingEdgeDelay *
0U /* FallingEdgeDelay */
}、
/* CSL_EpwmChopperCfg_t */
{
CSL_ePWM_HCS_Duty_cycle_PERC_12PNT5、 /* dutyCycle */
CSL_ePWM_HCS_CLK_FREQ_DIV_By_1、 // clkFrequency *
CSL_ePWM_HCS_OSHT_WIDTH_1XSYSOUT_BY_8 /* Shotscope PulseWidth *
}、
/* CSL_EpwmTripzoneCfg_t */
{
CSL_ePWM_TZ_TRIP_ACT_DO _nITH、/* tripAction *
CSL_ePWM_TZ_EVENT_Oe_SHOT、 // tripEvtType *
0U、 /* trippin */
false /* enableTripIntr */
}、
/* CSL_EpwmEtCfg_t */
{
CSL_ePWM_ET_INTR_EVT_CNT_EQ_ZRO、 /* InEvtSource *
CSL_ePWM_ET_INTR_PERIOD_FIRST_EVT /* INPrd */
}
}
};
静态易失性 uint32_t gNumIsr = 0U;
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
/* 内部函数声明 */
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *
静态空 AppPwmIntrISR (空*句柄);
静态空 CSL_epwmAppPwmCfg (CSL_EpwmAppPwmObj_t * pObj);
静态空 EpwmAppTimebaseModuleCfg (uint32_t baseAddr、
uint32_t pwmFuncClk、
CSL_EpwmTimebaseCfg_t * pTbCfg);
静态空 EpwmAppCounterComparatorCfg (uint32_t baseAddr、
cSL_EpwmCounterCmpCfg_t * pCcCfg);
静态空 padConfig_prcmEnable (void);
/*********
* 全局变量
秘书长的报告
*
void chains_showMainMenu (char * main_menu);
void chains_showSystemSettingsMenu();
void chains_menuReearViewPanoramaRun();
chains_ctrl gChains_usecaseCfg;
/**
秘书长的报告
*\brief 菜单设置显示字符串。
秘书长的报告
*
char gChains_menuUseCases[]={
"\r\n "
"\r\n Vision SDK 用例、"
"\r\n ------------------------ "
"\r\n 1:单摄像头用例"
"\r\n 2:多摄像头 LVDS 用例"
"\r\n 3:AVB RX 用例、(仅限 TDA2x 和 TDA2Ex)"
"\r\n 4:双显示用例、(仅限 TDA2x EVM)"
"\r\n 5:ISS 用例、(仅限 TDA3x)"
"\r\n 6:TDA2x 立体声用例"
#ifdef uC_network_Rx_TX
"\r\n 7:网络 RX/TX 用例"
#endif
#ifdef radar_include
"\r\n 9:雷达用例"
#endif
"\r\n A:其他测试"
#ifdef OpenCL_include
"\r\n b:OpenCL 用例(仅限 TDA2x EVM)"
#endif
#ifdef OPENVX_INCLUDE
"\r\n c:OPENVX 用例"
#endif
#if defined (uC_REAR_View_Panorama_tda3xx)
"\r\n D:后视全景用例"
#endif
#ifdef build_ADAM_CAR
"\r\n e:Adam CAR 使用案例"
#endif
#ifdef uC_tidl
"\r\n f:TIDL 文件 I/O 用例"
#endif
#ifdef uC_semSeg
"\r\n g:语义分割用例"
#endif
"\r\n "
"\r\n s:系统设置"
"\r\n "
"\r\n x:退出"
"\r\n "
"\r\n 输入选项:"
"\r\n "
};
/**
秘书长的报告
*\brief 运行时菜单字符串。
秘书长的报告
*
char gChains_runTimeMenu[]={
"\r\n "
"\r\n======================================== "
"\r\n 链运行时菜单"
"\r\n======================================== "
"\r\n "
"\r\n 0:停止链"
"\r\n "
"\r\n 1:更改显示通道(仅支持4CH LVDS + Mosaic 用例)"
"\r\n "
"\r\n p:打印性能统计数据"
"\r\n "
"\r\n 输入选项:"
"\r\n "
};
/**
秘书长的报告
*
*\볲 튪 Main call for usecase selection and configuration
*
* chains_main 从 main_ipu1_0.c 的 main 中调用。
* 这是用例选择的入口点。
* 执行板、UART LCD 初始化和演示选择。
* 它会在 while 循环中等待、直到演示/用例结束触发
*
*\param arg0 [in] 默认值
*
*\param arg1 [在] 默认值
*
秘书长的报告
*
void chains_main (UArg0、UArgarg1)
{
ChainCommon_Init();
Chain _Ctrl_Init (&gChains_usecaseCfg);
/******** 为 PWM 添加了********* /
CSL_EpwmAppPwmObj_t *pObj =&gAppPwmObj;
/*为 UART 和 PWM 执行 PAD 配置和 PRCM 启用*/
padConfig_prcmEnable();
/*为 PWM 子系统内的 ePWM 模块启用时钟。 *
csl_epwmClockEnable (pObj->instAddr);
/* ePWM 通道配置*/
CSL_epwmAppPwmCfg (pObj);
/*等待 ISR 计数*/
while (gNumIsr < APP_RUN_TIME_ISRCOUNT);
/********* 为 PWM 添加了******** /
#IF 定义(TDA2EX_ETHSRV_Board)
/*
*对于 ETH SRV 板、默认情况下摄像头电源处于打开状态、因此请将其关闭。
*用例支持摄像机启动功能。
*
ChainCommon_StopCaptureDevice (chains_capture_SRC_Trulate_AVB_CAM);
#endif
#ifdef TDA3XX_family_BUILD
#ifdef uC_FAST_BOOT_ISS_CAPTURE_ISP_simcop_PD_display
if (System_isFastBootEnabled())
{
gChains_usecaseCfg.displayType = chains_display_type_lcd_10_inch;
gChains_usecaseCfg.captureSrc = SHARINS_CAPTURE_SRC_AR0140BAYER_PARALLEL;
gChains_usecaseCfg.ispOpMode = ISSM2MISP_LINK_OPMODE_2PASS WDR;
gChains_usecaseCfg.issLdcEnable = 0;
gChains_usecaseCfg.issVtnfEnable = 0;
if (bsp_platformIsTda3xxFamilyBuild())
{
chains_fastBootIssIspSimcop_PD_Display (&gChains_usecaseCfg);
}
其他
{
VPS_printf ("###不能运行用例。 此平台不支持 Usecase 或"
" 在 Rules.make 中检查 FAST_BOOT_INCLUDE \n");
}
}
否则(System_isSrvFastBootEnabled())
{
gChains_usecaseCfg.captureSrc = ARINS_CAPTURE_SRC_UB960_IMI;
strncpy()
gChains_usecaseCfg.sensorName、
SENSOR_OmniVISION_OV10640_IMI、
ISS_SENSORS_MAX_NAME);
连锁酒店
gChains_usecaseCfg、
算法_链接_SRV_输出_3D_LDC);
}
其他
定义了#elif (uC_iss_mult_capt_isp_dewarp_3dsv_tda3xx)
if (System_isSrvFastBootEnabled())
{
gChains_usecaseCfg.captureSrc = ARINS_CAPTURE_SRC_UB960_IMI;
strncpy()
gChains_usecaseCfg.sensorName、
SENSOR_OmniVISION_OV10640_IMI、
ISS_SENSORS_MAX_NAME);
连锁酒店
gChains_usecaseCfg、
算法_链接_SRV_输出_3D_LDC);
}
其他
#endif
#endif
{
#ifdef chains_disable_get_char
链条_menuMainRun ('n');
#endif
{
字符 ch;
Bool Done (Bool 完成);
DONE = false;
while (!done)
{
Chain _showMainMenu (gChains_menuUseCase);
CH = chains_readChar ();
vps_printf ("\r\n");
开关(通道)
{
案例"1":
链条_menuSingleCameraRun();
中断;
案例"2":
chains_menuMultiCameraLvdsRun();
中断;
#ifdef AVB_INCLUDE
案例"3":
if (Utils_netIsNetworkEnabled ())
{
chains_menuAvbRxRun();
}
其他
{
VPS_printf ("###构建中未启用网络、重建\
NDK_PROC_TO_USE_=的二进制文件 在 Rules.make 中\n");
}
中断;
#endif
案例"4":
chains_menuDualDisplayRun();
中断;
案例"5":
chains_menuIssRun();
中断;
案例"6":
chains_menuStereoRun();
中断;
#ifdef uC_network_Rx_TX
案例"7":
chains_menuNetworkRxTxRun();
中断;
#endif
#ifdef radar_include
案例"9":
{
void chains_radarMain (chains_ctrl * chainsCfg);
Chain _radarMain (&G) Chains_usecaseCfg;
}
中断;
#endif
案例"A":
链条_menuTestMiscRun();
中断;
#ifdef OpenCL_include
情况"b":
chains_menuOpenCLRun();
中断;
#endif
#ifdef OPENVX_INCLUDE
案例'c':
案例"C":
chains_menuOpenVXRun();
中断;
#endif
#if defined (uC_REAR_View_Panorama_tda3xx)
案例"d":
链条_menuRearViewPanoramaRun();
中断;
#endif
#ifdef build_ADAM_CAR
案例"e":
{
void chains_adamCardemoMain (chains_ctrl * chainsCfg);
链条_ amadamCardoMain (&G) Chains_usecaseCfg;
}
中断;
#endif
#ifdef uC_tidl
案例'f':
案例"F":
chanis_tidl (&gChains_usecaseCfg);
中断;
#endif
#ifdef uC_semSeg
案例"G":
案例"G":
chanis_semSeg (&gChains_usecaseCfg);
中断;
#endif
案例"S":
案例"S":
chains_showSystemSettingsMenu();
中断;
案例"x":
案例"X":
DONE = true;
中断;
}
}
}
}
ChainCommon_deInit();
}
静态空 AppPwmIntrISR (空*句柄)
{
uint16_t status = CSL_epwmEtIntraStatus (APP_EHRPWM_INST_BASE_ADDR);
CSL_epwmEtIntrClear (APP_EHRPWM_INST_BASE_ADDR);
gNumIsr++;
返回;
}
/**
*\brief 此 API 用于配置 ePWM 模块
*
*\param pObj 指向 ePWM 对象数据结构的指针。
*
静态空 CSL_epwmAppPwmCfg (CSL_EpwmAppPwmObj_t *对象)
{
uint32_t baseAddr = pObj->instAddr;
uint32_t pwmCh = pObj->pwmCh;
uint32_t pwmFuncClk = pObj->funcClk;
CSL_EpwmAppPwmCfg_t *pPwmCfg =&pObj->pwmCfg;
/*配置时基子模块*/
EpwmAppTimebaseModuleCfg (baseAddr、pwmFuncClk、&pwmCfg->tbCfg);
/*计数器比较器子模块配置*/
EpwmAppCounterComparatorCfg (baseAddr、&pwmCfg->ccCfg);
/*配置操作限定符*/
csl_epwmAqActionOnOutputCfg (baseAddr、pwmCh、&pwmCfg->aqCfg);
/*死区子模块配置*/
if (true =pObj->enableDeadband)
{
/*启用和配置死区子模块*/
csl_epwmDeadbandCfg (baseAddr、&pwmCfg->dbcfg);
}
其他
{
/*旁路死区子模块*/
CSL_epwmDeadBandBypass (baseAddr);
}
/*斩波器子模块配置*/
if (true =pObj->enableChopper)
{
/*配置斩波器子-模块*/
csl_epwmChopperCfg (baseAddr、&pwmCfg->chpCfg);
/*启用斩波器*/
CSL_epwmChopperEnable (baseAddr、true);
}
其他
{
/*禁用斩波器*/
CSL_epwmChopperEnable (baseAddr、false);
}
/*跳匣区域子模块配置*/
if (true =pObj->enableTripZone)
{
/*配置行程操作*/
CSL_epwmTzTriggerTripAction (
baseAddr、CSL_ePWM_TZ_TRIP_ACT_HIGH、pwmCh);
/*启用跳闸事件*/
CSL_epwmTzTripEventEnable()
baseAddr、pwmCfg->tzCfg.tripEvtType、pwmCfg->tzCfg.trippin);
}
其他
{
/*禁用跳闸区域事件处理并忽略所有跳闸区域事件*/
CSL_epwmTzTripEventDisable (
baseAddr、cSL_ePWM_TZ_EVENT_Oe_Shot、pPwmCfg->tzCfg.trippin);
CSL_epwmTzTripEventDisable (
baseAddr、cSL_ePWM_TZ_EVENT_CYCLE、pwmCfg->tzCfg.trippin);
}
/*事件触发器子-模块配置*/
if (true =pObj->enableEventTrigger)
{
/*配置事件触发器处理*/
CSL_epwmEtIntraCfg (
baseAddr、pPwmCfg->etCfg.intrEvtSource、pPwmCfg->etCfg.intrPrd);
CSL_epwmEtIntraEnable (baseAddr);
}
其他
{
/*禁用事件触发中断*/
CSL_epwmEtIntraDisable (baseAddr);
}
/**
*仅 PWM A 通道支持高分辨率功能。 IF 通道
*是然后继续进行高分辨率处理。
*
IF (CSL_ePWM_OUTPUT CH_A == pwmCh)
{
if (true =pObj->enableHighResolution)
{
/*配置高分辨率功能*/
CSL_epwmHighResolutionCfg (
baseAddr、
pPwmCfg->hrCfg.delayBusSelect、
pPwmCfg->hrCfg.delayMode);
IF (CSL_EPWM_HR_DELAY_BUS_SEL_CMPAHR =>=
pwmCfg->hrCfg.delayBusSelect)
{
/*负载比较器 A 高分辨率计数器值*/
CSL_epwmHrLoadCmpAHrValue (
baseAddr、
pwmCfg->hrCfg.cmpAHighResVal、
CSL_ePWM_HR_REG_ACT_LOAD_CNT_ZRO_PULSE);
}
else /* CSL_ePWM_HR_DELAY_BUS_SEL_TBPHSHR */
{
/*负载时基相高分辨率值*/
CSL_epwmHrLoadTbPhaseHrValue (
baseAddr、pwmCfg->hrCfg.tbPhaseHighResVal);
}
}
其他
{
/*禁用高分辨率功能*/
CSL_epwmHighResolutionDisable (baseAddr);
}
}
返回;
}
/**
*\brief 此 API 配置 Timebase 子模块。
*
使用 的 PWMSS 实例的*\param baseAddr 基址
*\param pwmFuncClk PWM 功能时钟值、单位为 Hz
*\param pTbCfg 指向时基子模块配置的指针
* 数据结构
*
静态空 EpwmAppTimebaseModuleCfg (uint32_t baseAddr、
uint32_t pwmFuncClk、
cSL_EpwmTimebaseCfg_t * pTbCfg)
{
/*配置时基时钟*/
CSL_epwmTbTimebaseClkCfg (baseAddr、pTbCfg->TBCLK、pwmFuncClk);
/*配置 PWM 时基计数器频率和方向*/
CSL_epwmTbPwmFreqCfg (
baseAddr、
pTbCfg->TBCLK、
pTbCfg->pwmtbCounterFreqPrd、
pTbCfg->tbCntrDirection、
CSL_ePWM_SHAD_REG_CTRL_ENABLE);
if (true =pTbCfg->enableSynchronization)
{
/*启用同步*/
CSL_epwmTbSyncEnable (
baseAddr、pTbCfg->phsCountAfterSync、pTbCfg->cntDirAfterSync);
}
其他
{
/*禁用同步*/
CSL_epwmTbSyncDisable (baseAddr);
}
/*配置同步输出信号*/
csl_epwmTbSetSyncOutMode (baseAddr、pTbCfg->syncOutSrc);
/*配置仿真行为*/
CSL_epwmTbSetEmulationMode (baseAddr、ePWM_TB_EMU_MODE_FREE_run);
返回;
}
/**
*\brief 此 API 配置计数器比较器子模块。
*
使用 的 PWMSS 实例的*\param baseAddr 基址
*\param pCcCfg 指向计数器比较器子模块的指针
* 配置数据结构
*
静态空 EpwmAppCounterComparatorCfg (uint32_t baseAddr、
CSL_EpwmCounterCmpCfg_t * pCcCfg)
{
/*计数器比较器 A 配置*/
CSL_epwmCounterComparatorCfg (
baseAddr、
CSL_ePWM_CC_CMP_A、
pCccfg->cmpAValue、
CSL_ePWM_SHAD_REG_CTRL_ENABLE、
CSL_ePWM_CC_CMP_LOAD_MODE_CNT_EQ_ZERO、
true);
/*计数器比较器 B 配置*/
CSL_epwmCounterComparatorCfg (
baseAddr、
CSL_ePWM_CC_CMP_B、
pCccfg->cmpBValue、
CSL_ePWM_SHAD_REG_CTRL_ENABLE、
CSL_ePWM_CC_CMP_LOAD_MODE_CNT_EQ_ZERO、
true);
返回;
}
静态空 padConfig_prcmEnable (空)
{
#IF 已定义(SOC_TDA3XX)||已定义(SOC_DRA78x)
/* UART 焊盘配置*/
/* PWM 焊盘配置- GPMC_BEN0 -> EHRPWM1A */
HW_WR_REG32 (
SoC_CORE_PAD_IO_REGISTER+CTRL_CORE_PAD_IO_GPMC_BEN0、0x00000004);
#endif
/*为 PWMSS1启用 PRCM */
HW_WR_REG32 (SOC_L4PER_CM_CORE_BASE + CM_L4PER2_PWMSS1_CLKCTRL、0x2);
while ((HW_RD_REG32 (SOC_L4PER_CM_CORE_BASE +)
CM_L4PER2_PWMSS1_CLKCTRL)&(0x00030000)!= 0x0);
PWMSS1模块的/*时基时钟*/
HW_WR_FIELD32 (
SoC_CTRL_MODULE_CORE_CORE_REGISTER_BASE + CTRL_CORE_CONTRAL_IO_2、
CTRL_CORE_CONTRAL_IO_2_PWMSS1_TBCLKEN、
1);
/* Xbar 配置*/
CSL_xbarIrqConfigure(.
APP_EHRPWM_XBAR_CPU、APP_EHRPWM_XBAR_INST、APP_EHRPWM_XBAR_INTR_SOURCE);
/*为 PWM 周期启用周期性中断*/
// intc_Init();
INTC_IntEnable (APP_EHRPWM_INT);
/*注册 ISR */
INTC_IntRegister (APP_EHRPWM_INT、(IntuncPtr) AppPwmIntrISR、0);
INTC_IntPrioritySet (APP_EHRPWM_INT、1、0);
INTC_SystemEnable (APP_EHRPWM_INT);
返回;
}