реклама на сайте
подробности

 
 
> Задание имени процедуры.
Allregia
сообщение Apr 21 2013, 17:38
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Безотносительно к типу МК, тут скорее воспрос по Си:

Допустим в программе используется внешнее прерывание (с ножки).
И хочется написать более-менее универсально, тогда задаем в .h файле:

Код
#define INT_PORT GPIOA
#define INT_PIN  GPIO_Pin_0
#define INT_SOURECE EXTI_PinSource0
#define INT_LINE EXTI_Line0
#define INT_IRQ  EXTI0_IRQn;
[/code

И далее настраиваем пин, EXTI, NVIC. с этим все понятно, зазотели поменять ножку - поменяли в хидере, не трогая программу.
Но ведь надо еще прописать обработтчик прерывания:
[code]
void EXTI0_IRQHandler(void)
{


И тут кроме как править программу (например - поменять с EXTI0 на EXTI1), я уж не знаю как. Или есть способ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Allregia
сообщение Apr 23 2013, 14:20
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



А вот с # и ## я пока не очень понял.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 29 2013, 03:12
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



#define concatABC_(a, b, c) a##b##c
#define concatABC(a, b, c) concatABC_(a, b, c)

#define nEXT_dev 0 //хотим - эту ножку расскоментарим
//#define nEXT_dev 1 //.....а хотим - эту

void concatABC(EXTI, nEXT_dev, _IRQHandler)(void)
{
...

Почитайте про макросы в си.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 10:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016