由于最近要用到stm8,所以這幾天就開始學習stm8,但發現網上資料太少,所以在這里我就把一些對stm8的疑惑解答后的知識整理了一下,也算是做了一個小總結
對于開發環境,有ST TOOLSET 、 COSMIC 和IAR 這三個常用的,因為我用過IAR開發stm32,所以IAR是我的首選,雖然網上很多人說IAR for STM8代碼的優化不如COSMIC。
看了一下開發環境的配置,不是很復雜,我把這三個工具的配置方法發上來供初學者下載查看:
http://download.csdn.net/detail/hzt12345hf/7666017
說一下IAR使用的注意事項,基本的配置環境就不說了,
iar和cosmic所使用的頭文件名字有所不同,iar用的都是像如“iostm8s103k3.h“的形式。
關于中斷向量怎么用,聲明一個中斷程序格式如下:
#pragma vector=0x02
__interrupt void interrupt_handler(void)
{
//你的代碼
}
#pragma vector =0x02 :
等號前面的是 IAR 中斷向量指令,等號后面的數字代表中斷向量編號,中斷向量編號可以自己算也可以從你的頭文件里面找,基本上都放在頭文件倒數的位置,大約4000行的位置,自己算的話就是 (中斷向量地址 - 0x0008000)/4 就是中斷向量號了。
由于我從51單片機轉過來的,所以對stm32/8的庫函數不是很喜歡,因為懂的人一看就知道是什么,不懂得看著真心麻煩,雖然很通用但降低了可讀性(個人感覺),所以stm8果斷放棄庫函數,和51一樣寫寄存器。
當然,在51里,對一個io口置1則為高電平,置0則為低電平,所以我也很好奇stm8是否有這個功能,由于資料太少,找了很久也沒找到,還是阿莫電子的朋友一語中的,就是使用形如PC_ODR_ODR0的宏定義,在頭文件里是這么定義的:
這就好像stm32里利用結構體,通過將地址轉換為結構體的方式使得寄存器可以通過訪問結構體的變量來進行寄存器的訪問,提供給大家幾個網址,也是討論stm8利用位控制,其中還有別的方式,另外哪種方式比較適合自定義,利用的是共用體訪問:
http://www.amobbs.com/forum.php?mod=viewthread&tid=5588812&pid=7705619&page=1&extra=page%3D1#pid7705619
http://bbs.21ic.com/icview-556542-1-1.html
再說一下定時器,由于本人也是剛解除stm8,所以很有些東西不夠透徹,只是因為stm8的定時器功能太過強大。
最簡單定時器初始化套路基本如下:
void Init_TIM1(void)
{
TIM1_CR1 = 0x00; //向上的計數方向,中斷計數不停
TIM1_IER = 0x01; //允許更新中斷
TIM1_PSCRH = 0x3e; //進行16000分頻
TIM1_PSCRL = 0x80;
TIM1_ARRH = 0x03; //1000個周期產生更新中斷 16 / 16000 * 1000 = 1
TIM1_ARRL = 0xe8;
TIM1_CR1 |=0x01; //使能中斷
}
先是使能TIMx_IER的第一位,使定時器可以產生中斷,同時設置計數方向,然后設置定時器的分頻器,頻率為 主時鐘的頻率/分頻數 ,16位高級定時器 用TIMx_PSCRH和TIMx_PSCRL 共同決定分頻數,16為通用定時器利用TIMx_PSCR的前4位作為2的冪,讓 主時鐘頻率/2^TIMx_PSCR 計算出頻率,8位基本定時器 同16位通用定時器大體類似,只不過用的是TIMx_PSCR的前3位,然后設置溢出值,16通用和16高級定時器都有TIMx_ARRH和TIMx_ARRL兩個寄存器來記錄溢出值,而且賦值是必須先給TIMx_ARRH賦值然后再給TIMx_ARRL賦值,否則不能自動重載計數值。然后使能中斷。
最重要的一點也是最容易忘了的一點是還要打開總中斷,語句是匯編語言:
asm("rim");/* enable interrupts */
關閉總中斷的是
asm("sim");/* disable interrupts */
我還發現一個問題,像如STM8s003k3 這種型號的單片機,在它的頭文件里是沒有TIM4_SR1這個寄存器的,而是TIM4_SR,所以如果要清除TIM4的中斷標志,要使用TIM4_SR = 0x00來實現
暫時就說到這,過后還有補充。提供一些資料給大家下載:
STM8 TIM 定時器使用要點:http://download.csdn.net/detail/hzt12345hf/7666019
STM8 中文DATASHEET:http://download.csdn.net/detail/hzt12345hf/7666021
STM8的C語言編程: http://download.csdn.net/detail/hzt12345hf/7666025
stm8示例程序: http://download.csdn.net/detail/hzt12345hf/7666027
上一篇:msp430的printf函數的簡單移植
下一篇:IAR調試stm8的優化設置
推薦閱讀
史海拾趣
ESPROS的ToF傳感器技術已成功應用于多個領域,包括無人機飛行避障及定高、人機交互和手勢識別、機器人定位和智能導航、人體檢測和物體探測、工業自動化以及汽車自動駕駛等。這些應用不僅展示了ESPROS技術的廣泛適用性,也證明了其在光電傳感器領域的強大實力。
EFC公司始終堅持“品質至上”的原則。他們嚴格控制原材料采購,確保每一批材料都符合最高標準。在生產過程中,EFC采用先進的生產設備和工藝,確保產品的穩定性和可靠性。此外,公司還建立了完善的質量檢測體系,對每一個出廠的產品都進行嚴格的檢測。正是這種對品質的執著追求,讓EFC的產品在市場上贏得了良好的口碑。
在航空航天領域,AirBorn的產品廣泛應用于飛機、導彈系統、通信設備等關鍵領域。為了滿足航空航天領域對連接器的嚴苛要求,AirBorn不斷投入研發力量,推出了一系列具有高性能、高可靠性的連接器產品。這些產品不僅滿足了航空航天領域的需求,還為公司帶來了可觀的收益。
隨著全球環保意識的提高,電子行業對環保和可持續發展的要求也越來越高。Compact公司積極響應這一趨勢,加大環保投入,采用環保材料和工藝,降低生產過程中的能耗和排放。同時,公司還致力于推動循環經濟的發展,通過回收和再利用廢舊電子產品,減少資源浪費和環境污染。這一舉措不僅提升了公司的社會形象,還為公司的可持續發展奠定了堅實基礎。
請注意,以上故事僅為示例,并不代表任何真實存在的企業情況。如果需要關于特定企業(如Compact公司)的準確信息,建議查閱相關公司的官方資料、行業報告或新聞報道。
隨著全球對環保和可持續發展的關注度不斷提高,Eurotechnique也開始注重環保和可持續發展。公司采用環保材料和生產工藝,降低產品對環境的影響。同時,Eurotechnique還積極參與環保公益活動,推動電子行業的綠色發展。此外,公司還致力于研發更加節能、環保的產品,以滿足市場的需求。
GISMA深知客戶需求的重要性,因此始終將客戶需求放在首位。公司擁有一支專業的研發團隊和客戶服務團隊,能夠根據客戶的具體需求量身定制產品,提供從設計到生產的全方位服務。這種定制化服務模式不僅贏得了客戶的廣泛贊譽,也進一步鞏固了GISMA在電子行業中的市場地位。通過深入了解客戶需求,GISMA不斷優化產品設計和生產流程,為客戶提供更加優質的產品和服務。
(4月11日北京站,4月10日上海站,4月17日深圳站,4月24日武漢站,5月8日成都站,點擊這里加入) 作為全球性RISC標準的締造者,ARM在嵌入式處理器領域中的霸主地位早已為大家所公認,目前行業中90%以上的嵌入式產品中都采用的是ARM系列的處理器。 ...… 查看全部問答∨ |
|
我想用AD9851DDS芯片產生10M到20M聯系可調的方波 目前不知道單片機怎樣和AD9851 連接 怎么控制過程?謝謝大家啊 急用 謝謝 如果能有程序的話最好 我可以先學學 再改進… 查看全部問答∨ |
|
因為踏入LED燈、LED燈帶生產的門檻比較低,所以目前來說,涉足這個項目的人不在少數。但怎么去辨別好壞,就得多留心了。 據有經驗的人士稱,首先要看產品的包裝。正規的LED燈帶會采用防靜電卷料盤包裝,一 ...… 查看全部問答∨ |