大家好、
我正在做一个简单的解决方案。 在这里、我想进行 PWM 更改计时周期、并在终端中打印当前计时周期。 我的代码基于 hetPwm 和 adcDisplay 示例。 代码工作正常、但我希望将 dutyCicle 值打印为十进制。
以下是我的代码:
/*包含文件*/
#include "sys_common.h"
/*用户代码开始(1)*/
#include "het.h"
#define TIZE1 8
uint8 text1[TIZE1]={'r'、'n'、't'、'1't、
't'0'、't'0'、't'2'、't't's'、't'0'、't'ze2'、't't's's'e2'、't's's's'、't't's's'e2'、't's's's's'、'e2'、't's's's's's's's's's's's'、'e2'、'e'、's's's's's's's's's'e'、'e'、'e'、's's's's'e'、'e'、's's's's'e'、
's
void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度);
void sciDisplayData (scibase_t * sci、uint8 *文本、uint32长度);
void wait (uint32时间);
//*用户代码结束*
////**@fn void main (void)
*@brief Application main 函数
*@注意默认情况下,此函数为空。
*
*此函数在启动后调用。
*用户可以使用此函数来实现应用程序。
//
//*用户代码开始(2)*/
uint32时间;
uint32 dutyCle;
float64 period_us;
uint32值;
//用户代码结束*/
int main (void)
{
//*用户代码开始(3)*/
sciInit();
sciDisplayText (scilinREG、&text1[0]、tisdutye0
= Zetus);sciIneiinteiC1000 = Zeth;
时间= 1000.0;
setPwm (dutyCleum、period_us);
while (1)
{
sciDisplayText (scilinREG、&text2[0]、TIZE2);
dutyCley=0;
值= dutyCicle;
while (dutyCley<=100)
{
sciDisplayText (scilinREG、&text3[0]、TsIZE3);
sciDisplayData (scilinREG、(uint8*)&value、4);
值= dutyCley;
setPwm (dutyCley, period_us);
//__delay_cycles (50000000);
dutyCley+=5;
wait (0xFFFFFF);
}
pwmStop (hetRAM1、pwm0);
sciDisplayText (scilinREG、&text4[0]、TMSIZE4);
Wait (0xFFFFFFF);
}
//*用户代码结束*
/*用户代码开始(4)*/
void setPwm (uint32 dutyCicle、float64 period_us)
{
hetInit ();
hetGNSIUs *、void setPwm 信号
周期= dutymr.pwt;duty 信号周期
= rmwmwmrh;pwmwmrandit 信号= durt;pwmwmwmwmwmwmrands = durt 信号周期
pwmSetDuty (hetRAM1、pwm0、pwmSignal.dDuty);
pwmStart (hetRAM1、pwm0);
}
void DisplayText (scii_t
* sci、uint8 *文本、uint32长度){while (length-)(scilini-);}void DisplayText (sci_t * sci+* 8 *、uint8 *、uint32 length);}uinte+= 0xuinte+、uint8 * wi+、uinte+ 1、uinte+ 1、uinte+= 0xinte+ 1、uinteUSt 2、uinte+ 1、uinte+ 1、uinte+ 1、uintex 2、uinte+ 1、uint
#if (__little_endian__==1)||(__little_ENDIAN__==1)
text = text +(length -1);
#endif
while (length---)
{
#if (__little_endian__==1)||(__little_ENDIAN_= 0x1+;
txt=
~ 0xtf0 =
~ 1+;text= 0t1+= t1+(txt+)*t1+= 0xt1+(txt1);ttxt+= t1+= t0t1+= t1+(txt1)
if (txt<=0x9)
{
txt +=0x30;
}
否则 if (txt > 0x9 && txt < 0xF)
{
txt +=0x37;
}
否则
{
txt = 0x30;
}
if (txt1 <= 0x9)
{
txt1 +=0x30;
}
否则((txt1 > 0x9)&&(txt1 <= 0x30
);}txt1 = 0x31;}= 0x31
while ((scilinREG->FLR & 0x4)== 4);//等待直至繁忙*/
sciSendByte (scilinREG、txt1);//发送文本
*/ while (scilinREG->FLR & 0x4)=4);//
等待直至繁忙*/ sciINTByte (scilinREG->Fr & 0x4);//*
等待时间};while
(uidt.32)*等待时间(uidt.out)
我的教师建议它可以是终端配置。 但我尝试了三种不同的终端软件、没有成功。
欢迎提出任何建议。