相信很多朋友在stm8的開發中很多是使用官方的韌體庫來進行開發的,這樣開發速度快,並且程式不易出錯。
前面的部落格講到了如何在stvd中新建乙個新的stm8l151的工程,最後新建成功後,出現下面的工程目錄:
在stm8_interrupt_vector.c 檔案中,**如下:
/* basic interrupt vector table for stm8 devices
*/typedef void @far (*interrupt_handler_t)(void);
struct interrupt_vector ;
@far @interrupt void nonhandledinterrupt (void)
extern void _stext(); /* startup routine */
struct interrupt_vector const _vectab = , /* reset */
, /* trap */
, /* irq0 */
, /* irq1 */
, /* irq2 */
, /* irq3 */
, /* irq4 */
, /* irq5 */
, /* irq6 */
, /* irq7 */
, /* irq8 */
, /* irq9 */
, /* irq10 */
, /* irq11 */
, /* irq12 */
, /* irq13 */
, /* irq14 */
, /* irq15 */
, /* irq16 */
, /* irq17 */
, /* irq18 */
, /* irq19 */
, /* irq20 */
, /* irq21 */
, /* irq22 */
, /* irq23 */
, /* irq24 */
, /* irq25 */
, /* irq26 */
, /* irq27 */
, /* irq28 */
, /* irq29 */
};
**中的中斷向量表需要我們自己修改,至於如何修改在stm8l151的官方韌體庫里有,下面看一下官方韌體庫里的stm8_interrupt_vector.c檔案,**如下:
/* basic interrupt vector table for stm8 devices
*/#include "stm8l15x_it.h"
typedef void @far (*interrupt_handler_t)(void);
struct interrupt_vector ;
struct interrupt_vector const _vectab = , /* reset */
, /* trap - software interrupt */
, /* reserved */
, /* irq1 - flash interrupt */
, /* irq2 - dma1 channel0 and channel1 interrupt */
, /* irq3 - dma1 channel2 and channel3 interrupt */
, /* irq4 - rtc/ css on lse interrupt */
, /* irq5 - external it porte/f interrupt /pvd interrupt*/
, /* irq6 - external it portb / portg interrupt */
, /* irq7 - external it portd / porth interrupt */
, /* irq8 - external it pin0 interrupt */
, /* irq9 - external it pin1 interrupt */
, /* irq10 - external it pin2 interrupt */
, /* irq11 - external it pin3 interrupt */
, /* irq12 - external it pin4 interrupt */
, /* irq13 - external it pin5 interrupt */
, /* irq14 - external it pin6 interrupt */
, /* irq15 - external it pin7 interrupt */
, /* irq16 - lcd / aes interrupt */
, /* irq17 - clk switch/css interrupt/ tim1 break interrupt / dac */
, /* irq18 - adc1 and comparator interrupt */
, /* irq19 - tim2 update/overflow/trigger/break / usart2 tx interrupt */
, /* irq20 - tim2 capture/compare / usart2 rx interrupt */
, /* irq21 - tim3 update/overflow/trigger/break / usart3 tx interrupt */
, /* irq22 - tim3 capture/compare /usart3 rx interrupt */
, /* irq23 - tim1 update/overflow/trigger/commutation interrupt */
, /* irq24 - tim1 capture/compare interrupt */
, /* irq25 - tim4 update/overflow/trigger interrupt */
, /* irq26 - spi1 interrupt */
, /* irq27 - usart1 tx / tim5 update/overflow/trigger/break interrupt */
, /* irq28 - usart1 rx / tim1 capture/compare interrupt */
, /* irq29 - i2c1 / spi2 interrupt */
};
直接將這個檔案替換原來的檔案即可。
另外需要將韌體庫里的libraries的inc、src資料夾的檔案放到工程裡面。還有stm8l15x_conf.h、stm8l15x_it.c、stm8l15x_it.h放到工程裡。並配置stm8l15x_conf.h裡的mcu選擇,最後的工程檔案架構大概如下:
到這裡,就可以使用官方的韌體庫來進行開發了。
STVD 新建STM8L151工程
最近從iar轉到stvd來進行stm8l151的開發,看了一下如何配置stvd的開發環境以及如何新建工程,在這個就做個備忘吧。1.先安裝stvd 和 cosmic c編譯器,cosmic 編譯器有8k的編譯限制,但據官網上說好像可以免費到32k了。2.新建一 個workspace,3.填寫works...
STM8L151G6U6 之實現低功耗
先簡單介紹下stm8l151g6u6,該mcu是stm8l超低功耗系列,與152系列相比只是少了lcd的功能,官方手冊介紹的各個低功耗模式的功耗如下 其低功耗效能還是很不錯的,在本文中是基於活躍停機低功耗模式來測試的。要實現stm8l151g6的低功耗,主要可以注意以下幾點 1.不需要用到的外設一律...
STM8L151G6U6 之實現低功耗RTC喚醒
所謂低功耗產品,一般來講就是在大多數時間讓mcu進入睡眠模式,在有資料更新時喚醒,將資料顯示或者傳送上報。對於中斷型別的,可以採用中斷直接喚醒mcu的方式,而對於溫濕度之類的感測器,只能採用定時喚醒,然後取樣並比較判斷當前的值是否傳送變化,然後顯示或者上報。如果使用了顯示屏,wifi 藍芽等模組,則...