| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Непознат код http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=15009 |
Страница 1 от 1 |
| Автор: | RM [ Съб Яну 21, 2017 2:23 pm ] | |||||||||
| Заглавие: | Непознат код | |||||||||
Здравейте Преправям едни И2Ц софтурни драйвери, за АМ2321. Причината е че с хардуерните такива не ще да работи, иска едни неща за събуждане дето няма как да му ги дам и едни времена ... не мога да се справя.
Това ми трябва на нормален C. Това CRL може да е дефинирано в друг ххх.H фаил дето го нямам (sys.h) Да добавя проца е ST32F103 |
||||||||||
| Автор: | miro_atc [ Съб Яну 21, 2017 3:36 pm ] | |||||||||
| Заглавие: | Re: Непознат код | |||||||||
Не разбирам какво ти трябва... GPIOB е порт B, т.е. става дума за пинове PB0-PB15 CRLH е Port configuration register low, т.е. в него са настройките на PB0-PB7 като за всеки пин има по 4 бита. Младшите 2 бита определят режима: MODEy[1:0]: Port x mode bits (y= 0 .. 7) 00: Input mode (reset state) 01: Output mode, max speed 10 MHz. 10: Output mode, max speed 2 MHz. 11: Output mode, max speed 50 MHz. Старшите 2 са CNFy[1:0]: Port x configuration bits (y= 0 .. 7) In input mode (MODE[1:0]=00): 00: Analog mode 01: Floating input (reset state) 10: Input with pull-up / pull-down 11: Reserved In output mode (MODE[1:0] > 00): 00: General purpose output push-pull 01: General purpose output Open-drain 10: Alternate function output Push-pull 11: Alternate function output Open-drain В твоя пример имаш:
GPIOB->CRL&=0X0FFFFFFF - сваля старшите 4 бита, а GPIOB->CRL|=4<<28 им слага стойност. Идеята вероятно е да конфигурират пин PB7 като Input mode + Floating input във втория макрос идеята им сигурно е Output mode, max speed 50 MHz + General purpose output push-pull С две думи сетват най-старшите 4 бите на CRL за да програмират PB7 в един или друг режим. Само като забележка, въпросният регистър има не 4 а общо 32 бита. И ако не дай си Боже решиш да ползваш и някой друг пин от PB0-PB6 то трябва да си много внимателен двете конфигурирания да не се застъпват. Т.е. да не би в прекъсване някъде да програмираш един пин, а в друг контекст да програмираш друг пин. Резултатът може и да не ти хареса |
||||||||||
| Автор: | ToHu [ Съб Яну 21, 2017 6:26 pm ] |
| Заглавие: | Re: Непознат код |
па то това си е номрално C |
|
| Автор: | Zdrav [ Съб Яну 21, 2017 7:07 pm ] | |||||||||
| Заглавие: | Re: Непознат код | |||||||||
Това заклинание е по-добро:
Избягва междинното превключване, за кратко, на пина в "Analog mode". |
||||||||||
| Автор: | Zdrav [ Съб Яну 21, 2017 7:21 pm ] | ||
| Заглавие: | Re: Непознат код | ||
Ето и един примерен хедър, където да видиш как е деклариран регистъра CRL.
|
|||
| Автор: | RM [ Съб Яну 21, 2017 7:53 pm ] |
| Заглавие: | Re: Непознат код |
Да благодаря В даташеита регистрите са GPIOB_CRL ,GPIOB_CRH , GPIOB_IDR ... Някъде трябва да има нещо подобно на структура GPIOB {CRL,CRH,IDR...} За да става така GPOIB->CRL Иначе не мога да го разбера това. |
|
| Автор: | RM [ Съб Яну 21, 2017 7:56 pm ] | |||||||||
| Заглавие: | Re: Непознат код | |||||||||
Да благодаря писал съм по бавно от теб. |
||||||||||
| Автор: | RM [ Нед Яну 22, 2017 6:45 pm ] | ||
| Заглавие: | Re: Непознат код | ||
Заработи на mikroC PRO for ARM. Това е първия вариант в който тръгна, без оптимизиране. Бъдете снизходителни, това е аматьорска работа, и преправен чужд код, с триста зора. На някой непрофесионалист може да му е от полза.
|
|||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|