tonyk_av 44 29 декабря, 2023 Опубликовано 29 декабря, 2023 · Жалоба 9 hours ago, dOb said: Нужно использовать прерывания, DMA. Совершенно не обязательно, хотя DMA и прерывания идеологически правильны. Spoiler //////////////////////////////////////////////////////////////////////////////// // Цикл обмена по SPI inline uint8 spi_exchange( uint8 _aByte ) { uint8 tmp8; uint32 prot; prot = 10'000'000; while( wiz_spi -> SR & SPI_SR_RXNE ) { tmp8 = wiz_spi -> DR; prot--; if( prot == 0 ) { break; } }; *( volatile uint8 *)&( wiz_spi -> DR) = _aByte; prot = 10'000'000; while( !( wiz_spi -> SR & SPI_SR_RXNE ) ) { prot--; if( prot == 0 ) { break; } } tmp8 = *( volatile uint8*)&( wiz_spi -> DR ); return( tmp8 ); } //////////////////////////////////////////////////////////////////////////////// Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 29 декабря, 2023 Опубликовано 29 декабря, 2023 · Жалоба On 12/29/2023 at 6:24 AM, arhiv6 said: Зачем такое делать вручную, если специально для этого существуют стилизаторы кода? Попробуйте Astyle, он очень простой в использовании. Выберите готовый стиль, похожий на свой (что-то вроде --style=kr ), потом при желании можно под себя его донастроить. Уверен, для notepad++ есть плагины для работы с astyle. Но даже если нету - то можно простой макрос сделать, который будет вызывать astyle для текущего файла по какому-нибудь сочетанию клавиш. уже работает и так, но спасибо за интересную ссылку 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 4 января Опубликовано 4 января · Жалоба On 12/29/2023 at 4:53 PM, tonyk_av said: хотя DMA и прерывания идеологически правильны. Тут тоже палка о двух концах. Запустили вы DMA и пошли выполнять другую работу. Передача еще не завершилась, а тут еще кто-то захотел отправить. Появляется необходимость блокировок, флагов, ожиданий. В одном месте добавляете изящества, в другом теряете это изящество. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 5 января Опубликовано 5 января · Жалоба Давайте всеже завершим правильными регэкспами тему, что началась с регэкспов неправильных. Правильные regexp-ы для PowerGrip. Который оказался абсолютный чемпион в этом деле. \)\s*[\n\r]+\s*\{\s*[\n\r]+ ){\n do\s*[\n\r]+\s*\{\s*[\n\r]+ do{\n else\s*[\n\r]+\s*\{\s*[\n\r]+ else{\n \"C\"\s*[\n\r]+\s*\{\s*[\n\r]+ "C"{\n enum\s*[\n\r]+\s*\{\s*[\n\r]+ enum{\n struct\s*[\n\r]+\s*\{\s*[\n\r]+ struct{\n union\s*[\n\r]+\s*\{\s*[\n\r]+ union{\n \=\s*[\n\r]+\s*\{\s*[\n\r]+ = {\n PROTOTYPE\s*[\n\r]+\s*\{\s*[\n\r]+ PROTOTYPE {\n Этот набор регэкспов переводит в cтиль «K&R» любое форматирование с вынесенной на следующую строку открывающей скобкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться