Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент. Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
85 lines
3.8 KiB
NASM
85 lines
3.8 KiB
NASM
; Поставляемое ti описание usdelay для семейства c2833x. Пояснения в UTF-8.
|
|
|
|
;// TI File $Revision: /main/4 $
|
|
|
|
;// Checkin $Date: July 30, 2007 10:28:57 $
|
|
|
|
;//###########################################################################
|
|
|
|
;//
|
|
|
|
;// FILE: DSP2833x_usDelay.asm
|
|
|
|
;//
|
|
|
|
;// TITLE: Simple delay function
|
|
|
|
;//
|
|
|
|
;// DESCRIPTION:
|
|
|
|
;//
|
|
|
|
;// This is a simple delay function that can be used to insert a specified
|
|
|
|
;// delay into code.
|
|
|
|
;//
|
|
|
|
;// This function is only accurate if executed from internal zero-waitstate
|
|
|
|
;// SARAM. If it is executed from waitstate memory then the delay will be
|
|
|
|
;// longer then specified.
|
|
|
|
;//
|
|
|
|
;// To use this function:
|
|
|
|
;//
|
|
|
|
;// 1 - update the CPU clock speed in the DSP2833x_Examples.h
|
|
|
|
;// file. For example:
|
|
|
|
;// #define CPU_RATE 6.667L // for a 150MHz CPU clock speed
|
|
|
|
;// or #define CPU_RATE 10.000L // for a 100MHz CPU clock speed
|
|
|
|
;//
|
|
|
|
;// 2 - Call this function by using the DELAY_US(A) macro
|
|
|
|
;// that is defined in the DSP2833x_Examples.h file. This macro
|
|
|
|
;// will convert the number of microseconds specified
|
|
|
|
;// into a loop count for use with this function.
|
|
|
|
;// This count will be based on the CPU frequency you specify.
|
|
|
|
;//
|
|
|
|
;// 3 - For the most accurate delay
|
|
|
|
;// - Execute this function in 0 waitstate RAM.
|
|
|
|
;// - Disable interrupts before calling the function
|
|
|
|
;// If you do not disable interrupts, then think of
|
|
|
|
;// this as an "at least" delay function as the actual
|
|
|
|
;// delay may be longer.
|
|
|
|
;//
|
|
|
|
;// The C assembly call from the DELAY_US(time) macro will
|
|
|
|
;// look as follows:
|
|
|
|
;//
|
|
|
|
;// extern void Delay(long LoopCount);
|
|
|
|
;//
|
|
|
|
;// MOV AL,#LowLoopCount
|
|
|
|
;// MOV AH,#HighLoopCount
|
|
|
|
;// LCR _Delay
|
|
|
|
;//
|
|
|
|
;// Or as follows (if count is less then 16-bits):
|
|
|
|
;//
|
|
|
|
;// MOV ACC,#LoopCount
|
|
|
|
;// LCR _Delay
|
|
|
|
;//
|
|
|
|
;//
|
|
|
|
;//###########################################################################
|
|
|
|
;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $
|
|
|
|
;// $Release Date: August 1, 2008 $
|
|
|
|
;//###########################################################################
|
|
|
|
|
|
|
|
; Экспортирует символ для связывания с C-кодом. Операция: .def _DSP28x_usDelay.
|
|
|
|
.def _DSP28x_usDelay
|
|
|
|
; Выбирает секцию объектного файла для следующих инструкций. Операция: .sect ".text".
|
|
|
|
.sect ".text"
|
|
|
|
|
|
|
|
; Объявляет глобальный символ для линкера. Операция: .global __DSP28x_usDelay.
|
|
|
|
.global __DSP28x_usDelay
|
|
|
|
; Объявляет метку _DSP28x_usDelay: для перехода или вызова. Операция: _DSP28x_usDelay:.
|
|
|
|
_DSP28x_usDelay:
|
|
|
|
; Вычитает операнд и обновляет арифметическое состояние. Операция: SUB ACC,#1.
|
|
|
|
SUB ACC,#1
|
|
|
|
; Выполняет условный переход по флагам результата. Операция: BF _DSP28x_usDelay,GEQ.
|
|
|
|
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
|
|
|
|
; Возвращает управление вызывающему коду через длинный адрес возврата. Операция: LRETR.
|
|
|
|
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
|
|
|
|
;
|
|
|
|
;//===========================================================================
|
|
|
|
;// End of file.
|
|
|
|
;//===========================================================================
|
|
|