STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
Чтото нефига непойму,подсоединил кнопку NRST через землю,когда программатор подключен - при нажатии кнопки перегружаеться, если отключить программатор и перезапустить питание некаких действий,надо кнопку boot на землю сажать?
Вот еще одна интересная фигня,передергиваю питание несколко раз -может заработать программа,сколко должен быть кондер NRST на подтяжку земли? у меня 1мкФ полярный.
Вот еще одна интересная фигня,передергиваю питание несколко раз -может заработать программа,сколко должен быть кондер NRST на подтяжку земли? у меня 1мкФ полярный.
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
DAC 72 Mhz
Очередная проблема с DAC.
Не могу заставить DAC работать на STM32F107 на частотах выше 36 MHz.
Строчка RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; есть для того, чтобы APB1 работало на частоте не более 36 MHz. А все равно не работает.
При тактировании всего микроконтроллера от 36 MHz работает DAC.
В чем может быть проблема?
PS: Проблему решил, но причины не понял.
Не могу заставить DAC работать на STM32F107 на частотах выше 36 MHz.
Строчка RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; есть для того, чтобы APB1 работало на частоте не более 36 MHz. А все равно не работает.
При тактировании всего микроконтроллера от 36 MHz работает DAC.
В чем может быть проблема?
PS: Проблему решил, но причины не понял.
Код: Выделить всё
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
delay_us(100); //Строчка решающая проблеммы
DAC_Cmd(DAC_Channel_1, ENABLE);
Re: STM32 новичку в ARM что к чему
Подскажите пожалуйста, как называются обработчики прерываний у таймеров 6 и 7 МК stm32f103c8t6. В файле stm32f10x.h есть обработчики но их компилятор не видит, как я предполагаю изза директив так как эти обрабочики относятся к 100-й серии а не к 103-й! Подскажите пожалуйста я новичек в stm32
У меня МК на 64 кб флеши, тоесть серия MD Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx
microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.
Вот все обработчики моего МК, но не пойму как тогда работать с таймерами 6 и 7
Код: Выделить всё
TIM6_DAC_IRQn = 54, /*!< TIM6 and DAC underrun Interrupt */
TIM7_IRQn = 55 /*!< TIM7 InterruptКод: Выделить всё
#ifdef STM32F10X_LD_VLУ меня МК на 64 кб флеши, тоесть серия MD Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx
microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.
Вот все обработчики моего МК, но не пойму как тогда работать с таймерами 6 и 7
Код: Выделить всё
#ifdef STM32F10X_MD
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */
USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */
USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */
CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */
CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */
EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */
TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */
TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */
TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt */
TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */
TIM2_IRQn = 28, /*!< TIM2 global Interrupt */
TIM3_IRQn = 29, /*!< TIM3 global Interrupt */
TIM4_IRQn = 30, /*!< TIM4 global Interrupt */
I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */
I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */
I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */
I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */
SPI1_IRQn = 35, /*!< SPI1 global Interrupt */
SPI2_IRQn = 36, /*!< SPI2 global Interrupt */
USART1_IRQn = 37, /*!< USART1 global Interrupt */
USART2_IRQn = 38, /*!< USART2 global Interrupt */
USART3_IRQn = 39, /*!< USART3 global Interrupt */
EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */
RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */
USBWakeUp_IRQn = 42 /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */
#endif /* STM32F10X_MD */-
Ruslan-maniak
- Открыл глаза
- Сообщения: 40
- Зарегистрирован: Вт янв 18, 2011 08:15:32
Re: STM32 новичку в ARM что к чему
А исходя из даташита у МД - 4 таймера. http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf в конце 17-ой страницы. Или я что-то неправильно понимаю?
Re: STM32 новичку в ARM что к чему
Да действительно 4. Я просто читаю референс мануал на всю линейку F10x. Теперь буду еще смотреть и в даташит. Я так и понял, поэтому сделал что хотел на 4-м таймере. А вообще я теряюсь в описании на эти микроконтроллеры. С Атмелами както проще было.
Re: STM32 новичку в ARM что к чему
Гуня писал(а): А вообще я теряюсь в описании на эти микроконтроллеры. С Атмелами както проще было.
Сие дело привычки. Не пройдет и пару месяцев регулярного юзанья STM и забудете AVR как страшный сон.
- oleg63m
- Друг Кота
- Сообщения: 20132
- Зарегистрирован: Чт сен 01, 2011 12:53:27
- Откуда: ТьмуТаракания. Почетный житель подмостовья
- Контактная информация:
Re: STM32 новичку в ARM что к чему
а STM будут приходить в добрых кошмарах 
Шекспир сказал: Судить меня -дано лишь Богу, другим я укажу дорогу... https://natribu.org/
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: STM32 новичку в ARM что к чему
dosikus писал(а):забудете AVR как страшный сон.
Хех, второй вечер настраиваю ADC с DMA и Dual Mode. Пока всю документацию перечитаешь - столько времени проходит. Так что парой месяцев не ограничишься.
Re: STM32 новичку в ARM что к чему
balmer писал(а): Так что парой месяцев не ограничишься.
Ничего удивительного - юзанье SPL увеличивает время осознания на порядок .
А предыдущий "опыт" с AVR еще более отягощает сие...
Re: STM32 новичку в ARM что к чему
Провёл интересный эксперимент. Дрыгаю ногой стм32ф100с4т6 и смотрю осцилографом. Хотел сравнить разницу между скоростью прямого обращения к регистрам и библиотечными функциями. Результат
получается период переключения 250 наносекунд а код
дает период аж 1100 наносекунд! разница более чем в 4 раза! Причём не помогает добавление слова inline к описании функции, и закоментирование всего лишнего
вот код библиотечной функции
С этого делаю вывод что буду пользоваться прямым обращением к регистрам.
Код: Выделить всё
SONAR_IO -> BSRR = SONAR_TX;
SONAR_IO -> BRR = SONAR_TX;получается период переключения 250 наносекунд а код
Код: Выделить всё
GPIO_SetBits(SONAR_IO, SONAR_TX);
GPIO_ResetBits(SONAR_IO, SONAR_TX);вот код библиотечной функции
Код: Выделить всё
inline void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
/* Check the parameters */
//assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
//assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BSRR = GPIO_Pin;
}С этого делаю вывод что буду пользоваться прямым обращением к регистрам.
Re: STM32 новичку в ARM что к чему
видимо, функции не инлайнятся. Запись параметров ф-и в регистры + вызов и возврат со сбросом конвейера - вот и набегает 4х кратная разница.разница более чем в 4 раза!
Re: STM32 новичку в ARM что к чему
Гуня писал(а):Причём не помогает добавление слова inline к описании функции.
Что за IDE ?
Re: STM32 новичку в ARM что к чему
CoCoox CoIDE
Странно вообще что 250 наносекунд, это при том что частота проца 24 МГц! а 250нс период, это 4 МГц частота ноги получается..
Странно вообще что 250 наносекунд, это при том что частота проца 24 МГц! а 250нс период, это 4 МГц частота ноги получается..
Re: STM32 новичку в ARM что к чему
покажите asm листинг. На STM32 ldr/str - по 3 такта
Re: STM32 новичку в ARM что к чему
Я не нашел файл ассемблера. а кокос его генерирует?
В настройках компилятора Compiler Control string нашел такую строку, там есть чтото про асемблер
В настройках компилятора Compiler Control string нашел такую строку, там есть чтото про асемблер
Код: Выделить всё
-mcpu=cortex-m3; -mthumb; -Wall; -ffunction-sections; -g; -O0; -DSTM32F100C4; -DSTM32F10X_MD; -DUSE_STDPERIPH_DRIVER; -D__ASSEMBLY__; -I.; Re: STM32 новичку в ARM что к чему
Подскажите как можно в IAR в Си получить доступ к регистрам, а именно мне надо считать и изменить регистр счёта команд Program counter(PC)?
Re: STM32 новичку в ARM что к чему
http://www.delorie.com/djgpp/v2faq/faq8_20.htmlЯ не нашел файл ассемблера. а кокос его генерирует?
http://stackoverflow.com/questions/1370 ... rce-in-gcc
Re: STM32 новичку в ARM что к чему
Не получается все равно! Пробовал добавлять в строку и -S и много еще разных команд, но оно или не компилится, или компилится, но заветный файл.s не появляется. Генерируются файлы hex, bin, map, elf. Может быть это изза ограничений кокоса, а может я просто не умею его готовить =)
Может быть отзовётся ктото, у кого получилось это сделать в CoIDЕ.
Обнаружил, если запускаеш отладку, то справа появляется окно с открытым ассемблерным листингом))))
Может быть отзовётся ктото, у кого получилось это сделать в CoIDЕ.
Обнаружил, если запускаеш отладку, то справа появляется окно с открытым ассемблерным листингом))))
Код: Выделить всё
SONAR_IO->BSRR = SONAR_TX;
08000748: ldr r3, [pc, #28] ; (0x8000768 <TIM7_IRQHandler+48>)
0800074a: mov.w r2, #2
0800074e: str r2, [r3, #16]
SONAR_IO->BRR = SONAR_TX;
08000750: ldr r3, [pc, #20] ; (0x8000768 <TIM7_IRQHandler+48>)
08000752: mov.w r2, #2
08000756: str r2, [r3, #20]Re: STM32 новичку в ARM что к чему
проверяйте оптимизацию. у меня компилится как положено, в 2 команды str:
Код: Выделить всё
GPIOA->BSRR = GPIO_Pin_13;
8000956: 61a5 str r5, [r4, #24]
GPIOA->BRR = GPIO_Pin_13;
8000958: 8525 strh r5, [r4, #40] ; 0x28Re: STM32 новичку в ARM что к чему
Оптимизация помогла, скорость переключения стала 100 наносекунд (10 МГц). Но тут новая засада! С оптимизацией перестал работать юарт! У меня он настроен на приём и передачу по прерываниям, без оптимизации все работает, а с оптимизацией, любым из предложенных вариантов получаю нерабочий юарт. Пока не разобрался в чем дело, просто у меня устройство отвечало эхом на все байты, а теперь не отвечает.