16bit resolution PWM wave player with SD card, super lite version.
Dependencies: mbed DirectSPI FastPWM
Supported boards (confirmed):
Nucleo-F030R8
Nucleo-L152RE
Nucleo-F401RE
Nucleo-F411RE
Only compilation is OK (unchecked, but may work):
Nucleo-L073RZ
Nucleo-F334R8
Nucleo-F303RE
Nucleo-F429ZI
Nucleo-F446RE
Nucleo-F446ZE
Nucleo-L476RG
Supported SD card:
SDSC/SDHC card,
FAT16 and FAT32.
(1) At first, format SD card using SD Card Formatter
https://www.sdcard.org/downloads/formatter_4/index.html
(2) Copy PCM wav files to the SD card.
Supported file:
PCM wave file that have file extension ".wav" on root directory.
16bit/8bit, fs(sampling rate)=32kHz,44.1kHz,48kHz.
Stereo/Mono.
Hardware setting:
Refer to the file port_setting.txt
PWM output port:
Left upper(Hi) PWM 8bit out: PB_5 (TM3_CH2)
Right upper(Hi) PWM 8bit out: PB4 (TM3_CH1)
Left lower(Low) PWM 8bit out: PC_9 (TM3_CH4)
Right lower(Low) PWM 8bit out: PC_8 (TM3_CH3)
USER_BUTTON: PC_13(default button)
Next song: One click in Play mode.
Pause : Push long time .
Play : One click from Pause.
Diff: wave_player_main.cpp
- Revision:
- 5:4aa4cc29d5ef
- Parent:
- 0:9a5c2fb0d96f
- Child:
- 6:d9ea630e1ba5
diff -r 8c1772c05eaf -r 4aa4cc29d5ef wave_player_main.cpp --- a/wave_player_main.cpp Thu Jan 17 11:32:35 2019 +0000 +++ b/wave_player_main.cpp Sat Jan 19 17:31:23 2019 +0900 @@ -38,9 +38,8 @@ Period Timer Interrupt **********************/ /* HAL callback for PWM Timer Intrrupt * */ -void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) -{ - if( htim->Instance == TIM_PWM ) { +void pwmPeriodIntr( void ){ + if(TIM3->SR & TIM_SR_UIF){ #if TEST_PORT_ENABLE test_port =1; #endif @@ -116,6 +115,8 @@ #if TEST_PORT_ENABLE test_port =0; #endif + + TIM3->SR &= (~TIM_SR_UIF); } }