事の起こり
ARMな基板はたくさん持っているが、
- 小さい(DIP40ピン)
- ブレッドボードで使える
- USBが付いている
- 安い
といった点があり、買ってみた。(2010/8/21)
参考URL
丁度次のサイトを発見したところだった。
- マイコン徹底入門
- CPU ベンダーSTMicroelectronics
複数ボードへの対応
「マイコン徹底入門」では、複数のCPUボードに対して共通のサンプルコードが使えるように、
CPUボードごとに設定ファイルを用意している。マクロでポート番号などを切り替える仕掛けだ。
/lib/platform/STBee_mini.h
が STBee mini 用のファイル。
リンカスクリプトとスタートアップルーチン
「マイコン徹底入門」の環境では、以下の場所にある。
| /ld/128_20_dfu.ld | リンカスクリプト |
| /lib/Startup/startup_stm32f10x_md_nortos.s | スタートアップルーチン |
128_20_dfu.ld とは、「ROM 128KB, RAM 20kB, プログラムの書き込みに DFU を使う」
という意味。
一方、startup_stm32f10x_md_nortos.s のほうはというと、
md はおそらく Middle Dencity の略、
nortos は FreeRtos を使わない版、
という意味だろう。
割り込みの設定
割り込みに関係するファイル
| startup_stm32f10x_md_nortos.s | 割り込みベクタの定義 |
| stm32f10x_it.h | 割り込みハンドラのプロトタイプ宣言 |
| stm32f10x_it.c | 割り込みハンドラの定義 |
「マイコン徹底入門」の環境では、割り込みハンドラ名は、スタートアップルーチンに書かれている。スタートアップルーチン内に割り込みベクタテーブルの設定があり、そこに割り込みハンドラ名が定義されている。
この名前の関数を書くと、割り込みハンドラとみなされるようだ。
STBee mini の場合、
/lib/Startup/startup_stm32f10x_md_nortos.s
というファイルであり、
/****************************************************************************** * * The minimal vector table for a Cortex M3. Note that the proper constructs * must be placed on this to ensure that it ends up at physical address * 0x0000.0000. * ******************************************************************************/ .section .isr_vector,"a",%progbits .type g_pfnVectors, %object .size g_pfnVectors, .-g_pfnVectors
g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word MemManage_Handler
.word BusFault_Handler
.word UsageFault_Handler
.word 0
.word 0
.word 0
.word 0
.word SVC_Handler
.word DebugMon_Handler
.word 0
.word PendSV_Handler
.word SysTick_Handler
.word WWDG_IRQHandler
.word PVD_IRQHandler
.word TAMPER_IRQHandler
.word RTC_IRQHandler
.word FLASH_IRQHandler
.word RCC_IRQHandler
.word EXTI0_IRQHandler
.word EXTI1_IRQHandler
.word EXTI2_IRQHandler
.word EXTI3_IRQHandler
.word EXTI4_IRQHandler
.word DMA1_Channel1_IRQHandler
.word DMA1_Channel2_IRQHandler
.word DMA1_Channel3_IRQHandler
.word DMA1_Channel4_IRQHandler
.word DMA1_Channel5_IRQHandler
.word DMA1_Channel6_IRQHandler
.word DMA1_Channel7_IRQHandler
.word ADC1_2_IRQHandler
.word USB_HP_CAN1_TX_IRQHandler
.word USB_LP_CAN1_RX0_IRQHandler
.word CAN1_RX1_IRQHandler
.word CAN1_SCE_IRQHandler
.word EXTI9_5_IRQHandler
.word TIM1_BRK_IRQHandler
.word TIM1_UP_IRQHandler
.word TIM1_TRG_COM_IRQHandler
.word TIM1_CC_IRQHandler
.word TIM2_IRQHandler
.word TIM3_IRQHandler
.word TIM4_IRQHandler
.word I2C1_EV_IRQHandler
.word I2C1_ER_IRQHandler
.word I2C2_EV_IRQHandler
.word I2C2_ER_IRQHandler
.word SPI1_IRQHandler
.word SPI2_IRQHandler
.word USART1_IRQHandler
.word USART2_IRQHandler
.word USART3_IRQHandler
.word EXTI15_10_IRQHandler
.word RTCAlarm_IRQHandler
.word USBWakeUp_IRQHandler
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word BootRAM /* @0x108. This is for boot in RAM mode for
STM32F10x Medium Density devices. */
となっている。
ペリフェラル
周辺機器の使い方。
STBee mini タイマ
なんといっても一番使う!
STBee mini ADC?
いろんなセンサをつなぐため。