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

 
 
> Правильное разложение кода по файлам
Skaf
сообщение Nov 15 2011, 16:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 228
Регистрация: 4-06-09
Пользователь №: 49 940



Всем привет. Прошу прощение за корявое название темы )

Суть вопроса такова- пишу проект на STM32 в CooCox IDE.

В проекте используется SPI, прерывания от него и от GPIO.

Вопрос- как грамотно разложить код проекта по файлам.

в main.c у меня находится только основной цикл и перед ним вызов всех инициализирующих функций.

В Configuration.c / .h Хранятся функции инициализации всего (RCC, EXTI, GPIO, SPI......)

В stm32f10x_it.c Находятся обработчики прерываний от SPI и от GPIO

В SPIProtocol.c / .h Хранится логика протокола обмена данными по SPI

Естественно в функциях обработки прерываний от SPI используются переменные и функции, определенные в SPIProtocol.c

При компиляции ошибок и предупреждений нет. Однако протокол работает не правильно. Если обработчик прерывания от SPI перенести в файл SPIProtocol.c - то все начинает работать нормально.

С чем это связано?

Я пробовал и подключать SPIProtocol.h через инклуд, чтобы объявленные там переменные и функции стали доступны. И пробовал объявлять их заново в stm32f10x_it.c через extern. Результат один- работает не правильно.

Как все-таки правильно разбивать проект на файлы?

Еще бывает, что одно прерывание используют две совершенно логически не связанные части программы. Например это справедливо для прерываний от GPIO. Для EXTI от 10 до 15 одно общее прерывание. Однако, ножки эти могут быть назначены совсем разным логическим частям программы. Допустим одна обрабатывает LCD экран, другая энкодер. Логично было бы создать свои файлы - один для алгоритма работы с энкодером, а второй для индикатора. Куда тогда девать общий обработчик прерывания?

Спасибо. Надеюсь не очень сумбурно получилось.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Skaf
сообщение Nov 15 2011, 18:57
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 228
Регистрация: 4-06-09
Пользователь №: 49 940



Спасибо за ответ. Попробую тогда вырезать из проекта все лишнее, оставить только этот момент, о котором шла речь. И тогда выложу его сюда.
Go to the top of the page
 
+Quote Post



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

 


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


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