這里使用的單片機是stm8s105s6,IDE是使用的IAR for stm8;
1,首先說一下stm8的時鐘:
每一款cup都需要時鐘,才能跑起來,就像小車需要發動機一樣。
stm8的時鐘源有三個,分別是外部晶振/外部時鐘,內部高速RC振蕩器和內部低速RC振蕩器。
1.1 外部晶振和外部時鐘信號(HSE)的不同點是,外部晶振是通過晶體諧振器,兩個負載電容和單片機內部的電路想配合而產生時鐘信號;而外部時鐘信號是一個質量好且穩定的信號直接為單片機提供時鐘。
兩種模式的連接示意圖:
1.2 高速內部RC振蕩器(HSI)
hsi信號由內部16MHZRC振蕩器與一個可編程分頻器(分頻因子從1~8)產生。分頻因子由寄存器CLK_CKDIVR設置決定。精度較低,但是穩定時間短。
注意,啟動的時候,主時鐘源默認為HSI RC時鐘的8分頻。
1.3 低速內部RC振蕩器(LSI)
128khz的內部RC振蕩器LSI產生的時鐘是一個低功耗,低成本的可選主時鐘源。
1.4 HSE設置為主時鐘源
因為此時鐘源精度較高,所以一般設置它為時鐘源,但是單片機啟動時默認為HSI的8分頻作為時鐘源,所以需要程序切換,這里介紹自動切換方法。
具體步驟:
a.設置切換控制寄存器(CLK_SWCR)中的位SWEN,使能切換機制。
b.向主時鐘切換寄存器(CLK_SWR)寫入時鐘源,寄存器CLK_SWCR中的SWBSY被硬件置位,目標源振蕩器啟動,原時鐘源依然被用于驅動內核和外設。一旦目標源穩定,寄存器CLK_SWR中的值將被復制到主時鐘狀態寄存器CLK_CMSR中去。此時SWBSY位被硬件清除,新時鐘源替代舊時鐘源。寄存器CLK_SWCR中的標志位swif被置位,如果SWIFN為1,則會產生一個中斷。
2 IO口寄存器
每一個端口都有一個輸出數據寄存器 (ODR),一個引腳輸入寄存器 (IDR)和一個數據方向寄存器(DDR) ,控制寄存器1(CR1)和控制寄存器2(CR2)用于對輸入/輸出進行配置。任何一個I/O引腳可以通過對DDR,ODR,CR1和CR2寄存器的相應位進行編程來配置。
3 工程模板搭建
3.1 當你安裝好 IAR,在 IAR 安裝的目錄下(stm8inc),你可以找到所有的stm8的頭文件,根據自己的單片機信號選擇,包括的main.c中就可以,stm8不像stm32一樣,還需要添加驅動文件等,它反而和51有點像。
3.2 搭建工程
3.2.1 打開軟件,file-new-workspace,新建工作空間。
3.2.2 project-create new project,新建一個空工程(emply project),保存(最好自己新建一個文件夾放這些東西,方便管理)。
3.2.3 save workspace,保存到工程文件夾下。
3.2.4 右鍵工程,添加一個group,名字自由定義,我是user。
3.2.5 新建一個main.c文件,這里面將是我們寫代碼的地方,保存到工程目錄,然后在右鍵我們建立的組,添加剛剛新建的文件進來。
這里注意,如果我們添加進來的文件不在工程文件夾下,需要設置一下他們的路徑,讓編譯器能找到他們。
【project-options-c/c++ compler-preprocessor-additional include directories:
1、$PROJ_DIR$ :IAR工程目錄。
2、" " 代表根目錄。
3、" . ." 表示返回上一級目錄。
舉例一下:$PROJ_DIR$..LibrariesSTM8S_StdPeriph_Driverinc
】
3.2.6 配置工程 project-options
選擇單片機型號,在General Options --> Target --> Device下選擇
在Debugger 下的 Setup 里的Driver 選擇 ST-LINK
庫配置 General Options- Library Configration:如果需要使用某些標準的庫函數接口(如我們使用的printf and scanf),就需要選擇Full
4 配上代碼,孤獨的小燈閃爍
#include "iostm8s105s6.h"
void delay(unsigned int t);
void main()
{
if(CLK_CMSR!=0XB4)//判斷當前時鐘,如果不是HSE則自動切換成HSE
{
CLK_SWCR|=0X02;//SWEN置1,使能切換
CLK_SWR=0XB4;//目標時鐘源為HSE外部晶振
while((CLK_SWCR&0X08)==0);//等待,直到切換成功,SWIF被置位
CLK_SWCR=0;//清除標志位
}
PG_DDR=0X01;//配置PG0為輸出
PG_CR1=0X01;//配置PG0為推挽輸出
PG_CR2=0X00;//輸出速率=2MHz
while(1)
{
PG_ODR|=0X01;//小燈亮
delay(50000);
PG_ODR&=0XFE;//小燈滅
delay(50000);
}
}
void delay(unsigned int t)
{
while(t--);
}
上一篇:STM8系列單片機開發環境搭建
下一篇:STM8--UART2
推薦閱讀
史海拾趣
FOCI Fiber Optic Communications Inc.公司發展的五個故事
故事一:成立與初創期
FOCI Fiber Optic Communications Inc.(以下簡稱FOCI)成立于1995年,由臺灣工業技術研究院(工研院)的核心團隊創立。這家公司自誕生之初就專注于光纖互連技術的發展,致力于設計、制造和銷售高性能的光纖組件和集成模塊。初創時期,FOCI憑借其對光纖技術的深刻理解和市場需求的敏銳洞察,逐步在市場上站穩腳跟,成為光纖通信領域的一股新興力量。
故事二:技術創新與突破
FOCI在發展過程中,始終將技術創新視為企業發展的核心驅動力。公司不斷投入研發資源,在光纖耦合器、PLC分配器、薄膜粗波分復用/密集波分復用以及多光纖電纜組裝模塊等領域取得了多項技術突破。這些技術創新不僅提升了產品的性能和質量,還大幅降低了生產成本,使得FOCI的產品在市場上更具競爭力。
故事三:與奇景光電的戰略合作
2024年,半導體解決方案無晶圓廠巨頭奇景光電(Himax Technologies)宣布向FOCI投入5.22億新臺幣(折合約為1610萬美元)的資金。這次投資不僅是兩家公司財務合作的結果,更是雙方在技術融合與應用拓展上邁出的重要一步。根據合作協議,FOCI的共封裝光學器件(CPO)與奇景光電的晶圓級光學器件(WLO)將被整合到多芯片模塊中,這些模塊將廣泛應用于高性能計算、云服務器、人工智能等多個領域。
故事四:全球化布局與市場拓展
隨著全球光纖通信市場的快速發展,FOCI積極實施全球化戰略,不斷拓展國際市場。公司通過參加國際展會、建立海外銷售網絡等方式,將高性能的光纖組件和集成模塊帶到了世界各地。特別是在光纖到戶(FTTH)和云計算領域,FOCI的產品因其高效、低成本的特性而廣受歡迎,成功在全球市場占據了一席之地。
故事五:子公司設立與多元化發展
為了進一步拓展業務領域和市場份額,FOCI在國內設立了多家子公司,如中山上詮通信科技有限公司等。這些子公司不僅繼承了FOCI在光纖通信領域的深厚底蘊和技術優勢,還根據當地市場需求進行了產品和服務的本地化調整。同時,FOCI還積極探索多元化發展路徑,涉足光纖高速數據傳輸技術開發設計、研發和咨詢等多個領域,為公司未來的持續發展奠定了堅實基礎。
Cypress公司成立于1982年,總部設在美國加州的San Jose。創業之初,公司專注于高速CMOS SRAM、EEPROM、PAL器件和TTL邏輯器件的設計和開發。這一時期,Cypress通過引入創新的技術和產品設計,在競爭激烈的電子芯片市場中逐漸嶄露頭角。公司憑借對技術的持續投入和積累,為未來的發展奠定了堅實的基礎。
隨著環保意識的提高,DLG Hanbit公司開始注重環保和可持續發展。公司引進了一系列環保設備和技術,減少了生產過程中的污染物排放。同時,公司還積極推廣綠色電子產品,幫助客戶實現節能減排。這種環保理念不僅提升了公司的社會形象,也為公司的可持續發展奠定了基礎。
隨著公司業務的不斷擴大,Dongguan Jingyue Electronics Co Ltd面臨著越來越復雜的供應鏈管理問題。為了降低成本、提高效率,公司決定對供應鏈進行優化。通過引入先進的供應鏈管理軟件和系統,加強與供應商和物流公司的合作,公司成功實現了供應鏈的數字化和智能化管理,提高了整體運營效率。
HI Microwave Technology Limited自2004年在中國成立以來,便以“Hertz Infinite”(赫茲無限)為愿景,致力于將產品范圍擴展至30 KHz至110 GHz+(針對GaAs、HEMT、PHEMT和MMIC基產品)以及220 GHz+(針對毫米波產品和子系統)。這一宏偉愿景不僅為公司指明了發展方向,也激勵著每一位員工不斷追求技術創新和產品卓越。在初創階段,HI Microwave通過引進國際先進的生產設備和技術人才,迅速在微波通信領域站穩腳跟。
Bharat Electronics Ltd(以下簡稱BEL)的創立可追溯到印度硅谷班加羅爾,那里不僅是科技創新的搖籃,也是BEL扎根生長的沃土。自1954年起,BEL便在飛利浦和大盾的支持下成立,初期主要生產ECC81、ECC82、ECC83、EL34等電子管,為國防事業提供關鍵技術支持。其成立之初便與印度國防部緊密合作,成為印度軍工電子領域的領軍企業,為國家的國防安全奠定了堅實的基礎。
這幾天一直沒有在實驗室,宋老師都發話了,昨天下午都已4點還是過去,開始做模型車,用一個晚上的時間,呵呵,把模型書已經裝配完了,雖然這個沒有技術含量,但很有成就感。現在等把幾個芯片買了,在焊上去,就可以軟件編程了。 只有半個月的時間 ...… 查看全部問答∨ |
本人在工程中使用的開關電源,使用中感覺毛刺比較大,一部分電源模塊會導致數字電路不正常工作(換電源模塊或著直流后數字模塊正常),所以想請教一下大俠,我的開關電源的毛刺大嗎?輸出為5v直流。有沒有什么好的方法能夠抑制一下? … 查看全部問答∨ |
求教各位大蝦 DIY鉗形表 小電流信號放大 我現在正在DIY一個鉗形電流表 目標參數是測量mA至十安級電流 傳感器是買的鉗形表表頭 前期測試了表頭的工作曲線 在溫濕度允許范圍內 表頭的線性度比較好 讓我郁悶的是 變比 ...… 查看全部問答∨ |
|
請教:VxWorks文件操作中, cp可以, 但xcopy總是失敗, 什么原因呢? VxWorks文件操作中,cp,rm,mkdir等操作都可以,但xcopy總是失敗,拷貝一個文件后就停止,并且return 0xffffffff,是什么原因呢? … 查看全部問答∨ |
|
Altium Designer Summer 09如何安裝??? 各位大俠好,前段時間我安裝了Altium Designer Summer 09用了還可以,今天重新卸載安裝了但是就是一直顯示 Available License0-Unlicensed!!!!!!!!!!!!有一個Add standalone license file添加了 但是顯示還是無效,從新生成了個也不行! ...… 查看全部問答∨ |
ndis驅動內的DBGPRINT語句在debugview中無法顯示 驅動執行是正確的,但debugview中顯示Buffered packet. can\'t write back :-\\ ,是什么原因?… 查看全部問答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 19:56 編輯 話自動應答器的電路如圖所示。圖中IC2為10秒語音錄放電路SR9G10A,接通電源按下開關S2,便可通過IC2自帶的駐極體話筒錄入你要告訴朋友的話。外出前按下開關Sl,靜態時三極管VTl、VT2組成的復合 ...… 查看全部問答∨ |