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.
我正在使用 pb6和 Pb7创建 spwm、但现在无论 我执行什么操作、"即使我正在运行空代码或尝试将设置为0"、引脚始终处于高电平、即使我在调试模式下暂停
我找不到3.3V 和引脚之间的任何直接短路
这是我使用的代码
#include #include #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "driverlib/gpio.h" #include "driverlib/interrupt.h" #include "driverlib/pin_map.h" #include "driverlib/pin_map.h"#include "driverlib/pinctl.26、22、22、42 、22、22、22、22、22、22、22、22、22、22、22、22、22、2、7、22、22、22、22、22、22、20、22、22、22、22、22、22、22、 44、47、49、52、54、57、59、61、64、64、66、69、69、69、69、69、76、76、78、80、83、85、88、90、92、97、99、 101、103、106、108、110、113、115、117、119、121、124、126、128、138、132、134、136、138、140、142、144、146、 148,150,152,154,156,158,160,162,164,166,168,169,171,173,175,177,178,180,182,184,185,187,188,190,192,193 195,196,198,199,201,202,204,205,207,208,209,211,212,213,216,217,219,221,222,223,224,225,226,227 228229230,231,232,233,234,235,236,237,237,238,239,240,240,241,242,243,243,244,244,245,246,246 247,247,247,247,248,248,248,248,249,249,249,249,249,255,255,255,249,249,249,249,249,249,249,249,249,249,249,249,249,249,248,248,248,247,248,248,247, 248,248,248,248,247,247,247,246,246,245,245,244,244,243,243,242,242,241,240,239,238,237,237,236,235,234 233,232,231,230,229,228,227,226,225,224,223,222,221,220,219,216,215,213,212,211,208,207,205,204 202,201,199,198,196,195,193,192,190,188,187,185,184,182,188,178,177,175,173,171,169,168,166,164,162,160 158,156,154,152,150,148,146,144,142,140,138,136,134,132,130,128,126,124,121,119,117,115,113,1108,106 103,101,99,97,94,94,92,90,88,853,80,76,76,73,76,76,76,664,61,59,57,52,49,47,427,44,39,34,32,30, 27、24、22、19、17、15、12、10、7、5、2、1}; int x=0、en=true; long map (long、long、long、 long、long); void PWM0IntHandler (void) { PWMGenIntClear (PWM0_BASE、PWM_GEN_0、PWM_INT_CNT_LOAD); if (++x>311){x=0;en=!en;} if (en=true){ PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、0); PWMPulseWidthSet (PWM0_BASE、PWM_OUT_0、MAP (sinus[x]、1、255、0、535)); } 其他 { PWMPulseWidthSet (PWM0_BASE、PWM_OUT_0、0); PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、MAP (SINUS[x]、1、255、0、535)); } } int main (void) { SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz); SysCtlPWMClockSet (SYSCTL_PWMDIV_1); SysCtlPeripheralEnable (SYSCTL_Periph_PWM0); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); GPIOPinConfigure (GPIO_PB6_M0PWM0); GPIOPinConfigure (GPIO_PB7_M0PWM1); GPIOPinTypePWM (GPIO_PORTB_BASE、GPIO_PIN_6); GPIOPinTypePWM (GPIO_PORTB_BASE、GPIO_PIN_7); PWMGenConfigure (PWM0_BASE、PWM_GEN_0、 PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); //公式:n =(1 / f)* SYSCLK。 PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、535); PWMPulseWidthSet (PWM0_BASE、PWM_OUT_0、64); PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、66); PWMOutputInvert (PWM0_BASE、PWM_OUT_0_bit|PWM_OUT_1_BIT、TRUE); IntMasterEnable(); PWMIntEnable (PWM0_BASE、PWM_INT_GEN_0); PWMGenIntTrigEnable (PWM0_BASE、PWM_GEN_0、PWM_INT_CNT_LOAD); IntEnable (INT_PWM0_0); IntEnable (INT_PWM0_1); PWMOutputState (PWM0_BASE、PWM_OUT_0_BIT | PWM_OUT_1_BIT、TRUE); PWMGenEnable (PWM0_BASE、PWM_GEN_0); while (1) { } } 长映射(长 x、长 IN_min、长 IN_max、长 OUT_min、长 OUT_max) { return (x - IN_min)*(OUT_max - OUT_min)/(IN_max - IN_min)+ OUT_min; }
谢谢
Samir、您好!
您是否已从电路板上移除电阻器并确认 PB6和 PB7仍然是高电平?
电阻器之前
Pb7 -高电平
Pb6 -低电平
pf0 -高电平
pd0 -低电平
PD1 -高电平
电阻 器之后
Pb7 -高电平
Pb6 -低电平
pf0 -高电平
pd0 -低电平
PD1 -低电平
我将使用此代码进行测试
#include #include #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "driverlib/gpio.h" #include "driverlib/interrupt.h" #include "driverlib/pin_map.h" #include "driverlib/pwmp.h" #include "driverlib/sysctl.h" (void main) { SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz); while (1) { } }
Samir、您好!
关于 PF0、我认为可能是您的 LaunchPad 仍然存在 NMI 默认值。 请参阅我们关于常见问题的文章的第一项: https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/t/374640
这将解释解锁端口的步骤、请尝试将其应用于 LaunchPad、并查看 PF0引脚是否恢复正常功能。
我还没有发现任何其他关于 PB7问题的报告。 有关该引脚的所有博文都是由于零欧姆电阻器(这就是为什么我坚持将其移除的原因、我们已经多次看到它会导致问题)您是否可以在移除影响 PB7的零欧姆电阻器后尝试在 LaunchPad 上运行代码? 在应用这些更改的情况下运行代码时、您能否提供有关引脚之间观察到的行为的详细信息? 例如、PB6上的 PWM 信号是否正确、PB7在整个过程中保持高电平?
像往常一样,在这种情况下,“亲吻”,“拯救!”
我可以建议您、"将两个(可疑)引脚编程到 GPIO 输出-然后切换每个引脚。" 这种大多数 "基本测试" 应快速/轻松地确认 "引脚的功能"。
实际上、"PF0"在2个(可怕的) NMI 引脚中-并且必须先解锁、 然后再强制它进入其(备用)功能。 (GPIO 输出)
公司/我也是如此-对 PB7失败的回忆很少-除了" 应邀"之外-这些破坏性的"鼠疫病者"的无理延续。 很可能是由于"强制但不必要的互连!"、引脚损坏了!
作为一种更简单的替代方案-启用您 的"继续运行基于 PWM 的项目"-您是否可以"切换到另一对 PWM 引脚?" (我相信3个单独的 PWM 发生器引脚组-所有引脚组都出现在(深思熟虑) LPAD 的接头上。)
这种方法应该 使您能够"继续进行"、即使您之前记下的引脚已损坏、也是如此! 希望之前的引脚/引脚的"丢失"不会成为可能。 (一个托架..)