1. 程式人生 > >iar for stm8初學總結

iar for stm8初學總結

由於最近要用到stm8,所以這幾天就開始學習stm8,但發現網上資料太少,所以在這裡我就把一些對stm8的疑惑解答後的知識整理了一下,也算是做了一個小總結

對於開發環境,有ST TOOLSET 、 COSMIC 和IAR 這三個常用的,因為我用過IAR開發stm32,所以IAR是我的首選,雖然網上很多人說IAR for STM8程式碼的優化不如COSMIC。

看了一下開發環境的配置,不是很複雜,我把這三個工具的配置方法發上來供初學者下載檢視:

說一下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利用位控制,其中還有別的方式,另外哪種方式比較適合自定義,利用的是共用體訪問:

再說一下定時器,由於本人也是剛解除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來實現

暫時就說到這,過後還有補充。提供一些資料給大家下載:

相關推薦

iar for stm8初學總結

由於最近要用到stm8,所以這幾天就開始學習stm8,但發現網上資料太少,所以在這裡我就把一些對stm8的疑惑解答後的知識整理了一下,也算是做了一個小總結 對於開發環境,有ST TOOLSET 、 COSMIC 和IAR 這三個常用的,因為我用過IAR開發stm32,所以

IAR for stm8 memory窗口的功能

.com 在線 技術分享 ima bug iar logs debug模式 cnblogs 進入debug模式後點擊菜單view-Memory 可以在線查看,RAM,FLASH,OPTION等 IAR for stm8 memory窗口的功能

IAR for STM8下載、安裝、註冊

原文:https://blog.csdn.net/ybhuangfugui/article/details/52936636   一、下載 官方下載,網址https://www.iar.com/iar-embedded-workbench/#!?currentTab=free-

IAR for STM8的簡介、下載、安裝及註冊教程

一、簡介 1.關於IAR for STM8 IAR for STM8 是一個嵌入式工作平臺,主要應用於STM8 系列晶片的開發,現在(2018年3.10版本)能夠支援市面上所有的STM8晶片。 個人認為,IAR for STM8和Keil差別並不是很大,只要熟悉Keil的使用,那上手IAR for ST

STM8學習筆記】——IAR For STM8環境下建立工程

IAR Embedded Workbench 有針對STM8的開發環境,這篇博文我就演示在IAR下建立一個STM8的例程。 首先,你需要開啟IAR Embedded Workbench(這是廢話可以忽略) ,會見到下邊的頁面: 然後,【Tools】->【Options】調出選項選單進行整體環境引

IAR FOR STM8 常用快捷鍵 (待更新)

下面這張圖是我轉載別人的(https://blog.csdn.net/flylily9997/article/details/78464435)開啟標頭檔案                    ctrl+shift+h在整個工程中查詢          ctrl+shift

分別在IAR for STM32、IAR for STM8、MDK中重定向printf的方法

1、STM32在IAR中呼叫printf函式的一個方法 原文地址:http://blog.sina.com.cn/s/blog_668bcb8f01018ect.html 在串列埠都配置好的情況下,在工程的其中一個c檔案中加入如下程式碼: 注:直接在ma

Web前端初學總結

我們 自己的 喜歡 效果 switch 幹什麽 感覺 帶來 編碼 ---恢復內容開始--- 學習了一周的C#,這一周學了不少東西,也寫了不少代碼,感覺挺不錯的,總結一下學到的東西。 最基礎的就是變量、數據、運算。這裏面包含了不少的代碼基

spring初學總結思路

user size ima 自己的 imp 技術 方法 com 反轉 spring初步學習總結 總概括有四個方面:IOC,AOP,JDBC,和事務管理 ioc:實現了new類的一個權力的反轉。(平時new類導致代碼冗余,手動new類無法滿足動態new類的需求) aop:讓添

IAR for MSP430 7_12在線調試不能打斷點解決方法

mat 解決方法 inf iar format 選項 put 方法 lin 方法一:在project下邊點擊clean,把已經編譯好的文件刪除,然後rebuild all,再重新下載程序 方法二:Project->Options->linker->outp

初學總結--------Java修飾符與修飾關鍵字(且叫修飾關鍵字)

避免 它的 抽象類 ati 其他 new ont bsp 方法名 Java中有類,有成員變量,有成員方法,有局部變量。他們分別能用什麽來修飾? 目前學習到的類,有普通類和內部類。 一.修飾普通類:   1.public 每個文件中只有一個類能被public修飾,表示可以被

SQL Server OPTION (OPTIMIZE FOR UNKNOWN) 測試總結

count ext 1.0 ima uri distinct 索引 ltr filter 關於SQL Server的查詢提示OPTION (OPTIMIZE FOR UNKNOWN) ,它是解決參數嗅探的方法之一。 而且對應的SQL語句會緩存,不用每次都重編譯。關鍵在於

JSON for java入門總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Feature Pyramid Networks for Object Detection 總結

最近在閱讀FPN for object detection,看了網上的很多資料,有些認識是有問題的,當然有些很有價值。下面我自己總結了一下,以供參考。 1. FPN解決了什麼問題? 答: 在以往的faster rcnn進行目標檢測時,無論是rpn還是fast rcnn,roi 都作用在最後一

jquery ajax初學總結

最近專案中總遇到ajax,之前一直沒總結,今天來總結一下 //繫結事件,on三個引數,事件,繫結元素 .指類,#指id,回撥函式 <script> $(document). on('click', '#name', function() { $.ajax({ type

IAR開啟STM8時,出現“Unable to create configuration 'Debug' using tool chain ‘STM8

用IAR開啟STM8時,出現“Unable to create configuration 'Debug' using tool chain ‘STM8’,   出現這個問題的原因是按裝的IAR不正確,要裝ST for STM8版本的,而不能用ST for ARM版本的

過載運算子初學總結

一:過載運算子: 1:過載運算子函式可以對運算子作出新的解釋,但原有基本語義不變: ①:不改變運算子的優先順序 ②:不改變運算子的結合性 ③:不改變運算子所需要的運算元 ④:不能建立新的運算子 2:運算子函式可以過載為成員函式或友元函式。 3:成員運算子函式的原型在類的內部宣告格式如

關於mybatis啟動報Result Maps collection already contains value for ...的問題總結

今天在用mybatis逆向工程生成程式碼後,啟動專案測試時候出現了這個錯誤。關於這個錯誤的原因,各有不同。查了很長時間,下面就這個問題列舉了一些可能出錯的地方。 1、當同一個xml對映檔案記憶體在兩個相同的id(即兩個sql語句的id相同)時會報此錯 解決:查詢sql語句的id值修改 2

SpringBoot的初學總結

現在好多開發公司都在用SpringBoot,廢話少說我們直接來看看SpringBoot為什麼如此受歡迎。根據本人在平時的學習中發現,網上給的文章都在官方化了。不知道他們是貼上的還是咋弄的。一看都一樣。。。。。。。

Servlet初學總結

1.Servlet是相對於applet的,伺服器端的小程式。 2.Servlet的特點 移植性好,本身是一個Java類,具有跨平臺性; Java EE平臺支援的全部Java API都可用於Servlet; 安全性提高,伺服器崩潰的可能性減小; 多個Servlet可以