Spec-Zone.ru › GCC 5

6.58.9 Встроенные функции AVR

Для каждой встроенной функции AVR определена одноимённая макрокоманда с заглавными буквами. Это позволяет легко проверить, реализована ли конкретная встроенная функция. Например, если __builtin_avr_nop доступна, то макрокоманда __BUILTIN_AVR_NOP определена как 1, в противном случае — нет.

Следующие встроенные функции отображаются в соответствующей машинной инструкции, т.е. nop, sei, cli, sleep, wdr, swap, fmul, fmuls соответственно fmulsu. Три встроенных функции fmul* реализованы как вызов библиотеки, если нет аппаратного умножителя.

void __builtin_avr_nop (void)
void __builtin_avr_sei (void)
void __builtin_avr_cli (void)
void __builtin_avr_sleep (void)
void __builtin_avr_wdr (void)
unsigned char __builtin_avr_swap (unsigned char)
unsigned int __builtin_avr_fmul (unsigned char, unsigned char)
int __builtin_avr_fmuls (char, char)
int __builtin_avr_fmulsu (char, unsigned char)

Для задержки выполнения на определённое количество тактов компилятор GCC использует

void __builtin_avr_delay_cycles (unsigned long ticks)

ticks — это количество тактов для задержки выполнения. Обратите внимание, что эта встроенная функция не учитывает влияние прерываний, которые могут увеличить время задержки. ticks должно быть целочисленной константой времени компиляции; задержки с переменным числом тактов не поддерживаются.

char __builtin_avr_flash_segment (const __memx void*)

Эта встроенная функция принимает байтовый адрес 24-битного адресного пространства адресного пространства __memx и возвращает номер флэш-сегмента (64 КБ фрагмент), к которому относится этот адрес. Счёт начинается с 0. Если адрес не указывает на флэш-память, возвращается значение -1.

unsigned char __builtin_avr_insert_bits (unsigned long map, unsigned char bits, unsigned char val)

Вставляет биты из bits в val и возвращает полученное значение. Ниблы map определяют, как выполняется вставка: пусть X — n-ый нибл map

  1. Если X — 0xf, то n-ый бит val возвращается без изменения.
  2. Если X находится в диапазоне от 0 до 7, то n-ый результат устанавливается в X-ый бит bits.
  3. Если X находится в диапазоне от 8 до 0xe, то n-ый результат не определён.

Типичное применение этой встроенной функции — корректировка значений ввода и вывода для несмежных схем портов. Некоторые примеры:

// same as val, bits is unused
__builtin_avr_insert_bits (0xffffffff, bits, val)
// same as bits, val is unused
__builtin_avr_insert_bits (0x76543210, bits, val)
// same as rotating bits by 4
__builtin_avr_insert_bits (0x32107654, bits, 0)
// high nibble of result is the high nibble of val
// low nibble of result is the low nibble of bits
__builtin_avr_insert_bits (0xffff3210, bits, val)
// reverse the bit order of bits
__builtin_avr_insert_bits (0x01234567, bits, 0)

Далее: Встроенные функции Blackfin, Предыдущее: Статус и управляющие встроенные функции ARM для чисел с плавающей точкой, Вверх: Встроенные функции целевой платформы [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/AVR-Built-in-Functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API