Помощь сайту
-
Популярные записи
- AVR: Обработка внешних прерываний
- AVR: настройка таймера счетчика
- AVR: настройка uart/usart
- AVR: modbus
- Как создать демона в linux
- stm32: работа с st-link в linux
- AVR: дизассемблируем прошивку
- Как сделать WI-FI камеру видеонаблюдения за 1200 рублей
- AVR: обмен данными по uart c использованием прерываний и fifo
- AVR: SPI
Новые комментарии
- Александр к записи Что бы это значило?
- dponyatov к записи stm32: работа с st-link в linux
- Илья Винокуров к записи stm32: работа с st-link в linux
- Николай к записи stm32: работа с st-link в linux
- Дмитрий к записи AVR: SPI
Рубрики
-
Свежие записи
- Android Studio. Failed to create the SD card
- Что делать если вы забыли свой пароль к MySql
- ADB: подключаемся по wi-fi
- Qt: signal mapping
- OpenWrt: Подключаем usb flash диск
- Android: устанавливаем свою анимацию и звук при загрузке
- Android: adb без sudo
- Android: настройка proxy в AndroidStudio
- WordPress — номера страниц
- Linux: запись видео с экрана при помощи ffmpeg
Облако меток
Май 2023 Пн Вт Ср Чт Пт Сб Вс « Июн 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Архив
- Июнь 2017 (1)
- Январь 2017 (1)
- Май 2016 (1)
- Июнь 2015 (1)
- Апрель 2015 (1)
- Март 2015 (2)
- Февраль 2015 (4)
- Январь 2015 (1)
- Декабрь 2014 (1)
- Ноябрь 2014 (3)
- Октябрь 2014 (1)
- Сентябрь 2014 (1)
- Март 2014 (2)
- Июнь 2013 (2)
- Апрель 2013 (7)
- Февраль 2013 (2)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (1)
- Сентябрь 2012 (3)
- Август 2012 (3)
- Май 2012 (3)
- Апрель 2012 (3)
- Март 2012 (7)
- Февраль 2012 (7)
- Январь 2012 (5)
- Август 2011 (7)
- Июль 2011 (3)
Мета
Архив метки: Си
Простое FIFO
Столкнулся с интересной реализацией циклического буфера на Си, поначалу даже подумал, что этот код не работает, но разобравшись, решил использовать в своих проектах. Весь код реализован в виде defin’ов и содержится в одном заголовочном файле fifo.h
Make: cтруктура Makefile
make — это утилита для автоматической сборки программ. Позволяет отслеживать изменения в исходном коде программы и компилировать не весь проект целиком а только те файлы которые изменились или те которые зависят от внесенных изменений. При больших проектах это дает существенную … Читать далее
Подводные камни define’ов
Определение макросов с помощью define очень часто используется программистами. Но есть некоторые особенности, незнание которых может привести к длительным поискам ошибок. Например есть макрос: #define square1( a, b ) \ a*= a; \ b*= b;#define square1( a, b ) \ … Читать далее
Что бы это значило?
Язык Си позволяет создавать выражения, которые не сразу и поймешь. Знакомый принес с собеседования вот такую задачку: Что выведет программа? int x = 2; x += x+++++x; printf( "x=%u\r\n", x ); int x = 2; x += x+++++x; printf( "x=%u\r\n", … Читать далее
Функции изменения порядка бит
Первый вариант — хитрый unsigned char bits_reverse( unsigned char bits ) { bits = ( ( bits & 0xF0 ) >> 4 ) | ( ( bits & 0x0f ) < < 4 ); bits = ( ( bits & … Читать далее
Выравнивание и размер структуры
Есть у нас, допустим структура. struct my_struct{ int a; char b; int c; };struct my_struct{ int a; char b; int c; }; Но если на разных платформах ( например avr и arm ) выполнить следующий код printf("размер структуры %u\r\n", sizeof( … Читать далее
Для чего нужен volatile
volatile — это квалификатор языка Си, который говорит, что переменная может изменятся в другом потоке (обработчике прерываний) или является указателем на регистр. Иначе говоря, volatile отключает оптимизацию обращения к этой переменной. В качестве примера рассмотрим программу для микроконтроллеров avr atmega.
Почему не работает getchar?
На некоторых системах не работает следующий код. char ch; while( getchar( &ch ) != EOF ) { putchar( ch ); }char ch; while( getchar( &ch ) != EOF ) { putchar( ch ); } Почему?