Перейти к содержанию

Вопросы По Coocox Coide


mr_smit

Рекомендуемые сообщения

Думаю проблему атомарных операций следует пока опустить.

Ибо возник вопрос о прерываниях.

Решил помигать диодом с определённой точностью

void main()
{
   //-------------------------------------------------------
   //Включаем тактирование
   //RCC AHB 0x40021000
   //Порт C, APB2 0x018    value IOPCEN 0x10
   //Таймер 6, APB1 0x01c    value TIM6EN 0x10
   *(unsigned long*)(0x40021018) |= 0x10;
   *(unsigned long*)(0x4002101c) |= 0x10;
   //-------------------------------------------------------
   //Настройка выхода Порт C 8, 9
   //GPIOC    0x40011000
   //CRH    0x04
   // 8, 9 Пуш-пул 2 МГц    value 0x22
   *(unsigned long*)(0x40011004) = 0x22;
   //-------------------------------------------------------
   //Настройка таймера 6
   //TIM6        0x40001000
   //TIM6_PSC    0x28 Делитель на 24000 ( 0 - делим на единицу)
   //TIM6_ARR    0x2c Точка начала прерывания 1000
   //TIM6_DIER    0x0c Разрешаем прерывание от таймера value UIE 0x01
   //TIM6_CR1    0x00 Старт value CEN 0x01
   *(unsigned long*)(0x40001028) = 0x9c3f;
   *(unsigned long*)(0x4000102с) = 0x3e8;
   *(unsigned long*)(0x4000100с) = 0x01;
   *(unsigned long*)(0x40001000) = 0x01;
   //-------------------------------------------------------


 while(1);
}

(Это копия данного кода)

, но как определить случилось прерывание или нет. Где его искать?

В оригинале легко и просто обращаются к обработчику. Однако, непонятно откуда у него ноги растут.

Буду рад вашей помощи.

Ссылка на комментарий
Поделиться на другие сайты

Вопрос более конкретный.

// Обработчик прерывания TIM6_DAC
void TIM6_DAC_IRQHandler(void)
{
TIM6->SR &= ~TIM_SR_UIF; //Сбрасываем флаг UIF
GPIOC->ODR^=(GPIO_Pin_9 | GPIO_Pin_8); //Инвертируем состояние светодиодов
}

На что реагирует данный отрезок кода? здесь

Конечно понятно, что на прерывание. (Я тоже Капитан Очевидночть).

Но чем обусловленно оно: значением бита в регистре? (Каком?, может быть TIMx_SR ?)

Изменено пользователем atrel
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

механизм прерываний в STM несколько отличается от восьмибиток технически, но принцип тот же самый и вопросы весьма странные для человека с опытом

флаги запроса прерываний генерятся блоками (по одному, или по несколько, в зависимости от блока), контроллер прерываний их собирает и обрабатывает в порядке разрешений и приоритета, определенного в этом самом контроллере. Каждое прерывание имеет свой собственный вектор, который записан в своей определенной (именованной!) ячейке памяти.

Флаги прерываний находятся в регистрах контроллера прерываний. На то он и контроллер )

Вот эти самые имена прописаны в библиотечных хидерах, и их можно легко отыскать (там список)

TIM6_DAC_IRQHandler

это одно из таких имен. Они совершенно конкретные. В принципе изменив код библиотеки можно придумать и свое имя, если прям сильно охота. Но делать это совершенно бестолково

Есть еще 4 пустых заглушки, которые привязаны к SysTimer и всегда обязаны быть. По крайней мере для того, чтобы выполнился пустой обработчик. Можно их перегрузить, если нужен свой обработчик, а можно просто найти в одном из файлов проекта (включается стандартно) и дописать код прямо в уже готовый скелет.

И эти обработчики кстати нельзя запретить, как и запретить прерывания от SysTimer с помощью контроллера прерываний.

все элементарно, но есть некоторые тонкости

например, если будете писать на С++, надо обработчики прерываний обязательно делать extern "C"{}. Иначе они в пространстве имен не найдутся при сборке

флаги прерываний сбрасываются автоматически при входе в процедуру прерывания. Не надо их сбрасывать

еще мож чего вспомню

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Устанавливаю GNU для CooCox v.2 beta (система Windows XP Professional SP3), выскакивает вот такая ошибка, и установка не может завершится. У кого какие предположения есть по этому поводу?

post-0-0-89708200-1431155584_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Проблему решил так:

Качал архив тут: https://launchpad.net/gcc-arm-embedded файл gcc-arm-none-eabi-4_9-2015q1-20150306-win32.zip

Кокос работает, Вин ХР.. В переменные среды, на всякий, прописал путь С:\GCCARM\bin

Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...
  • 7 месяцев спустя...
  • 4 месяца спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...