gpt4 book ai didi

c - 我不明白如何设置 PWM 信号的周期

转载 作者:行者123 更新时间:2023-11-30 14:39:54 29 4
gpt4 key购买 nike

我想创建一个 PWM 信号。我希望频率接近 38 kHz。我的理论计算周期是 26.3 微秒。所以我选择26微秒。我可以观察我的信号。

但我不明白我的代码如何正常工作:)

(我的时钟频率是1MHz,所以我的时钟信号是1微秒)

if((P1IN & BIT3)!=BIT3)  { // if button is pressed

for(i=0;i<692;i++){ // pwm signal's duration is 9ms
P2OUT^=0x01; // switch from 1 to 0 or vice versa
__delay_cycles(4);
}
P2OUT=0x00;
}

我的计算是:

i <692,i++,P2OUT^=0x01;//总共 3 个周期

__delay_cycles(4);//总共4个周期

所以 4+3=7。但我很困惑,因为我认为应该是 13 而不是 7

(这是我的信号) https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/166/f0fd36b0_2D00_bebd_2D00_4a31_2D00_b564_2D00_98962cf4749e-_2800_1_2900_.jpg

最佳答案

您无法根据 C 或 C++ 代码计算周期。您需要检查程序编译期间生成的汇编文件。根据您的编译器(您没有提到),您可以传递一些编译器参数/开关来要求编译器将生成的汇编文件保留在适当的位置,以便您检查生成的汇编指令。但基本上 for 循环会有一个跳转指令,可能需要 2/3 个周期,而你没有计算它。

我建议您稍后从微 Controller 数据表中检查每条指令的周期数。

关于c - 我不明白如何设置 PWM 信号的周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858139/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com