1. stm32和stm8有啥區別
1,操作不同:用寄存器或者庫的方式編寫,8相對簡單。32較復雜。
2,價格不同:8大部分在10塊以內。32大部分在10塊以上。
3,相關資料不同:8的資料少,可用模塊少。32的資料多,可用模塊多。
(1)stm8sspi程序擴展閱讀:
架構優勢
除新增的功能強化型外設介面外,STM32互連系列還提供與其它STM32微控制器相同的標准介面,這種外設共用性提升了整個產品家族的應用靈活性,使開發人員可以在多個設計中重復使用同一個軟體。
新STM32的標准外設包括10個定時器、兩個12位1-Msample/s 模數轉換器,兩個12位數模轉換器、兩個I2C介面、五個USART介面和三個SPI埠。新產品外設共有12條DMA通道,還有一個CRC計算單元,像其它STM32微控制器一樣,支持96位唯一標識碼。
新系列微控制器還沿續了STM32產品家族的低電壓和節能兩大優點。2.0V到3.6V的工作電壓范圍兼容主流的電池技術,如鋰電池和鎳氫電池,封裝還設有一個電池工作模式專用引腳Vbat。以72MHz頻率從快閃記憶體執行代碼,僅消耗 27mA電流。
低功耗模式共有四種,可將電流消耗降至兩微安。從低功耗模式快速啟動也同樣節省電能;啟動電路使用STM32內部生成的8MHz信號,將微控制器從停止模式喚醒用時小於6微秒。
2. 求教stm8l將系統時鍾切換到外部晶振
首先看一下 STM8S103K3 的時鍾結構圖,可以幫助你很好的理解。
這里有幾個時鍾,就是圖中標識的時鍾,需要弄清楚一下:
fHSE: 外部高速晶振時鍾,它是由外部晶振產生,大小由外部晶振大小決定,STM8S的外部晶振范圍:1-24M,看圖中的」HSE OSC 1-24M「。
fHSI:內部RC高速時鍾,它是由內部的RC震盪電路產生的,其值16M。但是可以經過後面的分頻器分頻,四個分頻系數可供選擇(1,2,4,8)。註:精準度比外部晶振的要稍差一些。
fMASTER:主時鍾,它是由HSE 或者 HSI提供時鍾,主要功能給外圍設備(peripherals,如I2C,SPI,ADC等)提供時鍾,還有給CPU提供時鍾源。
fCPU:cpu時鍾,它是由fMASTER經過分頻得到,其作用就是給CPU提供時鍾,一個機械周期就是一個fCPU的時鍾周期。
下面是時鍾的源碼部分,可供大家參考。
這里寫了四段程序,分別是:
使用高速內部時鍾(寄存器版)
使用高速內部時鍾(庫函數版)
使用外部時鍾(寄存器版)
使用外部時鍾(庫函數版)
源碼如下,看注釋應該就可以了。
3. STM8S207_UART1串口發送中斷程序
void CLK_INIT(void)
{
CLK_CKDIVR = 0x19; /*HSI/8、CPU = 2/2,1M速度*/
CLK_PCKENR1 = 0x04; /*只開啟uart1的時鍾*/
CLK_PCKENR2 = 0x00; /*打開ADC的時鍾*/
}
void IO_INIT(void)
{
PA_CR1 = 0x00; /*推挽輸出*/
PA_CR2 = 0x00; /*最大輸出為2MHZ,禁止外部中斷*/
PA_DDR |= 0x20; /*PA5為輸出*/
}
void UART1_INIT(void)
{
UART1_BRR2 = 0x00;
UART1_BRR1 = 0x0d; /*2M的Fmaster下9600的波特率*/
UART1_DR = 0xaa;
UART1_CR2 = 0x08; /*發送完寄存器空,發送使能*/
UART1_CR3 = 0x00; /*1個停止位*/
}
#pragma vector = UART1_T_TXE_vector
__interrupt __root void UART1_TX(void)
{
UART1_SR = 0x00;
UART1_DR = 0xaa;
}
只作為參考,希望對您有幫助,謝謝!