大家好、
我正在做一个简单的解决方案。 在这里、我想进行 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)
我的教师建议它可以是终端配置。 但我尝试了三种不同的终端软件、没有成功。
欢迎提出任何建议。