|
/*------------------------stm8-初體驗(yàn)--------------------*/
1.在之前請(qǐng)先按照好st visual develop,接著再安裝COSMIC軟件
2.打開(kāi)STVD,選擇菜單欄Tools-Options對(duì)話框,找到Toolset標(biāo)簽,Toolset中選擇“STM8S COSMIC”,Root
path中選擇COSMIC路徑,默認(rèn)是“CXSTM8_16K”路徑。(建議安裝COSMIC破解版)
3.運(yùn)行ST Visual Develop(STVD) 集成開(kāi)發(fā)環(huán)境,通過(guò)菜單欄Files -> New WorkSpace我們可以新建一個(gè)新的
STM8工程。
4.在彈出的“New WorkSpace”對(duì)話框中,我們可以STVD支持的集中工程模版類型。這里我們選擇使用Create
workspace and project”。(WorkSpace是Project的管理平臺(tái),允許在一個(gè)WorkSpace中出現(xiàn)多個(gè)Project,通
過(guò)設(shè)定我們可以選擇當(dāng)前的活動(dòng)項(xiàng)目。)
5.輸入當(dāng)前要建立的項(xiàng)目名稱,并且可以根據(jù)應(yīng)用的需要通過(guò)“Project location”來(lái)選擇更改WorkSpace存放
路徑。因這里介紹的例程我們需要支持的MCU平臺(tái)是STM8系列,C語(yǔ)言使用COSMIC,因此我們還需要對(duì)使用的
Toolchain進(jìn)行選擇。
6.選擇工程使用的MCU型號(hào)。
在對(duì)話框中我們可以看到當(dāng)選中一個(gè)MCU型號(hào),在右邊的工具列表清單中會(huì)顯示調(diào)試工具支持狀態(tài),綠色表示工
具可以支持,灰色表示不支持。這里僅是提供調(diào)試或仿真支持,不表示編程支持,具體編程支持需要通過(guò)STVP
編程軟件確認(rèn)。
這樣一個(gè)最小的應(yīng)用工程模版STVD就幫我們自動(dòng)產(chǎn)生了,IDE界面右邊的項(xiàng)目目錄樹(shù)中,我們可以看到STVD對(duì)工
程自動(dòng)增加了兩個(gè)文件,一個(gè)是main.c文件,一個(gè)是stm8_interrupt_vector.c文件。后者提供了STM8所有的中
斷入口函數(shù)的地址表,以及用于各種不同類型外設(shè)中斷函數(shù)名稱申明。
7.生成的2個(gè)文件中沒(méi)有對(duì)器件頭文件包含,就需要自己手動(dòng)添加。如果是沒(méi)有使用庫(kù)函數(shù)的話,仔細(xì)看下中斷
向量表都是NonHandledInterrupt,比如開(kāi)啟外部中斷1,將第二個(gè)NonHandledInterrupt修改為T(mén)LI_Interrupt
,然后定義TLI_Interrupt函數(shù)。如下:
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 */
};
|
|