Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Избавляюсь от HAL:

Непрочитано 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,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

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

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

Это — стандарт, позволяющий не допустить идиотизма вроде
Код:
#define  BYDLOCODE()  some_function1(); some_function2();
...
if(some_shit) BYDLOCODE();
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Сказали "Спасибо" eddy
MikhailSh (08.02.2017)
Непрочитано 07.02.2017, 23:54  
ampy
Гражданин KAZUS.RUN
 
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 996
Сказал спасибо: 448
Сказали Спасибо 388 раз(а) в 202 сообщении(ях)
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.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Избавляюсь от HAL:

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

А, вот.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Эти 2 пользователя(ей) сказали Спасибо eddy за это сообщение:
mike-y-k (08.02.2017), MikhailSh (08.02.2017)
Непрочитано 08.02.2017, 04:06  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,293
Сказал спасибо: 11,863
Сказали Спасибо 4,162 раз(а) в 3,180 сообщении(ях)
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.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 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, время: 07:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.