Easyelectronics.ru

Электроника для всех
Текущее время: 23 янв 2021, 01:12

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Подскажите куда копать
СообщениеДобавлено: 14 ноя 2020, 23:55 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
Включаю тактирование порта С
Код:
RCC_APB2ENR |= 1<<4; //I/O port C clock enable

тактирование включается
Вложение:
Screenshot from 2020-11-14 21-40-22.png
Screenshot from 2020-11-14 21-40-22.png [ 7.4 Кб | Просмотров: 552 ]

настраиваю 13,14 ногу
Код:
GPIOC_CRH_C |= (0<<27 | 0 << 26 | 1 << 25 |  0 << 24); //PortC Pin14 configuration register
GPIOC_CRH_C |= (0<<23 | 0 << 22 | 1 << 21 |  0 << 20); //PortC Pin13 configuration register]

ноги настраиваются
Вложение:
Screenshot from 2020-11-14 21-41-02.png
Screenshot from 2020-11-14 21-41-02.png [ 5.71 Кб | Просмотров: 552 ]

моргаю
Код:
               delay(1000);
      GPIOC_ODR |= 1<<13; //I/O port C pin 13 enable
      GPIOC_ODR |= 1<<14; //I/O port C pin 14 enable
      delay(1000);
      GPIOC_ODR &= ~(1<<13); //I/O port C pin 13 disable
      GPIOC_ODR &= ~(1<<14); //I/O port C C pin 14 disable

регистры переключаются
Вложение:
Screenshot from 2020-11-14 21-41-50.png
Screenshot from 2020-11-14 21-41-50.png [ 3.34 Кб | Просмотров: 552 ]

при этом 13 работает, 14 нет, больше того, никакой не работает кроме 13, и другой порт пробовал тоже не работает.
Пробую халом - моргают. Подскажите что не так делаю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 00:09 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7239
1. На порте C (могут) висят генераторы LSE и HSE (разные ноги). Для оцепления от порта, это надо вЫключить.
2. для установки или сброса используйте регистры BRR и BSRR вместо ODR
3. Никогда не пишите констант в программе. Просто НИКОГДА. Все нужные числа прописаны в stm32f***.h под ваш процессор.
4. в конфигурационные регистры можно настраивать только так: "reg=(reg & mask) | new_bits;", т.к. в целевых битах может быть не 0.

add
Вообще, по таким вопросам есть специальная тема: viewtopic.php?f=35&t=8279


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 00:24 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 163
Прошу прощения за такой вариант подсказки, но мне именно этот формат показался удобным. Автор не я)


Вложения:
C14F1666-AD09-408D-96B2-DD4F6D496E15.jpeg
C14F1666-AD09-408D-96B2-DD4F6D496E15.jpeg [ 13.18 Кб | Просмотров: 533 ]
67E3C14B-05BD-4AD0-82D4-D4C2995452C5.jpeg
67E3C14B-05BD-4AD0-82D4-D4C2995452C5.jpeg [ 34.44 Кб | Просмотров: 533 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 00:37 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
u37,порты не заняты
Вложение:
a4facю.gif
a4facю.gif [ 61.19 Кб | Просмотров: 530 ]

2. brr - понятно, но пока для экспериментов без разница
3,4 я пока не пишу, разбираюсь. Для этого нужно руками все потрогать.

не заметил для чайников, перенесите


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 00:53 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
alm604в таком варианте вообще ниче не работает (у меня задействован только CRH)
Вложение:
Screenshot from 2020-11-14 22-50-31.png
Screenshot from 2020-11-14 22-50-31.png [ 5.52 Кб | Просмотров: 521 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 09:52 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 163
Чот со скриншота непонятно, что за два столбца регистра CRH. Если в нем 0x40011004, то 13 и 14 ноги настроены на аналоговый вход.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 10:01 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
Это отладчик так отображает,0x40011004 это начальный адрес CRH регистра
Вложение:
Screenshot from 2020-11-15 07-57-02.png
Screenshot from 2020-11-15 07-57-02.png [ 3.15 Кб | Просмотров: 470 ]

Вложение:
Screenshot from 2020-11-15 07-57-45.png
Screenshot from 2020-11-15 07-57-45.png [ 9.25 Кб | Просмотров: 470 ]

Первый столбец начальный адрес, второй значение регистра


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 10:08 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 163
Простите, затупил. Но тогда ноги 13-15 настроены на Floating Input... Остальные - Alternate Output. Запишите Вы в него 0x11111111 и пробуйте. Все ноги на выход.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 10:25 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 163
Похоже мой комментарий требует некоторых пояснений. Вы не должны были копировать значения из моего проекта - у меня даже МК стоногий.
Это настройка каждой ноги любого порта:
Код:
/* Pin Configuration Register Values
0x0  Analog Input
0x1  Output 10Mhz
0x2  Output  2Mhz
0x3  Output 50Mhz
0x4  Floating Input (default)
0x5  Open-Drain 10Mhz
0x6  Open-Drain  2Mhz
0x7  Open-Drain 50Mhz
0x8  Input with pull up/down
0x9  Alternate Output 10Mhz
0xA  Alternate Output  2Mhz
0xB  Alternate Output 50Mhz
0xC     -
0xD  Alternate Open-Drain 10Mhz
0xE  Alternate Open-Drain  2Mhz
0xF  Alternate Open-Drain 50Mhz
*/

Теперь как это применить..
Ниже на порт x (букву подставляете сами) ноги 0..3 и 12..15 настроены на выход, 4..7 на вход или не используются, 8 - аналоговый вход, 9..11 - альтернативный выход. Просто, как пример.
Код:
// Ноги:      15------8                 7------0
  GPIOx->CRH = 0x1111BBB0; GPIOx->CRL = 0x44441111;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 18:45 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Ну зачем эти "магические числа"? Удобней же макросы определить и просто писать вот так:
Код:
    // buzzer (PC13): pushpull output
    GPIOC->CRH = CRH(13, CNF_PPOUTPUT|MODE_SLOW);

Сразу понятно, что здесь делается.
Сами макросы:
Код:
#define CRL(pin, cnfmode)  ((cnfmode) << (pin*4))
#define CRH(pin, cnfmode)  ((cnfmode) << ((pin-8)*4))
// MODE:
#define MODE_INPUT      0
#define MODE_NORMAL     1  // 10MHz
#define MODE_SLOW       2  // 2MHz
#define MODE_FAST       3  // 50MHz
// CNF:
#define CNF_ANALOG      (0 << 2)
#define CNF_PPOUTPUT    (0 << 2)
#define CNF_FLINPUT     (1 << 2)
#define CNF_ODOUTPUT    (1 << 2)
#define CNF_PUDINPUT    (2 << 2)
#define CNF_AFPP        (2 << 2)
#define CNF_AFOD        (3 << 2)

Но, конечно, у STM32F103 конфигурация GPIO вообще через одно место!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 22:08 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
К сожалению не могу продолжить эксперименты, ст линк накрылся медным тазом. Заказал 5 штук


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 22:21 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Неужто под рукой нет преобразователя USB<>UART?
Я вот вообще уже забыл, когда последний раз стлинком пользовался! Прошиваю исключительно через бутлоадер (а на STM32F0x2 вообще песня: там dbu, так что просто в терминале вхожу в режим бутлоадера, прошиваю, потом корочу контакты reset и работаю).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 22:36 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
Есть, я сильно не вникал в этот метод, там же вроде сначала нужно бутлоадер загрузить через ст линк? Или я путаю? И отладки не будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 22:54 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Нет, там просто boot0 поджать и reset щелкнуть...
А отладка через ст-линк все равно не имеет никакого смыла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 22:58 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
да, просмотрел инфу, порпобую


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 15 ноя 2020, 23:16 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
Eddy_Em писал(а):
А отладка через ст-линк все равно не имеет никакого смыла.
Ну что за бред? Под отладчиком натыкать нужные биты в порту и понять свою ошибку - дело одной минуты.

Недавно запускал USB на h750. Вроде всё как всегда сделал, а резистор не включается. Подключился "на ходу" отладчиком к работающему по DFU загрузчику и за пару минут увидел недовыставленный мной бит. Боюсь даже представить сколько лет у тебя уйдёт на USB H7-го.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 01:54 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Т.е. в своем коде ты "недовыставленный бит" не увидел, а в отладчике увидел? Ну-ну…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 02:51 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
Eddy_em спасибо за подсказку, действительно все работет....
ну как все....
Код:
blink(1000000);
      GPIOC_ODR |= 1<<13; //I/O port C pin 13 enable
      GPIOC_ODR |= 1<<14; //I/O port C pin 14 enable
      GPIOA_ODR |= 1<<1; //I/O port A pin 1 enable
      GPIOA_ODR |= 1<<2; //I/O port A pin 2 enable
      GPIOA_ODR |= 1<<3; //I/O port A pin 3 enable
      blink(1000000);
      GPIOC_ODR &= ~(1<<13); //I/O port C pin 13 disable
      GPIOC_ODR &= ~(1<<14); //I/O port C  pin 14 disable
      GPIOA_ODR &= ~(1<<1); //I/O A pin 1 disable
      GPIOA_ODR &= ~(1<<2); //I/O A pin 2 disable
      GPIOA_ODR &= ~(1<<3); //I/O A pin 3 disable

включаю аш 5 ног, и работает только одна, 13. Ну я бы понял если ничего не работает, но 13 то работает...... Вот в чем прикол
При этом если тоже самое сделать с помощью hal то работает
Что то упускаю из виду, а что не пойму


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 04:01 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
Eddy_Em писал(а):
Т.е. в своем коде ты "недовыставленный бит" не увидел, а в отладчике увидел? Ну-ну…
Именно так. Я посмотрел состояние регистров USB на работающем коде и на своём и тут же увидел разницу. Внёс изменения в код и вуаля! Когда запустишь USB хотя бы на одном чипе с OTG тогда твоё "ну-ну" будет хоть что-то стоить. А так это обычное бла-бла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 09:45 
Старожил

Зарегистрирован: 02 ноя 2015, 19:21
Сообщения: 698
Откуда: Санкт-Петербург
вообще то на С14 и С15 часовой кварц висит. даже на картинке выше это видно и подписано...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 11:19 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
да я это заметил, но на А1,А2,А3 же ничего не висит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 11:28 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
A в GPIOA->CRL что?
P.S. А то, что на PC13/14 кварц висит — не беда, разве что будут конденсаторы немножко сжирать фронты… Ну, может быть, еще и помехи от кварца появятся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 11:50 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
я пока в ручную разбираюсь чт к чему
Код:
#define GPIO_CRL_A (*(volatile unsigned long*)0x40010800) //PortA configuration register

RCC_APB2ENR |= 1<<2; //I/O port A clock enable

GPIO_CRL_A |= (0<<7 | 0 << 6 | 1 << 5 | 0 << 4); //PortA Pin1 configuration register
   GPIO_CRL_A |= (0<<11 | 0 << 10 | 1 << 9 | 0 << 8); //PortA Pin2 configuration register
   GPIO_CRL_A |= (0<<15 | 0 << 14 | 1 << 13 | 0 << 12); //PortA Pin3 configuration register

Вложение:
Screenshot from 2020-11-16 09-44-05.png
Screenshot from 2020-11-16 09-44-05.png [ 3.17 Кб | Просмотров: 238 ]

Вложение:
Screenshot from 2020-11-16 09-44-18.png
Screenshot from 2020-11-16 09-44-18.png [ 8.99 Кб | Просмотров: 238 ]

Вложение:
Screenshot from 2020-11-16 09-44-49.png
Screenshot from 2020-11-16 09-44-49.png [ 5.59 Кб | Просмотров: 238 ]

больше картинок нельзя, но там
Bit 2 IOPAEN: I/O port A clock enable
MODEy[1:0]: Port x mode bits (y= 0 .. 7) - 10: Output mode, max speed 2 MHz.
CNFy[1:0]: Port x configuration bits (y= 0 .. 7) - 00: General purpose output push-pull


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 12:43 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
Olegins писал(а):
я пока в ручную разбираюсь чт к чему
Код:
#define GPIO_CRL_A (*(volatile unsigned long*)0x40010800) //PortA configuration register
Зачем? Скажите, зачем делать дурацкую работу? Ничего кроме внесения ошибок вы не получите. Производитель в заголовочных файлах уже всё железо описал. GPIOA->CRL. Пользуйтесь!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подскажите куда копать
СообщениеДобавлено: 16 ноя 2020, 12:59 
Только пришел

Зарегистрирован: 14 ноя 2020, 23:36
Сообщения: 23
потому что это у меня не работает (и ошибку не выдает и диод не включается), и еще с этим разбираться вот прям щас не хочу
да и не понимание того, что там происходит GPIOA->CRL хотя бы приблизительно напрягает


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB