Arlleex 183 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба Цитата TIM3->SR &= ~TIM_SR_UIF; Зачем тут &? Этот бит очищается при записи 0, 1 не изменит его состояние. Цитата GPIOA->ODR ^= (1<<GPIO_ODR_OD8_Pos); Ну и зачем? Не атомарно же. А, новичок, ток щас прочитал. Но все зачеркнутое верно Хотя тут, судя по всему, тупо стартап не от того МК взяли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 2 февраля, 2021 Опубликовано 2 февраля, 2021 (изменено) · Жалоба Вообще то да, был неправ, действительн если не вызывается то и не скомпелируется. Смотрел примеры от IAR они все на HAl LL MX нет на CMSIS, не понятно ничего. Just now, Arlleex said: Зачем тут &? Этот бит очищается при записи 0, 1 не изменит его состояние. Ну и зачем? Не атомарно же. А, новичок, ток щас прочитал. Но все зачеркнутое верно Хотя тут, судя по всему, тупо стартап не от того МК взяли. TIM3->SR &= ~TIM_SR_UIF; это запись нуля. какой стартап вы о чем ? Just now, MrBearManul said: Ваш проект. Я не знаю. Ищите средствами ОС за которой работаете по имени. По какому имени ? Изменено 2 февраля, 2021 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба 46 минут назад, whale сказал: ...это запись нуля ...не только в бит TIM_SR_UIF. Цитата ...какой стартап вы о чем? О стартап-файле, в котором в том числе таблица векторов описана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба Все победил, оказывается нужно было еще строеву куч файлов подключить и настроить, я то наивный думал что IAR ARM сам все должен подключить зря что ли ему тип мк указывал а тут даже конь не валялся. Just now, Arlleex said: ...не только в бит TIM_SR_UIF. Это почему же ? TIM_SR_UIF = 1; ~TIM_SR_UIF = FFFFFE TIM3->SR &= TIM3->SR & FFFFFE - сбрасываем ровно один бит 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба 23 минуты назад, whale сказал: Это почему же? SR - это volatile-регистр. Флажки там устанавливаются аппаратно, а сбрасываются программно. Между операцией чтения SR и записью "обнуления" (SR = SR & ~UIF) есть вероятность изменчивости SR. Например, потому что произошло еще какое-то событие таймера. И Вы также сбросите это прерывание, как и UIF. Да, в Вашем конкретном случае с одним прерыванием, возможно, ничего плохого не произойдет. Но в общем случае, для того и помечены биты в SR как "r_wc0", т.е. очищаются они атомарной записью нуля, а не операцией read-modify-write. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба Ну бит то один сбрасывается, в этом был вопрос, а то что он там еще за что то отвечает и может измениться это другой вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба 2 часа назад, whale сказал: TIM3->SR &= ~TIM_SR_UIF; Замените на TIM3->SR = ~TIM_SR_UIF; Запись 1 во все прочие биты регистра не изменит их значений. Зато операция сброса бита станет атомарной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 2 февраля, 2021 Опубликовано 2 февраля, 2021 (изменено) · Жалоба Понятно, единица туда записываться просто не будет ) В догонку вопрос, не пускается генератор HSE вот такая штука вылетает с return 1, генерации на кварце нет, кондеры по 20 пф, может такое быть из-за неподходящего кварца ? кварц 16мгц (на 6 мгц тоже не стартует) может что то еще прописать нужно ? VOS = 1 RCC->CR |= (1<<RCC_CR_HSEON_Pos); for(StartUpCounter=0; ; StartUpCounter++) { if(RCC->CR & (1<<RCC_CR_HSERDY_Pos)) break; if(StartUpCounter > 0xF000) { RCC->CR &= ~(1<<RCC_CR_HSEON_Pos); return 1; } } Изменено 2 февраля, 2021 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба Ну а если временно убрать проверку if(StartUpCounter > 0xF000)? Может, она (таймаут-задержка) тупо мала для разгона кварца. Хотя при тактировании изначально от HSI (8МГц), времени на таймаут будет порядка нескольких десятков мс, чего должно хватать с лихвой. Смотрите на качество монтажа, на правильность тех самых 20пФ (может, там не 20пФ запаяли, а что-то другое). А может там и не 20пФ должно быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 2 февраля, 2021 Опубликовано 2 февраля, 2021 (изменено) · Жалоба Задержку убирал, смотрел генерацию на ноге out так и не появилась ( ps если верить поиску проблемма стара как мир, какие то геморойные эти stm32 и профита пока не видно... Изменено 2 февраля, 2021 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 2 февраля, 2021 Опубликовано 2 февраля, 2021 · Жалоба "Всю Одессу удовлетворяеет, а Моню нет... поглядите на этого привереду" ;-) Выводы, на которых кварц, переключены на него или тупо GPIO? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 3 февраля, 2021 Опубликовано 3 февраля, 2021 · Жалоба 11 часов назад, whale сказал: По какому имени ? *startup*.* 10 часов назад, whale сказал: Все победил, оказывается нужно было еще строеву куч файлов подключить и настроить, я то наивный думал что IAR ARM Какую тучу файлов? Укажите их, пожалуйста. Обычно достаточно подключить файлы проекта. И всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 3 февраля, 2021 Опубликовано 3 февраля, 2021 · Жалоба 11 часов назад, whale сказал: ...какие то геморойные эти stm32 и профита пока не видно... Цитата ...и фары протирал и по колесам стучал, все равно не заводится... (с) 7 часов назад, Obam сказал: Выводы, на которых кварц, переключены на него или тупо GPIO? Не надо там ничего переключать... Эти выводы автоматом на кварц подключаются, когда HSE запускается. Если, конечно, намеренно не переключить обратно на GPIO и пытаться включать HSE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 3 февраля, 2021 Опубликовано 3 февраля, 2021 · Жалоба 12 часов назад, whale сказал: а то что он там еще за что то отвечает и может измениться это другой вопрос. Вы невнимательно прочитали) Он больше ни за что не отвечат. Вы такой записью можете стереть другие биты и потерять статусы других прерываний. Перечитайте ещё раз внимательно сообщение уважаемого @Arlleex, я тоже наступил на такую ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 3 февраля, 2021 Опубликовано 3 февраля, 2021 · Жалоба 3 часа назад, Arlleex сказал: Не надо там ничего переключать... Эти выводы автоматом на кварц подключаются, когда HSE запускается. Кроме режима ног, обычно нужно ещё правильно установить переключатель "кварц/генератор". Не факт, что ТС это сделал - судя по всему он вообще мануал не открывал. 3 часа назад, MrBearManul сказал: Вы невнимательно прочитали) Он больше ни за что не отвечат. Вы такой записью можете стереть другие биты и потерять статусы других прерываний. Просто удивительно - уже какое сообщение вдалбливаете ТСу (и Вы и другие) очевидные истины из мануала на МК, а он упрямо продолжает игнорировать все советы, ещё и спорит с советчиками. Хотя сам даже не открывал мануал. Как будто нужно не ему, а советчикам. Истинно: "Чукча не читатель...." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться