顯示具有 STM32 標籤的文章。 顯示所有文章
顯示具有 STM32 標籤的文章。 顯示所有文章

2016年8月18日 星期四

STM32 Flash 之 .icf檔

    在使用Flash功能時,為了確保資料寫入ROM後,下一次燒code到機器時,寫入的資料不希望被清掉,可以修改*.icf檔,IAR會根據這份文件,來避開某段FLASH_SECTOR。

Flash模組的組成

    可由reference manual中找到自己平台的Flash module。


Step 1. 修改*.icf檔

    假設我們需要使用Sector3來存放我們不想被清掉的資料,那我們的*.icf檔的寫法如下。

/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0803FFFF;

define symbol __ICFEDIT_region_ROM1_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM1_end__ = 0x0800BFFF;
define symbol __ICFEDIT_region_ROM2_start__ = 0x08010000;
define symbol __ICFEDIT_region_ROM2_end__   = 0x0803FFFF;

...
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];


define region ROM_region   = mem:[from __ICFEDIT_region_ROM1_start__   to __ICFEDIT_region_ROM1_end__] | mem:[from __ICFEDIT_region_ROM2_start__   to __ICFEDIT_region_ROM2_end__];


    由於Sector3的位置在0x0800C000~0x0800FFFF之間,因此將ROM1_end_ 設定為 0x800C000-1,ROM2_start_設定為0x0800FFFF+1,最後在ROM_region將ROM1跟ROM2照原本的方式設定上去即可。

Step 2.在IDE中載入*.icf檔

1.在Project右鍵選擇【Options...】


2.切到【Linker】頁面,勾選Override default,並將選擇檔案存放路徑。


3.Check the linker map file,看是否有成功linker到載入的檔案。









2016年6月15日 星期三

STM32F4XX USB 透過 Bus Hound 存取 HidRaw Device

本篇參考假濕汀的Blogger,並修改文章中所提供的範例程式,透過Bus Hound監聽軟體來驗證傳輸資料是否正確。

由於原作者範例只能將hidraw中的資料由Device端送至PC端,無法由PC端送資料至Device端,因此這裡將介紹如何解決此問題,由於USB這邊是第一次接觸,還有很多不了解的地方,有問題還請各位前輩可以提出來。

假濕汀的Blogger:
http://iamjustinwang.blogspot.tw/2015/11/stm32f401411-hid-testkeyboard-mouse.html
程式連結:
STM32FXXX_HID

修改部分:

  • usbd_hid_core.c:增加USB_HID_DataOut function





  • USBD_HID_CfgDesc array中需修改項目

原程式中只有一個input Endpoint,因此須改改interface中定義Endpoint的數量。

增加Output Endpoint Descriptor


  • main.c


  • Bus Hound驗證:
    • 1.點選interrupt Out
    • 2.輸入要送至Device端的資料與資料大小
    • 3.點選Run,將資料送出
由上圖可觀察到,送出資料後,讀出hidraw data為PC端所輸入的資料,我們已成功將資料送至Device端。