Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 06.02.2017, 15:22  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Избавляюсь от HAL:

В файле stm32f4xx_hal.h есть конструкции типа:

Код:
#define __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH()       do {SYSCFG-›MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE);\
                                                         SYSCFG-›MEMRMP |= SYSCFG_MEMRMP_MEM_MODE_0;\
                                                        }while(0);
Зачем нужен и что дает оператор do {...} while (0)?
Реклама:
MikhailSh вне форума  
Непрочитано 06.02.2017, 16:44  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Один раз выполнит точно, а потом выйдет из цикла. Это цикл с пост-условием. Т.е. гарантировано он 1 раз выполнит код внутри скобок.
Easyrider83 вне форума  
Непрочитано 07.02.2017, 19:04  
ampy
Гражданин KAZUS.RU
 
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
ampy на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Дает возможность использовать break и continue, которая возможность всё равно упущена (хотя хз что там в этих макросах).
ampy вне форума  
Непрочитано 07.02.2017, 23:45  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Это — стандарт, позволяющий не допустить идиотизма вроде
Код:
#define  BYDLOCODE()  some_function1(); some_function2();
...
if(some_shit) BYDLOCODE();
__________________
Смерть бандеровской мразоте!
eddy на форуме  
Сказали "Спасибо" eddy
MikhailSh (08.02.2017)
Непрочитано 07.02.2017, 23:54  
ampy
Гражданин KAZUS.RU
 
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
ampy на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Скобочек достаточно.
ampy вне форума  
Сказали "Спасибо" ampy
zöner (05.04.2017)
Непрочитано 08.02.2017, 00:30  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Вроде стало понятно:
https://www.linux.org.ru/forum/development/6511421
http://stackoverflow.com/questions/9...define-a-macro

Да и вообще надо было начать с:
https://www.yandex.ru/search/?clid=9...&p=0&rnd=89509
MikhailSh вне форума  
Непрочитано 08.02.2017, 01:19  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Сообщение от ampy Посмотреть сообщение
Скобочек достаточно.
Отвечу своим комментарием из той же темы на ЛОРе.

А, вот.
__________________
Смерть бандеровской мразоте!
eddy на форуме  
Эти 2 пользователя(ей) сказали Спасибо eddy за это сообщение:
mike-y-k (08.02.2017), MikhailSh (08.02.2017)
Непрочитано 08.02.2017, 04:06  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

Воистину RTFM!
Работа макроподстановок многими пропускается. А потом появляются вопросы и лезут всякие ошибки и предупреждения.
До какого-то момента как-то работает, но иногда падает, а в ядре так просто kernel panic и долгий поиск причины.
Или память начинает куда-то утекать и как назло на сервере.
Сколько времени тратится потом на поиски таких вот ошибок…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 05.04.2017, 11:58  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

UART без HAL:
Нужен пример инициализации STM32F407 без HAL.
В этом коде:
Код:
void STM32_UART_USART1_Init(void)
{

	//Настройка тактирования
	RCC-›AHB1ENR |=  RCC_AHB1ENR_GPIOAEN; //Тактирование GPIO
	RCC-›APB2ENR |= RCC_APB2ENR_USART1EN; //Тактирование модуля USART1
		

	//Настройка портов
	GPIOA-›AFR[1] |= 0x00000070 | 0x00000700; //Альтернативная функция
	GPIOA-›MODER |= GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1; //Режим работы
	GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR10; //Скорость порта
	//GPIOA-›OTYPER |= //Тип порта когда он является выходом
	GPIOA-›PUPDR |= GPIO_PUPDR_PUPDR9_0 | GPIO_PUPDR_PUPDR10_0; //Подтяжка порта
	
	USART1-›CR1 |= USART_CR1_RE | USART_CR1_TE | USART_CR1_RXNEIE; //Разрешить прием, передачу и прерывание по приему
	USART1-›BRR = 0x000002D9; //Скорость передачи: 115200
	
	NVIC_SetPriority(USART1_IRQn, 0); //Установка приоритета
	NVIC_EnableIRQ(USART1_IRQn); //Разрешение прерывания

}
в отладчике KEIL не совпадают регистры см. скриншот. CR3 - вообще нет!
А у других USART2, 3 ... все норамльно как в документации.
А в файле stm32f407xx.h нет #defain для GPIOA-›AFR?!
Миниатюры:
Нажмите на изображение для увеличения
Название: Keil_STM32.jpg
Просмотров: 0
Размер:	30.3 Кб
ID:	112667   Нажмите на изображение для увеличения
Название: Doc_STM32.jpg
Просмотров: 0
Размер:	18.0 Кб
ID:	112668   Нажмите на изображение для увеличения
Название: STM32_USART2.jpg
Просмотров: 0
Размер:	32.7 Кб
ID:	112669  


Последний раз редактировалось MikhailSh; 05.04.2017 в 13:31.
MikhailSh вне форума  
Непрочитано 05.04.2017, 14:14  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

индусов не понять, можно было и инлайном:
Код:
inline void __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH(){
    SYSCFG-›MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE);
    SYSCFG-›MEMRMP |= SYSCFG_MEMRMP_MEM_MODE_0;
};
zöner вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stm32 HAL UART - не могу понять Ioann_II ARM 57 18.11.2016 16:10
Прием знаковых данных по I2C HAL STM32 dimdidim ARM 9 25.07.2016 22:35


Часовой пояс GMT +4, время: 13:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot