STM32 cubemx 에서 무원 버저 출력 PWM 웨이브 를 설정하고 음악 코드 를 두 마리 호랑이
                                            
 2935 단어  STM32
                    
} tone_t;
#define DEF_DELAY 350 static tone_t tiger_notation[]= { {DO, DEF_DELAY}, {RE, DEF_DELAY}, {MI, DEF_DELAY}, {DO, DEF_DELAY*2},
{DO, DEF_DELAY},
{RE, DEF_DELAY},
{MI, DEF_DELAY},
            {DO, DEF_DELAY*2},
            {MI, DEF_DELAY},
            {FA, DEF_DELAY},
            {SO, DEF_DELAY*2},
            {MI, DEF_DELAY},
            {FA, DEF_DELAY},
            {SO, DEF_DELAY*2},
            {SO, DEF_DELAY},
            {LA, DEF_DELAY},
            {SO, DEF_DELAY},
            {FA, DEF_DELAY},
            {MI, DEF_DELAY},
            {DO, DEF_DELAY*2},
            {SO, DEF_DELAY},
            {LA, DEF_DELAY},
            {SO, DEF_DELAY},
            {FA, DEF_DELAY},
            {MI, DEF_DELAY},
            {DO, DEF_DELAY*2},
            {RE, DEF_DELAY},
            {SO, DEF_DELAY},
            {DO, DEF_DELAY*2},
            {RE, DEF_DELAY},
            {SO, DEF_DELAY},
            {DO, DEF_DELAY*2},
  }; #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) int turn_passive_beep(int cmd, int freq) { int range; if(OFF == cmd) { HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2) ; } else { if(freq<1000 || freq>5000) { printf(“Beep set invalid PWM frequency[%d]!”, freq); return -1; }
    /* Set PWM clock: 80MHz/169=500KHz */
                    htim2.Init.Prescaler = 160-1;
    /* Set PWM frequency */
                    range=500000/freq;
                    htim2.Init.Period = range;
                    if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
                    {
                            Error_Handler();
                    }
    /* Set PWM duty 50% */
                    TIM_OC_InitTypeDef sConfigOC;
                    sConfigOC.OCMode = TIM_OCMODE_PWM1;
                    sConfigOC.Pulse = (htim2.Init.Period/3);
                    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
                    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
                    if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
                    {
                            Error_Handler();
                    }
                    HAL_TIM_MspPostInit(&htim2);
                    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
}
    return 0;
  } static inline void play_tone(int tone, int delay) { if(toneRI1) return ;
            turn_passive_beep(ON, tone_freq[tone]);
            Delay_ms(delay);
turn_passive_beep(OFF, 0);
  } void play_tiger(void) { int i;
for(i=0; i  }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
STM32CubeIDE를 사용해 보자 How To STM32CubeIDE 일본어판 (11) I2C를 사용해 보자 4 Si7020+ssd1306편STM32CubeIDE를 사용해 보자 How To STM32CubeIDE 일본어판 (10) I2C를 사용해 보자 3 ssd1306편의 계속입니다. Nucleo 보드와 Si7020, SSD1306을 연결합니다. 이번에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.