1. 簡介
本單元將說明利用東芝所提供的範例程式,搭配 IAR 的 IDE 開發工具,快速的建立專案所需的 GPIO 應用。
初次使用開發板且為了容易上手了解 GPIO 的運作,這邊將會以 LED 的明暗控制做示範,
測試程式是否可正常運行與了解初步的設定方法。
所需工具:
IAR Embedded Workbench for Arm version 8.50.5
M3H 開發板
Micro USB cable
2. 開發板線路圖與 Jump 設定:
★ 本單元測試LED0 ~ LED3,pin 之定義:
★ 線路圖:
★ Jump 設定:
3. 實作過程
3.1 啟動 IAR Embedded Workbench for Arm version 8.50.5。
3.2 開啟 GPIO_LED.eww 專案,資料夾路徑為 Project >> Examples >> GPIO >> GPIO_LED。
範例程式的下載在上一單元【TOSHIBA Industrial and HA 專欄介紹】40nm MCU - M3H 暨開發板簡介 有詳細介紹,忘記了請在回顧一下唷。
3.3 進入主程式 main.c 可以看到範例程式是採用按壓按鍵的方式點亮 LED,首先 disable 不需要的程式。
本單元將說明利用東芝所提供的範例程式,搭配 IAR 的 IDE 開發工具,快速的建立專案所需的 GPIO 應用。
初次使用開發板且為了容易上手了解 GPIO 的運作,這邊將會以 LED 的明暗控制做示範,
測試程式是否可正常運行與了解初步的設定方法。
所需工具:
IAR Embedded Workbench for Arm version 8.50.5
M3H 開發板
Micro USB cable
2. 開發板線路圖與 Jump 設定:
★ 本單元測試LED0 ~ LED3,pin 之定義:
★ 線路圖:
★ Jump 設定:
3. 實作過程
3.1 啟動 IAR Embedded Workbench for Arm version 8.50.5。
3.2 開啟 GPIO_LED.eww 專案,資料夾路徑為 Project >> Examples >> GPIO >> GPIO_LED。
範例程式的下載在上一單元【TOSHIBA Industrial and HA 專欄介紹】40nm MCU - M3H 暨開發板簡介 有詳細介紹,忘記了請在回顧一下唷。
3.3 進入主程式 main.c 可以看到範例程式是採用按壓按鍵的方式點亮 LED,首先 disable 不需要的程式。
void irq_systick(void)
{
uint32_t i;
// led_t *p_led = MAIN_NULL;
gpio_pinstate_t val = GPIO_PIN_SET;
if(delay_10ms_counter >0)
{
delay_10ms_counter --;
}
/* Check SW Push(= GPIO_PIN_RESET) */
for (i=0; i < (uint32_t)BSP_PSW_MAX; i++)
{
if(gpio_read_bit(&instance.gpio_obj, bsp_get_gpio_group_psw((BSPPsw)i), bsp_get_gpio_num_psw((BSPPsw)i), GPIO_Mode_DATA, &val) != TXZ_ERROR)
{
}
#if 0 /* Disable */
if(val == GPIO_PIN_RESET){
p_led = &instance.led[i];
led_turn_on(p_led);
}else{
p_led = &instance.led[i];
led_turn_off(p_led);
}
#endif
}
} 3.4 接下來做一下小修改,讓 LED 間隔 1 秒持續產生明暗的行為。
int main(void)
{
uint32_t period; // Period for SYSTICK
/*----------------------*/
/* BSP initialize */
/*----------------------*/
bsp_initialize();
/*----------------------*/
/* Initialize */
/*----------------------*/
/*--- application ---*/
if (application_initialize() != TXZ_SUCCESS)
{
}
/*----------------------*/
/* Main Processing */
/*----------------------*/
/* Period for 10msec SYSTICK */
SystemCoreClockUpdate();
period = SystemCoreClock / 100;
if (SysTick_Config(period )) /* systick interrupt cycle setting */
{
}
NVIC_EnableIRQ(SysTick_IRQn); /* systick interrupt enable */
led_all_state(OFF);
while (1){
/*----------------------*/
/*LED ON/OFF Test */
/*----------------------*/
led_all_state(ON);
delay_10ms(100); //1 sec
led_all_state(OFF);
delay_10ms(100); //1 sec
}
}
3.5 然後在工具列選擇 Project >> Rebuild A11 來編譯此專案。
3.6 將 micro USB 線對接電腦和開發板上的 CN1。
3.7 在工具列選擇點選 Project >> Download and Debug。
3.8 此時,程式會停在 main( ),請點選 Debug >> Go 開始程式執行,這時候開發板上的 LED0 ~ LED3 開始間隔 1 秒做閃爍。
參考資料
[1] TT_M3HQ User Manual_en.pdf
[2] Reference Manual - Input Output Ports (PORT-M3H(2)) [Aug,2019].pdf
評論