事の起こり
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?
いろんなセンサをつなぐため。