久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: RTX51-Tiny的學習 [打印本頁]

作者: 愛51hei    時間: 2015-10-29 13:00
標題: RTX51-Tiny的學習
                                                                                                 這兩天在考慮多路繼電器同時工作的情況,開始接觸了51系統中的RTOS。目前看到較多的是Keil 提供的 RTX51 Tiny(免費版),另外的有周立功公司的 Small RTOS51,對于更大的系統,就只有考慮uCOS了。從STC15F204EA的硬件配置來看,目前只適合使用RTX51 Tiny了。

在學習過程中,有下面的疑問需要逐一驗證:

在標準的時間片輪換模式下,疑問:
    1. os_create_task(nTask_Id) 可以在任何時間調用?
    2. os_create_task() 和 os_set_ready() 的區別?如何只創建一個任務而不啟動?當一個任務處于ready時,在下一個時間片就會啟動工作?
    3. 可以通過 os_set_ready(nTask_Id) 和 os_send_signal(nTask_id) 啟動一個任務?
    4. os_delete_task(nTask_id)的任務是否可以再次激活?
    5. 任務數量的多少是否會影響到程序的執行速度?如果系統中一開始有12個任務在運行,后面刪除到只剩下4個,這時候
       任務的運行速度是否提高了4倍?
    6. 在問題5的情況下,如何保證基本驅動程序能夠按照穩定的時間間隔運行?
        A: 在系統初始化完成后,不要增加,刪除或掛起任務,這樣就可以保證時間片輪換的頻率穩定。(這個做法是否正確???)   
    7. 如何測試系統當前的負載量和運行速度?
    8. 在系統中還有其他需要用到定時的中斷時,如何平衡時間的分配?如系統中有串行口通訊,或者更高精度的定時器(定時精度高于SysTick)?
    9. 對于在單個任務中使用多重循環進行延時,如何保證延時時間的準確性?(函數的重入問題)假設系統中的每個時間片為50ms,同時有10個任務
       在運行,如何保證其中的任務1能夠連續不斷的輸出頻率為1KHz的方波(端口的翻轉頻率為2KHz)?同時任務2連續輸出頻率200Hz的方波?按照正常
       理解,系統中有10個并行任務,則每個任務的工作周期是 SysTickPeriod * nTaskCount = 50ms*10 = 500ms,其中任務1只有其中的50ms內能夠
       對某個GPIO進行控制,使其做2KHz的翻轉(使用循環延時即可)。但是在其它任務激活的時候,該如何進行?
    10.對于來自外部的中斷,如觸發信號輸入(串口中斷發生),此時處理串口工作的任務處于休眠期,是否可以通過串口中斷立即激活該任務?
       例如使用 os_switch_task()。但是如何能夠避開其它任務,而直接執行串口工作處理的任務呢? 是否需要啟動優先級的任務?   


另外,通過實際測試,對SysTick的配置做了確認。 這個可以在 conf_tny.A51中做配置。說明如下:
1. INT_CLOCK EQU      24000         ; 系統時鐘設置為 24.000MHz時,每個 SysTick 周期是1ms。   
2. TIMESHARING EQU     1             ; 每個任務的時間片的長度,用SysTick的個數表示。
在以上配置下,每個任務的時間片長度為:FOSC/INT_CLOCK*TIMESHARING =  24.000M/24000*1 = 1ms。
另外,為了發揮 STC15系列1T單片機的優勢,在HW_TIMER的初始化階段,設置輔助寄存器 AUXR,使Timer0工作于1T定時器模式。否則默認的工作在 12T傳統的8051定時器模式。

具體修改的程序段如下:
HW_TIMER: HW_TIMER_CODE
TIMERINT:
IF (LONG_USR_INTR)
  PUSH ACC
  MOV A,PSW
  ANL A,#018H
  XRL A,#?RTX_REGISTERBANK
  JNZ CONT_TIMINT
; avoid recursive timer interrupt
  POP ACC
  RETI  ; Return from Recursive Timer Interrupt
CONT_TIMINT:    POP ACC
ENDIF
  CALL HW_TIMER ; Enable Interrupts again.
  MOV ?RTX_SAVEPSW,PSW
  MOV PSW,#?RTX_REGISTERBANK
  MOV saveacc,ACC     ; ACC required by some Cygnal devices
; Update 8051 Interrupt Timer
  CLR TR0
;****************************************************************
; 下面一行語句專門為 STC15系列單片機添加,用于1T模式計時器設置。

  ORL AUXR, #80H       ;對于 STC15 系列產品,使用1T時鐘模式,新增加的語句。
;****************************************************************      
  MOV A,TL0
  ADD A,#LOW (?RTX_CLOCK + 7)
  MOV TL0,A
  MOV A,TH0
  ADDC A,#HIGH (?RTX_CLOCK + 7)
  MOV TH0,A
  SETB TR0
至此, Timer0的配置完成,就等待系統啟動任務循環了。

總之,希望在了解了以上問題以后,就能夠自如的使用這個mini的RTOS了。




作者: clexsp    時間: 2016-11-1 15:00
能不能完全的移植出來呢。。
作者: fanfan_gg    時間: 2019-6-19 16:13
hello 不知道樓主總結的這些問題有結果了嗎

作者: sandgod    時間: 2020-5-17 00:25
我也按這種設置過,但是時鐘總是不對,只創建了task_1,內部有LED翻轉,然后來一個wait(ktmo,1000),按理說應該是1秒延時翻轉,但是實際上是0.3秒,想不通
作者: xizhe2005    時間: 2020-6-2 11:19
sandgod 發表于 2020-5-17 00:25
我也按這種設置過,但是時鐘總是不對,只創建了task_1,內部有LED翻轉,然后來一個wait(ktmo,1000),按理說 ...

我試過用STC官方的庫,時鐘好像沒問題
作者: zzw15951929946    時間: 2020-7-9 09:26
你把SYSTICK周期設置高一點,設置成10MS試試
作者: lzzasd    時間: 2022-3-23 11:39
zzw15951929946 發表于 2020-7-9 09:26
你把SYSTICK周期設置高一點,設置成10MS試試

有沒有發現    其他任務都沒多大問題   如果有外部中斷的情況下    整個系統的時間片就會有問題
作者: V5_471G    時間: 2023-8-23 19:13
請問賽元8位機能跑嗎,目前只試過stc可以
作者: 365280223    時間: 2023-12-1 22:37
這個東西怎么用啊,先做一個記號




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 蜜臀av性久久久久av蜜臀妖精 | 日韩中文视频 | 日韩国产中文字幕 | av综合网站 | 国产精品免费一区二区三区 | 午夜精品久久久久久久久久蜜桃 | 黄色三级av | 成人毛片在线 | 一区二区三区四区视频 | 成人在线免费看 | 亚洲精品一区二区三 | 久久黄色免费视频 | 久久国产精品一区二区 | 91久久综合 | 国产毛片一级 | 成人网av| 国产尤物视频 | 在线一区二区三区四区 | 伊人av网 | 四虎影院在线免费观看 | 狠狠干夜夜 | 黄网站免费大全入口 | 狠狠干夜夜操 | 在线一级片| 成人网av | 亚洲福利网站 | 国产乱国产乱300精品 | 黄色国产片 | 欧美在线| 日本免费一级片 | 成人精品一区二区三区 | 色综合天天综合网国产成人网 | 国产999视频 | 亚洲偷| 中文字幕在线视频播放 | a级片免费在线观看 | 国产欧美精品一区二区三区 | 九九热视频在线观看 | 三级福利视频 | 欧美精品二区三区四区免费看视频 | 人人草人人爱 |