投稿

4月, 2022の投稿を表示しています

STM32での圧電スピーカーの使い方

イメージ
前回はArduinoで圧電スピーカーを使ってみたので、今度はSTM32で使っていきたい。 CubeMXでピンの設定を行う 圧電スピーカーを使うので「A0」のアナログピンを使うことにした。 設定は「PA0」を「TIM2_CH1」に設定する。 TimersからTIM2の設定を変更する。 ModeのChannel1を「PWM Generation CH1」に設定する。 ConfigrationのParameter SettingsのPrescalerを「84」に設定する。 設定が終わったら、保存を行いコードを更新する。 main.cでプログラムを書いていく Arduinoのtone()関数をSTM32ようにモドキ物を作成してみた。 TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; int period; void periodSet(int p){ htim2.Init.Period = p; sConfigOC.Pulse = p/2; HAL_TIM_Base_Init(&htim2); HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1); } void tone(int freq,int ms){ long peri; peri=1000000L/(long)freq; period = (uint16_t)peri; //htim2.Init.Period = Hz; //HAL_TIM_Base_Init(&htim3); periodSet(period); HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); HAL_Delay(ms); } void noTone(int ms){ HAL_TIM_PWM_Stop(&htim2,TIM_CHANNEL_1); HAL_Delay(ms); } MX_TIM2_Initの関数にある下の二行をコメントアウトしておく。 TIM_MasterConfigTypeDef