STBee mini

Last-modified: 2010-09-04 (土) 02:13:55

ARM

事の起こり

ARMな基板はたくさん持っているが、

  • 小さい(DIP40ピン)
  • ブレッドボードで使える
  • USBが付いている
  • 安い
    といった点があり、買ってみた。(2010/8/21)

参考URL

丁度次のサイトを発見したところだった。

複数ボードへの対応

「マイコン徹底入門」では、複数の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?

いろんなセンサをつなぐため。