1. 程式人生 > >DSP delay延時函式

DSP delay延時函式

     .def _DSP28x_usDelay
       .sect "ramfuncs"
        .global  __DSP28x_usDelay
_DSP28x_usDelay:
        SUB    ACC,#1
        BF     _DSP28x_usDelay,GEQ    ;; Loop if ACC >= 0
        LRETR 
.def _DSP28x_usDelay  定義一個名字是“_DSP28x_usDelay ”的函式
 .sect "ramfuncs"   設定這個函式所存放的段 
.global __DSP28x_usDelay   表明此函式可以為外部函式等所呼叫
_DSP28x_usDelay:  函式名,函式實體的開始 
SUB ACC,#1 ;計數器減一,以完成延時功能 
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0(如果ACC減到小於零了就停止) 
LRETR ;有待討論 

There is a 9/10 cycle overhead and each loop takes five cycles. The LoopCount is given by the following formula:
DELAY_CPU_CYCLES = 9 + 5*LoopCount
LoopCount = (DELAY_CPU_CYCLES - 9) / 5
The macro DELAY_US(A) performs this calculation for you

相關推薦

DSP delay函式

     .def _DSP28x_usDelay       .sect "ramfuncs"        .global  __DSP28x_usDelay_DSP28x_usDelay:        SUB    ACC,#1        BF     _DSP2

STM32的SysTick定時器與Delay函式

1.BB一下 原子哥的Delay延時函式,在沒有使用OS的情況下,沒有使用SysTick中斷,而筆者希望通過該中斷記錄系統時間 不使用OS,使用SysTick中斷 不使用OS,不使用SysTick

【STM32】SysTick滴答定時器(delay函式講解)

STM32F1xx官方資料:《Cortex-M3權威指南-中文》-第8章最後一個小節:Systick定時器SysTick定時器Systick定時器,是一個簡單的定時器,對於CM3、CM4核心晶片,都有Systick定時器。Systick定時器常用來做延時,或者實時系統的心跳時

stm32 使用正點原子delay函式,主函式失效

最近在做一個東西時,發現一個現象。之前一直沒有發現過,或者發現也沒有仔細研究過,在此為大家分享。 在使用原子哥的延時函式時,發現主函式裡面的延時函式失效了。沒有起任何作用。下面簡單分析一個整個過程。 先直接上程式碼,很簡單的一個例項 int main(void) {

DSP中兩個函式的區別(轉)

在程式設計的時候可以用CCS自帶的延時函式,在使用時我發現有兩個延時函式都可以用: DELAY_US(1); DSP28x_usDelay(1); 在呼叫DELAY_US(1)這

unity函式

新建一個工具類 public class DelayToInvoke : MonoBehaviour{ public static IEnumerator DelayToInvokeDo(Action action, float delaySeconds){yield return new Wai

linux核心 訊號量與自旋鎖、函式比較

       在驅動程式中,當多個執行緒同時訪問相同的資源時(驅動程式中的全域性變數是一種典型的共享資源),可能會引發"競態",因此我們必須對共享資源進行併發控制。Linux核心中解決併發控制的最常用方法是自旋鎖與訊號量(絕大多數時候作為互斥鎖使用)。   自

STM32使用systick定時器定義硬體精準函式

前言 博文基於STM32F103ZET6和標準韌體庫V3.5.0在MDK5環境下開發; 本博文討論的是晶片不執行作業系統的情況下完成1s的延時功能; 如有不足之處還請多多指教; SysTick—系統滴答定時器是什麼? 是一個24位的硬體倒計數定時器; Sys

Systick滴答定時器-函式

1、參考資料       《STM32F1開發指南-庫函式版本》-5.1小節 delay資料夾介紹           《Cortex-M3權威指南-中文》-第8章最後一個小節:Systick定時器 2、Systick定時器     Systick定時器,是一個簡單的定時器

一個超簡單的 android 函式

因java初學,總是帶著一些VB的語法思路,想在一個 for迴圈裡面暫停個幾毫秒以實現指定的動畫效果,又不想用動畫函式(因為只是移動文字的位置),所以只好學著VB裡面一樣,弄一個延時函式來用用了: private void delay(int ms){ try {

SysTick定時器應用之一——用於函式

SysTick為簡單的向下計數的24位計時器,可以使用處理器時鐘或外部參考時鐘(通常是片上時鐘源)。當不使用OS時,SysTick定時器可以用作簡單的定時器外設,用以產生週期性中斷、延時或者時間測量。 用於延時函式的話比較簡單,SysTick定時器操作存在4個暫存器 Sy

【51微控制器】函式計算問題以及如何準確

幾種週期介紹 週期名稱 描述 時間 振盪(時鐘) 微控制器提供時鐘脈衝訊號的振盪源的週期 T=1/f 狀態 振盪週期經二分頻後得到的 2T 機器 在一個機器週期內,CPU可以完成一個獨立的 操作

CC2530微控制器函式實際測試

    因為要檢測不同的波形,所以對時間要求很高,但是發現Zstack本身提供的微秒級的延時其實有誤差。    因此特地寫了測試函式,然後用示波器觀察了時間。詳細如下:     先說CC2530與普通8051微控制器時鐘的不同,CC2530的每個指令是一個時鐘,而標準的80

STM32中通過普通函式來精確

在STM32中處處會用到延時函式,一般而言,對於普通的控制延時,並不會要求特別精確,所以可以使用普通的延時函式,例如 void delay(u32 time) { while(time--);

微控制器函式實現

在編寫微控制器程式時,我們經常要用到延時函式,記得我們在學51微控制器時,第一個延時是通過軟體延時來實現的,程式碼如下: void delay(volatile uint32_t cnt){ volatile uint32_t i = 0; volatile uint

Linux kernel 核心函式

其他參考:http://blog.csdn.net/lixiaojie1012/article/details/44229009 當一個裝置驅動需要處理它的硬體的反應時間, 涉及到的延時常常是最多幾個毫秒. 在這個情況下, 依靠時鐘嘀噠顯然不對路. The kerne

用SysTick值抓取法,實現DelayUS()的微妙函式

程式說明:(1)在bsp_timer.c中加入bsp_DelayUS()的微妙延時函式(2)用定時器6實現程式執行時間測量,最小單位0.083us。         下面使用TIM6測量bsp_DelayUS(10)的執行時間,實際測試結果        Time = 10

STM32 函式高階用法分析

一、使用場景 第一種情況,在使用普通 STM32 延遲函式,類似於 HAL_Delay(time),由於該函式是使用迴圈去判斷及延時的,所以在執行該函式時整個程式會在此處等待定時器的中斷服務函式修改參量使得迴圈判決條件不成立,從而繼續程式的執行,同時也達到延遲

定時器與函式

STM32定時器包含基本定時器、通用定時器和高階定時器,其中TIM6和TIM7是STM32當中的基本定時器,作為初學者,先從最基本的學起最容易,下面我們用這個定時器實現毫秒延時函式來入門STM32定時器的應用。學習微控制器,就是學習使用它的暫存器。即便你用庫函式,暫存器也是必

STM32 SysTick定時器做函式

在STM32中延時函式用的非常廣泛,具體延時函式怎麼使用,下面我們來進行想詳解,本文主要介紹採用SysTick計時器來實驗系統延時: 原理介紹:                  SysTick計時器是一個24位的倒計數定時器,主要用來做作業系統的定時器,每來一個時鐘週期