Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 18.02.2020, 23:11  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,901
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от dgrishin Посмотреть сообщение
в конструкции while (~GPIOC-›IDR & (GPIO_IDR_IDR6|GPIO_IDR_IDR7)) {}

компилятор ведь не знает что GPIOC-›IDR это read-only регистр и попытка изменить его содержимое (~GPIOC-›IDR) приводит к полному фиаско
Вот только (~GPIOC-›IDR) - это НЕ попытка изменить содержимое GPIOC-›IDR
Реклама:
AR_Favorit вне форума  
Непрочитано 18.02.2020, 23:56  
Murka-MakMur
Вид на жительство
 
Аватар для Murka-MakMur
 
Регистрация: 05.09.2007
Адрес: Новороссия ЛНР Рубежное -> РФ Калуга
Сообщений: 360
Сказал спасибо: 10
Сказали Спасибо 73 раз(а) в 58 сообщении(ях)
Murka-MakMur на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от AJScorp Посмотреть сообщение
А можно посмотреть листинг на мой код?
Кажется должен был сохранить на работе.
Кстати в последнем листинге оптимизация была выключена.
А проблема у меня похоже с быстродействием связана или RTOS мешает.
Сообщение от AR_Favorit Посмотреть сообщение
Вот только (~GPIOC-›IDR) - это НЕ попытка изменить содержимое GPIOC-›IDR
Кажись на правду похоже, вроде всегда этот обработчик начинается вот так
Код:
LDR.N     RХ, [PC, #0xХХ]
LDR       RХ, [RХ]
То есть копирует в регистр содержимое IDR, а потом с регистром развлекается.
__________________
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Чем больше слёз тем больше облегчения, в слезах и заключается лечение.
Не зли меня
Murka-MakMur вне форума  
Непрочитано 11.03.2020, 13:19  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Мужики, помогите! Как правильно программно переключиться в бутлоадер на STM32F072?
Делаю вот так:
Код:
void Jump2Boot(){
    void (*SysMemBootJump)(void);
    volatile uint32_t addr = 0x1FFFC800;
    // reset systick
    SysTick-›CTRL = 0;
    SysTick-›LOAD = 0;
    SysTick-›VAL = 0;
    // disable all interrupts
    //__disable_irq();
    // reset RCC & interrupts
    sysreset();
    __DSB();
    // remap memory to 0 (only for STM32F0)
    SYSCFG-›CFGR1 = 0x01;
    __DSB();__ISB();
    SysMemBootJump = (void (*)(void)) (*((uint32_t *)(addr + 4)));
    // set main stack pointer
    __set_MSP(*(uint32_t *)addr);
    SysMemBootJump();
}
Однако, вместо переключения в бутлоадер оно просто перезапускается!
// функция sysreset ничего не перезагружает, а просто устанавливает "умолчательные" настройки для основных регистров тактирования и периферии + выключает прерывания.
Если убираю sysreset, то после перезапуска dmesg выдает ошибки считывания дескрипторов.
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 11.03.2020, 18:55  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Решено при помощи с "радиокота":
Код:
void Jump2Boot(){
    void (*SysMemBootJump)(void);
    volatile uint32_t addr = 0x1FFFC800;
    // reset systick
    SysTick-›CTRL = 0;
    // reset clocks
    RCC-›APB1RSTR = RCC_APB1RSTR_CECRST    | RCC_APB1RSTR_DACRST    | RCC_APB1RSTR_PWRRST    | RCC_APB1RSTR_CRSRST  |
                    RCC_APB1RSTR_CANRST    | RCC_APB1RSTR_USBRST    | RCC_APB1RSTR_I2C2RST   | RCC_APB1RSTR_I2C1RST |
                    RCC_APB1RSTR_USART4RST | RCC_APB1RSTR_USART3RST | RCC_APB1RSTR_USART2RST | RCC_APB1RSTR_SPI2RST |
                    RCC_APB1RSTR_WWDGRST   | RCC_APB1RSTR_TIM14RST  | RCC_APB1RSTR_TIM7RST   | RCC_APB1RSTR_TIM6RST |
                    RCC_APB1RSTR_TIM3RST   | RCC_APB1RSTR_TIM2RST;
    RCC-›APB2RSTR = RCC_APB2RSTR_DBGMCURST | RCC_APB2RSTR_TIM17RST | RCC_APB2RSTR_TIM16RST | RCC_APB2RSTR_TIM15RST |
                    RCC_APB2RSTR_USART1RST | RCC_APB2RSTR_SPI1RST  | RCC_APB2RSTR_TIM1RST  | RCC_APB2RSTR_ADCRST   | RCC_APB2RSTR_SYSCFGRST;
    RCC-›AHBRSTR = 0;
    RCC-›APB1RSTR = 0;
    RCC-›APB2RSTR = 0;
    // Enable the SYSCFG peripheral.
    RCC-›APB2ENR |= RCC_APB2ENR_SYSCFGEN;
    // remap memory to 0 (only for STM32F0)
    SYSCFG-›CFGR1 = 0x01; __DSB(); __ISB();
    SysMemBootJump = (void (*)(void)) (*((uint32_t *)(addr + 4)));
    // set main stack pointer
    __set_MSP(*((uint32_t *)addr));
    // jump to bootloader
    SysMemBootJump();
}
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 11.03.2020, 19:12  
Murka-MakMur
Вид на жительство
 
Аватар для Murka-MakMur
 
Регистрация: 05.09.2007
Адрес: Новороссия ЛНР Рубежное -> РФ Калуга
Сообщений: 360
Сказал спасибо: 10
Сказали Спасибо 73 раз(а) в 58 сообщении(ях)
Murka-MakMur на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от AJScorp Посмотреть сообщение
А можно посмотреть листинг на мой код?
Таки добрался, выкладываю всё что сохранил, там более менее понятно.
Код:
   0x800'5f8c: 0x4813         	LDR.N     R0, [PC, #0x4c]         ; GPIOC_IDR
  while (~GPIOC-›IDR & (GPIO_IDR_IDR6|GPIO_IDR_IDR7))
   0x800'5f8e: 0x6801         	LDR       R1, [R0]	в R1 из адреса в [R0]
   0x800'5f90: 0x43c9         	MVNS      R1, R1
   0x800'5f92: 0xf011 0x0fc0 	TST.W     R1, #192                ; 0xc0
   0x800'5f96: 0xd1fa         	BNE.N     0x800'5f8e
Код:
   0x800'5f8c: 0x4915         LDR.N     R1, [PC, #0x54]         ; GPIOC_IDR
  while ((GPIOC-›IDR & GPIO_IDR_IDR6)››6 != 1 && (GPIOC-›IDR & GPIO_IDR_IDR7)››7 != 1)
   0x800'5f8e: 0x6808         	LDR       R0, [R1]
   0x800'5f90: 0xf3c0 0x1080  	UBFX      R0, R0, #6, #1
   0x800'5f94: 0x2800         	CMP       R0, #0
   0x800'5f96: 0xbf02         	ITTT      EQ
   0x800'5f98: 0x6808         	LDREQ     R0, [R1]
   0x800'5f9a: 0xf3c0 0x10c0  	UBFXEQ    R0, R0, #7, #1
   0x800'5f9e: 0x2800         	CMPEQ     R0, #0
   0x800'5fa0: 0xd0f5         	BEQ.N     0x800'5f8e
Без оптимизации
Код:
while ((GPIOC-›IDR & GPIO_IDR_IDR6)››6 != 1 && (GPIOC-›IDR & GPIO_IDR_IDR7)››7 != 1)
   0x800'5e1e: 0x4918         	LDR.N     R1, [PC, #0x60]         ; GPIOC_IDR в R1 адрес GPIOC_IDR 
   0x800'5e20: 0x6808         	LDR       R0, [R1]		в R0 значение по адресу R1
   0x800'5e22: 0xf3c0 0x1080  	UBFX      R0, R0, #6, #1	переписывает указанные биты начиная с мл бит
   0x800'5e26: 0x2800         	CMP       R0, #0		сравнивает R0 с 0 если 0 то Z=1
   0x800'5e28: 0xd104         	BNE.N     0x800'5e34 	если флаг Z=0 переходим по адресу
   0x800'5e2a: 0x6808         	LDR       R0, [R1] 		в R0 значение по адресу R1
   0x800'5e2c: 0xf3c0 0x10c0  	UBFX      R0, R0, #7, #1 	переписывает указанные биты начиная с мл бит
   0x800'5e30: 0x2800         	CMP       R0, #0		сравнивает R0 с 0 если 0 то Z=1
   0x800'5e32: 0xd0f4         	BEQ.N     0x800'5e1e 	если флаг Z=1 переходим по адресу
Код:
while ( !((GPIOC-›IDR & GPIO_IDR_IDR6)››6 != 0) & !((GPIOC-›IDR & GPIO_IDR_IDR7)››7 != 0))
   0x800'5e1e: 0x4816         LDR.N     R0, [PC, #0x58]         ; GPIOC_IDR
   0x800'5e20: 0x6801         LDR       R1, [R0]
   0x800'5e22: 0x6800         LDR       R0, [R0]
   0x800'5e24: 0x0649         LSLS      R1, R1, #25
   0x800'5e26: 0xd401         BMI.N     0x800'5e2c
   0x800'5e28: 0x0600         LSLS      R0, R0, #24
   0x800'5e2a: 0xd5f8         BPL.N     0x800'5e1e
Код:
 
while ((GPIOC-›IDR & (GPIO_IDR_IDR6|GPIO_IDR_IDR7)) != (GPIO_IDR_IDR6|GPIO_IDR_IDR7))
   0x800'5e1e: 0x4816         LDR.N     R0, [PC, #0x58]         ; GPIOC_IDR
   0x800'5e20: 0x6800         LDR       R0, [R0]
   0x800'5e22: 0xf010 0x00c0  ANDS.W    R0, R0, #192            ; 0xc0
   0x800'5e26: 0x28c0         CMP       R0, #192                ; 0xc0
   0x800'5e28: 0xd1f9         BNE.N     0x800'5e1e
Ну а это я по трём единицам пробовал
Код:
while ((GPIOC-›IDR & (GPIO_IDR_IDR5|(GPIO_IDR_IDR6|GPIO_IDR_IDR7))) != (GPIO_IDR_IDR5|(GPIO_IDR_IDR6|GPIO_IDR_IDR7)))
   0x800'5e1e: 0x4816         LDR.N     R0, [PC, #0x58]         ; GPIOC_IDR
   0x800'5e20: 0x6800         LDR       R0, [R0]
   0x800'5e22: 0xf010 0x00e0  ANDS.W    R0, R0, #224            ; 0xe0
   0x800'5e26: 0x28e0         CMP       R0, #224                ; 0xe0
   0x800'5e28: 0xd1f9         BNE.N     0x800'5e1e
__________________
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Чем больше слёз тем больше облегчения, в слезах и заключается лечение.
Не зли меня
Murka-MakMur вне форума  
Непрочитано 12.04.2020, 17:03  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Кто разобрался нормально с CAN-шиной?
Меня смущает поле CAN2SB[5:0] регистра CAN-›FMR: зачем оно вообще нужно, если у STM32F0x2 нет CAN2?
Завел два фильтра вот так:
Код:
    CAN-›FMR = CAN_FMR_FINIT;
    CAN-›FA1R = CAN_FA1R_FACT0 | CAN_FA1R_FACT1; 
    CAN-›sFilterRegister[0].FR1 = (1‹‹21)|(1‹‹5); // all odd IDs
    CAN-›FFA1R = 2; // filter 1 for FIFO1, filter 0 - for FIFO0
    CAN-›sFilterRegister[1].FR1 = (1‹‹21); // all even IDs
    CAN-›FMR &=~ CAN_FMR_FINIT;
принимает и четные, и нечетные идентификаторы...
__________________
Смерть бандеровской мразоте!

Последний раз редактировалось eddy; 12.04.2020 в 17:57.
eddy вне форума  
Непрочитано 22.04.2020, 21:17  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Кто-нибудь сталкивался с уровнем на PPout GPIO в 2.4В вместо 3.3?
Как я так умудрился МК спалить, что все вроде работает, но до 3.3В не дотягивают некоторые ноги (специально вообще нагрузку снял — четко на ноге МК такое напряжение!). Плата отмыта, коротить не должно...
И почему-то сопротивление между этими ногами и землей в полностью отключенном состоянии — 50..60кОм! Сгорели pullup-мосфеты?
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 22.04.2020, 21:33  
Murka-MakMur
Вид на жительство
 
Аватар для Murka-MakMur
 
Регистрация: 05.09.2007
Адрес: Новороссия ЛНР Рубежное -> РФ Калуга
Сообщений: 360
Сказал спасибо: 10
Сказали Спасибо 73 раз(а) в 58 сообщении(ях)
Murka-MakMur на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy, Нагрузи до номинальной нагрузки если выходное напряжение снизится то убиты 100%
__________________
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Чем больше слёз тем больше облегчения, в слезах и заключается лечение.
Не зли меня
Murka-MakMur вне форума  
Непрочитано 22.04.2020, 22:00  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Murka-MakMur, нагружаю на резистор 330 Ом — падает с 2.4 до 2.2В.
Блин! Придется, наверное, идти на работу и перепаивать чип…
Зря я себе сразу две девборды не спаял…
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 22.04.2020, 22:08  
Murka-MakMur
Вид на жительство
 
Аватар для Murka-MakMur
 
Регистрация: 05.09.2007
Адрес: Новороссия ЛНР Рубежное -> РФ Калуга
Сообщений: 360
Сказал спасибо: 10
Сказали Спасибо 73 раз(а) в 58 сообщении(ях)
Murka-MakMur на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Придется, наверное, идти на работу и перепаивать чип…
Убиты. А это критично? Может оно и так будет работать, пока тестируешь так поиграешься, а как всё будет готово заменишь.
__________________
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Чем больше слёз тем больше облегчения, в слезах и заключается лечение.
Не зли меня
Murka-MakMur вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 16:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot