90天精通Psim仿真--经典实战教程--第10天 Simcode DSP28335 LED控制

PSIM (Power Simulation) 是一款电力电子和电机控制仿真软件,而DSP28335是德州仪器(TI)的一款数字信号处理器(DSP)。如果你想要在PSIM的SimCoder环境中为DSP28335生成LED闪烁的代码,遵循以下步骤:

  1. 打开PSIM并创建模型

    • 首先,在PSIM中创建一个电路模型,该模型应包括DSP28335模块和你想要控制的LED模块。
    • 连接DSP的输出引脚到LED的驱动电路,以便DSP可以控制LED的开关。

  1. 配置DSP模块

    • 在PSIM中双击DSP28335模块以打开其属性窗口。
    • 配置DSP的时钟、内存和其他相关设置。

    • 设置时钟:

    • 配置输出IO

    • 配置方波

    • 配置零阶保持器

    • 配置数字输出

    • 添加测量

    • 仿真查看结果

  2. 编写或生成代码

    • SimCoder通常允许你使用C语言编写代码,这些代码将在仿真期间运行在DSP模块上。
    • 对于LED闪烁,你可能需要设置一个定时器中断,并在中断服务程序中切换LED的状态。
  3. 实例代码

/*********************************************************************************
// This code is created by SimCoder Version 2022c0.16 for F2833x Hardware Target
//
// SimCoder is copyright by Powersim Inc., 2009-2021
//
// Date: April 20, 2024 10:11:57
**********************************************************************************/
#include	<math.h>
#include	"PS_bios.h"
typedef float DefaultType;
#define	GetCurTime() PS_GetSysTimer()
#define iif(a, b, c) ((a) ? (b) : (c))
#define	PWM_IN_CHECK	// To lower PWM value setting time, comment out this line if PWM duty cycle values are strictly limited in the range.






interrupt void Task();


const Uint16 PSD_CpuClock = 150;  // MHz
extern	DefaultType	fGblVin;






DefaultType	fGblVin = 0;
interrupt void Task()
{
	DefaultType	fZOH1, fVSQ1;

	PS_MaskIntr(M__INT13);

	{
		static DefaultType wt = 1.0 - ((-90) / 360.);
		static DefaultType dwt = 555 * 1.0 / 10000;
		fVSQ1 = (wt < 0.5) ? ((1) + (0)) : (0);
		wt += dwt;
		if (wt >= 1.0)
			wt -= 1.0;
	}
	fZOH1 = fVSQ1;
#ifdef	_DEBUG
	fGblVin = fZOH1;
#endif
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 0) : PS_SetDigitOutBitA((Uint32)1 << 0);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 1) : PS_SetDigitOutBitA((Uint32)1 << 1);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 2) : PS_SetDigitOutBitA((Uint32)1 << 2);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 6) : PS_SetDigitOutBitA((Uint32)1 << 6);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 7) : PS_SetDigitOutBitA((Uint32)1 << 7);
	PS_ExitTimer1Intr();
}


void Initialize(void)
{
	PS_SysInit(30, 10);
	PS_InitTimer(0, 0);

	// Set initial states for those GPIO/AIO output ports.
	PS_ClearDigitOutBitA((Uint32)1 << 0);	// Reset GPIO0
	PS_ClearDigitOutBitA((Uint32)1 << 1);	// Reset GPIO1
	PS_ClearDigitOutBitA((Uint32)1 << 2);	// Reset GPIO2
	PS_ClearDigitOutBitA((Uint32)1 << 6);	// Reset GPIO6
	PS_ClearDigitOutBitA((Uint32)1 << 7);	// Reset GPIO7
	PS_InitDigitOut(0);
	PS_InitDigitOut(1);
	PS_InitDigitOut(2);
	PS_InitDigitOut(6);
	PS_InitDigitOut(7);

	PS_InitTimer(1,15000L);
	PS_SetTimerIntrVector(1, Task);
	PS_StartStopPwmClock(2);	// start Timer1
}


void main()
{
	Initialize();
	PS_EnableIntr();   // Enable Global interrupt INTM
	PS_EnableDbgm();
	for (;;) {
	}
}

5.开发板运行效果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可芯智能科技研究院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值