專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

STM8系統講解應用經驗

作者:張小強   來源:張小強   點擊數:  更新時間:2015年01月10日   【字體:

  stm8s外設資源豐富,性能優越,性價比高,這里分享下自己的開發經驗,給有興趣的朋友。先看下配置。

不錯吧,而它的價格只有3元,0系列的產品則僅有1元多點。很誘人吧。更誘人的是,學好了這個,再學STM32將變的順手起來。外設的控制大致是一樣的。切入正題,下邊的說明 將針對直接寄存的控制,不用庫開發。(8實在沒必要)
GPIO 的控制:
    每組IO 都有5個寄存器負責分別是
        PX_ODR   :輸出狀態控制寄存器         
         PX_DDR   :數據方向控制寄存器 
         PX_CR1   :上拉電阻控制寄存器
         PX_CR2  :外部中斷控制寄存器  
         PX_IDR:   讀端口狀態寄存器
      下邊列出幾種常用的端口配置:
 推 挽輸出   低電平   PX_DDR=0XFF;PX_CR1=0XFF;  高電平時 將PX_ODR=0XFF 配置下這里說一STVD 中的位操  作。以PD_ODR 端口3控制led為例     _Bool     led     @PD_ODR:3;    就直接可以 對led進行操作。
模擬輸入 所用端口需要在初始狀態,最好做如下操作 PX_DDR&=0X00;PX_ODR&=0X00;PX_CR1&=0X00;PX_CR2=0X00;
中斷輸入 :stm8的所有端口支持外部中斷,及最高外部中斷 TLI 需要與外部中斷EXTI_CRX寄存器配合使用 
         PX_DDR&=0X00; PX_ODR&=0X00;PX_CR1&=0X00;PX_CR2=0XFF;EXTI_CRX=0XFF; 注意TLI于普通外部中 斷的區別;在用外部中斷是需要在端口于地間加104電容。不要在SWIM上加,你會后悔的。哈哈,在用TLI時主要在配置字節選項里選擇對應端口服用功 能。
推挽輸出沒有啥好研究的   AD后面說,先看一下外部中斷 的應用;配置循序及內容
1,配置端口2,編寫對應的中斷函數3,在 interrupt配置對應中斷4,開總中斷。





上邊的程序用到了推挽  于中斷 。就這么簡單。比51 的p口好玩吧。
定時器
下邊該說定時器了,stm8s10X 有一個高級定時器TIM1普通定時器TIM2 TIM3,通用定時器 TIM4.
先從簡單的說起通用定時器TIM4 .他是一個單純的8位正計計時器。先說一下他的寄存器、
TIM4_CR1 :  控制寄存器,包含了使能,中斷更新,預裝值等控制位
TIM4_CR2 :  控制器 主要用于輸出信號沒必要深究
TIM4_SR:    狀態寄存器  ,觸發中斷及中斷更新事件
TIM4_PSCR:定時器時基預分頻器   可用的只有低三位 分頻因數為 2^PSCR最大分頻128
TIM4_ARR:  自動重裝值,在中斷產生時將本值賦給CNTR
TIM4_CNTR:計數寄存器
TIM4_IER:   中斷使能
TIM4_EGR: 中斷產生事件
還是比較簡單的 只是單純的計時器。配置步驟
1,配置定時器寄存器,2開啟總中斷,3寫對應中斷函數。

這里也用到了中斷,stm8s103有24個中斷 中斷向量如下以后會經常用到必須記住




看門狗
        在工業現場,環境復雜,干擾強烈,極有可能造成程序跑飛。要習慣性的用看門狗,即便是測試沒問題。
        看門狗的走勢圖如下
 

    內 部低速時鐘( LSI   128KHz) 的2分頻為看門狗提供計數時鐘源 這個是不可控分頻。接著來到IWDG_PR預分頻寄存器可選分頻系數(4,8,16,32,64,128,256),然后是自動重裝寄存器 IWDG_RLR.寫這個寄存器必須要IWDG_KR密鑰寄存器解密鑰,設置完后加密鑰。
程序很簡單,配置步驟如下;
1 開啟看門狗  。
2允許操作看門狗寄存器   解密
3配置看門狗 模式   分頻系數 重裝載值
4給看門狗計數器裝載值
5 定時喂狗
   

可以通過Debug修改IWDG_EN的值看程序運行情況,為0時不斷的復位,i無法長期累計,修改為1時可以喂狗i將得到累加。到這里看門狗部分就說完了,調用看門狗配置函數,根據需要配置看門狗函數,定期喂狗就OK了。
UART
寄存器說明:
UARTx_SR:      狀態寄存器,包含了數據寄存器狀態 總線狀態 幀 等狀態,常用的是中斷中清除接收寄存器滿標志
                            發送時判斷是否發送成功,發送寄存器是否為空
UARTx_DR:     數寄存器,用于存放發送,和接收到的數據。
UARTx_BBR1: 波特率控制寄存器用于控制串口波特率 存放波特率的  BIT11——BIT4
UARTx_BBR2: 波特率控制寄存器用于控制串口波特率 存放波特率的  BIT0-BIT3   BIT12-BIT15
UARTx_CR1:     控制寄存器1  數據位數,奇偶校驗 等控制。
UARTx_CR2:    控制寄存器2 ,收發使能 收發中斷使能 模式選擇。
UARTx_CR3:     控制寄存器3, 停止位選擇及使用時鐘線選擇時鐘極性。
UARTx_CR4:     控制寄存器4, LIN模式下的控制。
UARTx_CR5:     控制寄存器5, 智能卡及紅外模式下的設置。
UARTx_CR6:     控制寄存器6, LIN模式下的控制。
UARTx_GTR:     智能卡模式下的保護時間寄存器。
UARTx_PSCR:    智能卡及紅外模式下的波特率設置。
這 里只針對UART模式講解   stm8  有兩個串口   0系列用的是UART1    1系列用的UART2    2 系列都用,這里要注意用前面兩款的時候中斷向量要寫對,不然你會很惱火,找不到問題出在那。    uart1  接收中斷向量是18    uart2  接收中斷向量21
好下面進入代碼部分 ,串口初始化,中斷接收,符合要求的數據返回一個規定值,很簡單重要是學習方法,思路,這個對寫好一個程序很重要








串 口就說道這里了 ,具體怎么用看自己了,注意看MAIN.C的思路,結合數據手冊看一下。有錯誤的地方以數據手冊為準。還有在用STVD 的時候有個很狗血的地方無法看代碼量,可以在調試模式下看看,起始地址0X8080Flash,往下看出現連續0 的時候看一下地址,自己算一下就知道代碼量了,也可以自己寫一個小函數檢測下,都是比較簡單的。0系列8k,1系列16-32K不等,
下節  內容  IIC    驅動PCF8563 。以后的程序MAIN.C將會用上面一樣的格局.

時間因素先到這里,定期更新。
太多需要改變的,怎能停下。

關閉窗口

相關文章

街机奔驰宝马电玩城 山西快乐十分前三直选 辽宁十一选五一定牛预测 吉林十一选五遗漏一定 燕赵风采排列7规则 北京11选五每天多少期 浙江十一选五预测 幸运飞艇几点开始,几点结束 中国三大股票指数 江苏快三彩票网站 贵州11选5规则及奖金 上海十一选五遗漏 福利彩票深圳风采开奖 财神爷北京pk10手机版 江西省十一选五真准 幸运农场app 上海快3开奖号码今天