#define PCONP           ((volatile unsigned int *)(0xE01FC0C4))
#define PCLKSEL0        ((volatile unsigned int *)(0xE01FC1A8))
#define GPIO_PINSEL3	((volatile unsigned int *)(0xE002C00C))
#define PWM1MCR         ((volatile unsigned int *)(0xE0018014))
#define PWM1PCR         ((volatile unsigned int *)(0xE001804C))
#define PWM1MR0         ((volatile unsigned int *)(0xE0018018))
#define PWM1MR1         ((volatile unsigned int *)(0xE001801C))
#define PWM1TCR         ((volatile unsigned int *)(0xE0018004))

void init_pwm()
{
  // PWMW[ɓdƃNbN
  *PCONP = *PCONP | (1 << 6);
  *PCLKSEL0 = *PCLKSEL0 | (1 << 12); // PCLK_PWM1[13:12] <= "01"

  // o̓s̃[hZbg
  *GPIO_PINSEL3 = *GPIO_PINSEL3 | (2 << 4); // PINSEL3[5:4] <= "10"

  // PWMW[̏ݒs
  *PWM1MCR = *PWM1MCR | (1 << 1); // }b`EWX^0ƓȂ烊Zbg
  *PWM1PCR = *PWM1PCR | (1 << 9); // PWMENA1
  *PWM1MR0 = 1000;
  *PWM1MR1 = 400;

  // PWMW[̓Jn
  *PWM1TCR = *PWM1TCR | (1 << 0) | (1 << 3);
}
