1.我用定时器在定时器中断服务子程序里边翻转I/O,我寄存器设置的是周期0.1微秒,但是可能语句需要机器周期,示波器观察只有2M左右。
2.我用delay_us函数试了一下。最小只能是delay_us(0.1),也就是0.1微秒翻转一下I/O,频率也是5M,可能语句需要机器周期,示波器观察也只有1M左右。
3.我用PWM可以输出5M的方波,但是我想只输出4个周期方波,不知道怎么设置。
谢谢各位
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.
1.我用定时器在定时器中断服务子程序里边翻转I/O,我寄存器设置的是周期0.1微秒,但是可能语句需要机器周期,示波器观察只有2M左右。
2.我用delay_us函数试了一下。最小只能是delay_us(0.1),也就是0.1微秒翻转一下I/O,频率也是5M,可能语句需要机器周期,示波器观察也只有1M左右。
3.我用PWM可以输出5M的方波,但是我想只输出4个周期方波,不知道怎么设置。
谢谢各位
中断本身是要压栈和出栈的,因此事需要指令周期的,0.1us 中断CPU时响应不过来的,发4个PWM波是否有时序要求吗,可以放主循环里做吗?如果可以的话,你可以用NOP和翻转语句来做,这样可以实现精确的5M,也可以控制只发4个波。
是你测试方法有问题,程序是在RAM执行的吗?
你直接由下面方法试一下:
GpioDataRegs.GPATOGGLE.bit.GPIO0 =1;
asm( " NOP " );
GpioDataRegs.GPATOGGLE.bit.GPIO0 =1;
asm( " NOP " );
GpioDataRegs.GPATOGGLE.bit.GPIO0 =1;
asm( " NOP " );