Я пытаюсь запустить свою программу PWM на keil для lpc2148. Это имеет 10% рабочий цикл. Однако я вижу сигнал на Port0 (P0.21). Вот мой код. Я вполне уверен, что это правильно.
#include<lpc214x.h>
int main()
{
PINSEL0=0x00000000; // P0.0 to P0.15 pins of PORT0 as GPIO
PINSEL1=0x00000400; // P0.21 Pin of PORT0 as PWM
PINSEL2=0x00000000; // P1.16 to P1.31 pins of PORT1 as GPIO
/*Configure the PLL block and set the CCLK and PCLK at 60 MHz */
PLL0CON=0x01;
PLL0CFG=0x24;
PLL0FEED=0xaa;
PLL0FEED=0x55;
while (!(PLL0STAT & 0x00000400));
PLL0CON=0x03;
PLL0FEED=0xaa;
PLL0FEED=0x55;
VPBDIV=0x01;
/* Setup and initialize the PWM block */
PWMPCR=0x00; // Single Edge PWM Mode
PWMPR=60000-1; // Resolution of PWM is set at 1 mS
PWMMR0=10; // Period of PWM is 10 mS
PWMMR5=1; // Pulse width of PWM5 is 1 mS
PWMMCR= (1<<1); // PWMTC is reset on match with PWMMR0
PWMLER= (1<<5)| (1<<0); // Update Match Registers PWMMR0 and PWMMR5
PWMPCR= (1<<13); // Enable PWM5 output
PWMTCR= (1<<1); // Reset PWM TC and PWM PR
PWMTCR= (1<<0)| (1<<3); // Enable PWM Timer Counters and PWM Mode
//PWMMR5 = 1;
//PWMLER = (1<<5); //Update Latch Enable bit for PWMMR5
}
main()
будет работать до завершения, а затем завершится - что произойдет потом, не определено. Вы должны войти в цикл (возможно, с инструкцией_WFI
для снижения энергопотребления). Ожидать, что время выполнения войдет в цикл при существовании, а не просто сбросить, ненадежно. - person Clifford   schedule 12.03.2021_WFI
- это для Cortex-M - кто знал, что вы все еще можете получить устройства ARM7TDMI ?! - person Clifford   schedule 12.03.2021