|
/*------------------------stm8-初體驗--------------------*/
1.在之前請先按照好st visual develop,接著再安裝COSMIC軟件
2.打開STVD,選擇菜單欄Tools-Options對話框,找到Toolset標簽,Toolset中選擇“STM8S COSMIC”,Root
path中選擇COSMIC路徑,默認是“CXSTM8_16K”路徑。(建議安裝COSMIC破解版)
3.運行ST Visual Develop(STVD) 集成開發環境,通過菜單欄Files -> New WorkSpace我們可以新建一個新的
STM8工程。
4.在彈出的“New WorkSpace”對話框中,我們可以STVD支持的集中工程模版類型。這里我們選擇使用Create
workspace and project”。(WorkSpace是Project的管理平臺,允許在一個WorkSpace中出現多個Project,通
過設定我們可以選擇當前的活動項目。)
5.輸入當前要建立的項目名稱,并且可以根據應用的需要通過“Project location”來選擇更改WorkSpace存放
路徑。因這里介紹的例程我們需要支持的MCU平臺是STM8系列,C語言使用COSMIC,因此我們還需要對使用的
Toolchain進行選擇。
6.選擇工程使用的MCU型號。
在對話框中我們可以看到當選中一個MCU型號,在右邊的工具列表清單中會顯示調試工具支持狀態,綠色表示工
具可以支持,灰色表示不支持。這里僅是提供調試或仿真支持,不表示編程支持,具體編程支持需要通過STVP
編程軟件確認。
這樣一個最小的應用工程模版STVD就幫我們自動產生了,IDE界面右邊的項目目錄樹中,我們可以看到STVD對工
程自動增加了兩個文件,一個是main.c文件,一個是stm8_interrupt_vector.c文件。后者提供了STM8所有的中
斷入口函數的地址表,以及用于各種不同類型外設中斷函數名稱申明。
7.生成的2個文件中沒有對器件頭文件包含,就需要自己手動添加。如果是沒有使用庫函數的話,仔細看下中斷
向量表都是NonHandledInterrupt,比如開啟外部中斷1,將第二個NonHandledInterrupt修改為TLI_Interrupt
,然后定義TLI_Interrupt函數。如下:
struct interrupt_vector const _vectab[] = {
{0x82, (interrupt_handler_t)_stext}, /* reset */
{0x82, NonHandledInterrupt}, /* trap */
{0x82, TLI_Interrupt}, /* irq0 */
{0x82, NonHandledInterrupt}, /* irq1 */
{0x82, NonHandledInterrupt}, /* irq2 */
{0x82, NonHandledInterrupt}, /* irq3 */
{0x82, NonHandledInterrupt}, /* irq4 */
{0x82, NonHandledInterrupt}, /* irq5 */
{0x82, NonHandledInterrupt}, /* irq6 */
{0x82, NonHandledInterrupt}, /* irq7 */
{0x82, NonHandledInterrupt}, /* irq8 */
{0x82, NonHandledInterrupt}, /* irq9 */
{0x82, NonHandledInterrupt}, /* irq10 */
{0x82, NonHandledInterrupt}, /* irq11 */
{0x82, NonHandledInterrupt}, /* irq12 */
{0x82, NonHandledInterrupt}, /* irq13 */
{0x82, NonHandledInterrupt}, /* irq14 */
{0x82, NonHandledInterrupt}, /* irq15 */
{0x82, NonHandledInterrupt}, /* irq16 */
{0x82, NonHandledInterrupt}, /* irq17 */
{0x82, NonHandledInterrupt}, /* irq18 */
{0x82, NonHandledInterrupt}, /* irq19 IIC */
{0x82, NonHandledInterrupt}, /* irq20 */
{0x82, NonHandledInterrupt}, /* irq21 */
{0x82, NonHandledInterrupt}, /* irq22 */
{0x82, NonHandledInterrupt}, /* irq23 */
{0x82, NonHandledInterrupt}, /* irq24 */
{0x82, NonHandledInterrupt}, /* irq25 */
{0x82, NonHandledInterrupt}, /* irq26 */
{0x82, NonHandledInterrupt}, /* irq27 */
{0x82, NonHandledInterrupt}, /* irq28 */
{0x82, NonHandledInterrupt}, /* irq29 */
};
|
|