STM32 + HAL だいぶわかってきた [つぶやき]
Nucleo32F303K8をmbedとして使わずにSTM32開発ボードとしていじり中。
mbedとして使う気は無いのでSB16,SB18のジャンパを剥がしました。邪魔なので。
とりあえずHALライブラリを使って、
・UARTでPCと通信(ポーリング、割り込み、DMA送信)
・SPIでMMC互換カード(uSD)からファイルread(ポーリング、DMA)
・DACで音声出力(タイマ割り込み、DMA)
の使い方がだいたいわかった。はず。
HALライブラリだけど、、、
ライブラリのコードを読まないと使い方がわからん気がするんだけどそんなもんなんかな。
使い方さえわかればあっさり動くので便利といえば便利なのだけれど。
そんでコードを読んでいると冗長コードがすげぃ多くて気になって仕方がなかったり。
実際、UART、SPI、DAC、DMA、FatFsを組み込んでwavファイルを再生するだけで
Flashサイズ30kBとなかなかに素敵なバイナリサイズに。
F303K8で64kBのFlashがあるのでまあいいじゃんといえばいいのかもだけど(消費電力を気にしなければ)。
関数ごとのサイズを調べてみると、くそでかいのは
・HAL_RCC_OscConfig
・HAL_RCC_ClockConfig
・UART_SetConfig
・HAL_DMA_IRQHandler
・HAL_SPI_TransmitReceive
・HAL_SPI_TransmitReceive_DMA
あたりなので、このへんだけ書き直せばだいぶサイズを減らせるのかなあとか。
いっそHALライブラリを参考にしてレジスタを直で叩くかという気もするけれど、
ポータビリティが無くなるし全部をやるのは苦労の割にそんなに効果がなさそうなので
ポイントを絞って削るほうが良さげ。
mbedとして使う気は無いのでSB16,SB18のジャンパを剥がしました。邪魔なので。
とりあえずHALライブラリを使って、
・UARTでPCと通信(ポーリング、割り込み、DMA送信)
・SPIでMMC互換カード(uSD)からファイルread(ポーリング、DMA)
・DACで音声出力(タイマ割り込み、DMA)
の使い方がだいたいわかった。はず。
HALライブラリだけど、、、
ライブラリのコードを読まないと使い方がわからん気がするんだけどそんなもんなんかな。
使い方さえわかればあっさり動くので便利といえば便利なのだけれど。
そんでコードを読んでいると冗長コードがすげぃ多くて気になって仕方がなかったり。
実際、UART、SPI、DAC、DMA、FatFsを組み込んでwavファイルを再生するだけで
Flashサイズ30kBとなかなかに素敵なバイナリサイズに。
F303K8で64kBのFlashがあるのでまあいいじゃんといえばいいのかもだけど(消費電力を気にしなければ)。
関数ごとのサイズを調べてみると、くそでかいのは
・HAL_RCC_OscConfig
・HAL_RCC_ClockConfig
・UART_SetConfig
・HAL_DMA_IRQHandler
・HAL_SPI_TransmitReceive
・HAL_SPI_TransmitReceive_DMA
あたりなので、このへんだけ書き直せばだいぶサイズを減らせるのかなあとか。
いっそHALライブラリを参考にしてレジスタを直で叩くかという気もするけれど、
ポータビリティが無くなるし全部をやるのは苦労の割にそんなに効果がなさそうなので
ポイントを絞って削るほうが良さげ。
2016-12-11 09:33
nice!(0)
コメント(0)
トラックバック(0)
コメント 0