STM32 новичку в ARM что к чему
- КАШАК
- Это не хвост, это антенна
- Сообщения: 1303
- Зарегистрирован: Вс апр 19, 2009 17:20:22
- Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Скопивал все библиотеки и заголовочные файлы в Eclipse, отключил всю оптимизацию и ... ничего не заработало. Поудалял из CooCox все библиотеки и заголовочные файлы, кроме тех, что есть в Eclipse, скомпилировал и все равно работает.
Отличия могут быть только в startup файлах, в Eclipse startup_ARMCM3.S, а в CooCox startup_stm32f10x_md_vl.c. И написано в них все совершенно разное.
Отличия могут быть только в startup файлах, в Eclipse startup_ARMCM3.S, а в CooCox startup_stm32f10x_md_vl.c. И написано в них все совершенно разное.
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Re: STM32 новичку в ARM что к чему
КАШАК писал(а):Отличия могут быть только в startup файлах, в Eclipse startup_ARMCM3.S, а в CooCox startup_stm32f10x_md_vl.c. И написано в них все совершенно разное.
Ну так обзови свою функцию так, как она соответсвующая по позиции в Eclipse startup_ARMCM3.S.c называется и все
Твоя функция просто не встает в таблицу прерываний т.к. имя не то
- КАШАК
- Это не хвост, это антенна
- Сообщения: 1303
- Зарегистрирован: Вс апр 19, 2009 17:20:22
- Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
- Контактная информация:
Re: STM32 новичку в ARM что к чему
А там, оказывается, про TIM6 вообще ничего не сказано. Ну ладно, дописал вручную
Но все равно ничего не работает. Да, заметил еще одну особенность, если написана строка:
То отключаются вообще все таймеры, хотя может и не все, но SysTick точно. И с дописанными прерываниями и без них. В общем не знаю, что делать. Что еще посоветуете?
Спойлер
Код: Выделить всё
/**************************************************************************//**
* @file startup_ARMCM3.s
* @brief CMSIS Core Device Startup File for
* ARMCM3 Device Series
* @version V1.07
* @date 30. January 2012
*
* @note Version CodeSourcery Sourcery G++ Lite (with CS3)
* Copyright (C) 2012 ARM Limited. All rights reserved.
*
* @par
* ARM Limited (ARM) is supplying this software for use with Cortex-M
* processor based microcontrollers. This file can be freely distributed
* within development tools that are supporting such ARM based processors.
*
* @par
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
******************************************************************************/
/*
//-------- <<< Use Configuration Wizard in Context Menu >>> ----------
*/
/*
// <h> Stack Configuration
// <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
// </h>
*/
.equ Stack_Size, 0x00000400
.section ".stack", "w"
.align 3
.globl __cs3_stack_mem
.globl __cs3_stack_size
__cs3_stack_mem:
.if Stack_Size
.space Stack_Size
.endif
.size __cs3_stack_mem, . - __cs3_stack_mem
.set __cs3_stack_size, . - __cs3_stack_mem
/*
// <h> Heap Configuration
// <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
// </h>
*/
.equ Heap_Size, 0x00000C00
.section ".heap", "w"
.align 3
.globl __cs3_heap_start
.globl __cs3_heap_end
__cs3_heap_start:
.if Heap_Size
.space Heap_Size
.endif
__cs3_heap_end:
/* Vector Table */
.section ".cs3.interrupt_vector"
.globl __cs3_interrupt_vector_cortex_m
.type __cs3_interrupt_vector_cortex_m, %object
__cs3_interrupt_vector_cortex_m:
.long __cs3_stack /* Top of Stack */
.long __cs3_reset /* Reset Handler */
.long NMI_Handler /* NMI Handler */
.long HardFault_Handler /* Hard Fault Handler */
.long MemManage_Handler /* MPU Fault Handler */
.long BusFault_Handler /* Bus Fault Handler */
.long UsageFault_Handler /* Usage Fault Handler */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long 0 /* Reserved */
.long SVC_Handler /* SVCall Handler */
.long DebugMon_Handler /* Debug Monitor Handler */
.long 0 /* Reserved */
.long PendSV_Handler /* PendSV Handler */
.long SysTick_Handler /* SysTick Handler */
/* External Interrupts */
.long WDT_IRQHandler /* 0: Watchdog Timer */
.long RTC_IRQHandler /* 1: Real Time Clock */
.long TIM0_IRQHandler /* 2: Timer0 / Timer1 */
.long TIM2_IRQHandler /* 3: Timer2 / Timer3 */
.long MCIA_IRQHandler /* 4: MCIa */
.long MCIB_IRQHandler /* 5: MCIb */
.long UART0_IRQHandler /* 6: UART0 - DUT FPGA */
.long UART1_IRQHandler /* 7: UART1 - DUT FPGA */
.long UART2_IRQHandler /* 8: UART2 - DUT FPGA */
.long UART4_IRQHandler /* 9: UART4 - not connected */
.long AACI_IRQHandler /* 10: AACI / AC97 */
.long CLCD_IRQHandler /* 11: CLCD Combined Interrupt */
.long ENET_IRQHandler /* 12: Ethernet */
.long USBDC_IRQHandler /* 13: USB Device */
.long USBHC_IRQHandler /* 14: USB Host Controller */
.long CHLCD_IRQHandler /* 15: Character LCD */
.long FLEXRAY_IRQHandler /* 16: Flexray */
.long CAN_IRQHandler /* 17: CAN */
.long LIN_IRQHandler /* 18: LIN */
.long I2C_IRQHandler /* 19: I2C ADC/DAC */
.long TIM6_DAC_IRQHandler /* 20: Reserved */
.long 0 /* 21: Reserved */
.long 0 /* 22: Reserved */
.long 0 /* 23: Reserved */
.long 0 /* 24: Reserved */
.long 0 /* 25: Reserved */
.long 0 /* 26: Reserved */
.long 0 /* 27: Reserved */
.long CPU_CLCD_IRQHandler /* 28: Reserved - CPU FPGA CLCD */
.long 0 /* 29: Reserved - CPU FPGA */
.long UART3_IRQHandler /* 30: UART3 - CPU FPGA */
.long SPI_IRQHandler /* 31: SPI Touchscreen - CPU FPGA */
.size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m
.thumb
/* Reset Handler */
.section .cs3.reset,"x",%progbits
.thumb_func
.globl __cs3_reset_cortex_m
.type __cs3_reset_cortex_m, %function
__cs3_reset_cortex_m:
.fnstart
LDR R0, =SystemInit
BLX R0
LDR R0,=_start
BX R0
.pool
.cantunwind
.fnend
.size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m
.section ".text"
/* Exception Handlers */
.weak NMI_Handler
.type NMI_Handler, %function
NMI_Handler:
B .
.size NMI_Handler, . - NMI_Handler
.weak HardFault_Handler
.type HardFault_Handler, %function
HardFault_Handler:
B .
.size HardFault_Handler, . - HardFault_Handler
.weak MemManage_Handler
.type MemManage_Handler, %function
MemManage_Handler:
B .
.size MemManage_Handler, . - MemManage_Handler
.weak BusFault_Handler
.type BusFault_Handler, %function
BusFault_Handler:
B .
.size BusFault_Handler, . - BusFault_Handler
.weak UsageFault_Handler
.type UsageFault_Handler, %function
UsageFault_Handler:
B .
.size UsageFault_Handler, . - UsageFault_Handler
.weak SVC_Handler
.type SVC_Handler, %function
SVC_Handler:
B .
.size SVC_Handler, . - SVC_Handler
.weak DebugMon_Handler
.type DebugMon_Handler, %function
DebugMon_Handler:
B .
.size DebugMon_Handler, . - DebugMon_Handler
.weak PendSV_Handler
.type PendSV_Handler, %function
PendSV_Handler:
B .
.size PendSV_Handler, . - PendSV_Handler
.weak SysTick_Handler
.type SysTick_Handler, %function
SysTick_Handler:
B .
.size SysTick_Handler, . - SysTick_Handler
/* IRQ Handlers */
.globl Default_Handler
.type Default_Handler, %function
Default_Handler:
B .
.size Default_Handler, . - Default_Handler
.macro def_irq_handler handler
.weak \handler
.set \handler, Default_Handler
.endm
def_irq_handler WDT_IRQHandler
def_irq_handler RTC_IRQHandler
def_irq_handler TIM0_IRQHandler
def_irq_handler TIM2_IRQHandler
def_irq_handler MCIA_IRQHandler
def_irq_handler MCIB_IRQHandler
def_irq_handler UART0_IRQHandler
def_irq_handler UART1_IRQHandler
def_irq_handler UART2_IRQHandler
def_irq_handler UART3_IRQHandler
def_irq_handler UART4_IRQHandler
def_irq_handler AACI_IRQHandler
def_irq_handler CLCD_IRQHandler
def_irq_handler ENET_IRQHandler
def_irq_handler USBDC_IRQHandler
def_irq_handler USBHC_IRQHandler
def_irq_handler CHLCD_IRQHandler
def_irq_handler FLEXRAY_IRQHandler
def_irq_handler CAN_IRQHandler
def_irq_handler LIN_IRQHandler
def_irq_handler I2C_IRQHandler
def_irq_handler CPU_CLCD_IRQHandler
def_irq_handler SPI_IRQHandler
def_irq_handler TIM6_DAC_IRQHandler
.end
Но все равно ничего не работает. Да, заметил еще одну особенность, если написана строка:
Код: Выделить всё
NVIC_EnableIRQ(TIM6_DAC_IRQn);То отключаются вообще все таймеры, хотя может и не все, но SysTick точно. И с дописанными прерываниями и без них. В общем не знаю, что делать. Что еще посоветуете?
Опыт растет прямо пропорционально выведенному из строя оборудованию...
- КАШАК
- Это не хвост, это антенна
- Сообщения: 1303
- Зарегистрирован: Вс апр 19, 2009 17:20:22
- Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Урааааа!!! Заработало!!!
Оказывается я не учел того, что в таблице прерываний все прерывания имеют свой номер, надо было сделать прерывания от TIM6 - 54 номером
Таблица вообще соответствовала даташиту процентов на 10
Код: Выделить всё
.long SPI_IRQHandler /* 31: SPI Touchscreen - CPU FPGA */
.long 0,0,0,0,0,0,0,0,0,0,0
.long 0,0,0,0,0,0,0,0,0,0,0
.long TIM6_DAC_IRQHandler /* 54 */
.long TIM7_IRQHandler /* 55 */Таблица вообще соответствовала даташиту процентов на 10
Опыт растет прямо пропорционально выведенному из строя оборудованию...
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: STM32 новичку в ARM что к чему
Ну дык потому что стартап у Вас какой-то левый. Прикрутите правильный, от STM (тот который у Вас в coocoox), и делов-то.
Giggity giggity goo!
-
The_D
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Пт июл 06, 2012 14:28:17
- Откуда: Россия. г.Смоленск
Re: STM32 новичку в ARM что к чему
Добрый вечер.
Разрабатываю свою схему на основе СТМ. Возник вопрос по обвязке кварцевого резонатора. В техдокументации на МК не указано значение резистора и нет порядка его расчета. На моей схеме это резистор R4. Прошу помощи.

Разрабатываю свою схему на основе СТМ. Возник вопрос по обвязке кварцевого резонатора. В техдокументации на МК не указано значение резистора и нет порядка его расчета. На моей схеме это резистор R4. Прошу помощи.

- Солнцеворот
- Встал на лапы
- Сообщения: 141
- Зарегистрирован: Вт июн 03, 2008 01:39:47
Re: STM32 новичку в ARM что к чему
The_D писал(а):Добрый вечер.
На моей схеме это резистор R4. Прошу помощи.
А там не нужен этот резистор. И кварц можно брать 8МГц, а необходимую частоту регулировать умножителями (Std_periph_lib, вроде написаны под 8МГц кварц).
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
А если все же хотите установить этот ограничивающий резистор, то лезьте на сайт STM, ищите апноут AN2867 "Oscillator Design Guide For ST Microcontrollers", открывайте раздел 4.4.3 и считайте номинал сопротивления по формуле Rext = 1/(2πFC). Впрочем, я уже посчитал, для 12МГц выходит 885 Ом (ближайшее по стандартному ряду, пожалуй, будет 910 Ом).
Ну и старайтесь, все же, ответы в документации искать. У ST она весьма неплоха.
0_о
Как это понимать?
Ну и старайтесь, все же, ответы в документации искать. У ST она весьма неплоха.
Солнцеворот писал(а):Std_periph_lib, вроде написаны под 8МГц кварц
0_о
Как это понимать?
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

-
The_D
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Пт июл 06, 2012 14:28:17
- Откуда: Россия. г.Смоленск
Re: STM32 новичку в ARM что к чему
Спасибо. Как-то не подумал что есть отдельный мануал по расчету обвязки кварцев. Искал в даташите на сам МК.
Можно конечно и 8 МГц использовать, но уже купил 12 МГц резонаторы в СМД корпусе.
Наверное частото задающие константы-делители обычно указаны под 8МГц внешний резонатор. Под 12 их или придется переписывать или любоваться разгоном камня.
Можно конечно и 8 МГц использовать, но уже купил 12 МГц резонаторы в СМД корпусе.
0_о
Как это понимать?
Наверное частото задающие константы-делители обычно указаны под 8МГц внешний резонатор. Под 12 их или придется переписывать или любоваться разгоном камня.
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
The_D писал(а):Спасибо.
Да было б за что. =)
The_D писал(а):Наверное частото задающие константы-делители обычно указаны под 8МГц внешний резонатор. Под 12 их или придется переписывать или любоваться разгоном камня.
Константы-делители имеют постоянную величину, и можно с одинаковым удобством работать как с резонатором на 8 МГц, так и на 12 МГц.
А сама величина HSE указывается в файле "system_stm32f10x.c", который свободно редактируется руками; затем при вызове функции SystemInit (при стартовой настройке) происходит конфигурирование системы соответственно выбранной величине.
Поэтому у меня и возник вопрос. Я не понимаю, какую связь имеет стандартная библиотека и заточка под кварц определенной частоты. Просто мысль в голову не легла, вот и спрашиваю.
ЗЫ. А разгоном камня особо не налюбуетесь. При превышении определенных величин камни от ST имеют правило просто затыкаться.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

- КАШАК
- Это не хвост, это антенна
- Сообщения: 1303
- Зарегистрирован: Вс апр 19, 2009 17:20:22
- Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
- Контактная информация:
Re: STM32 новичку в ARM что к чему
А где можно заказать ARM микроконтроллеры? Просмотрел неколько сайтов, но там доставка в несколько раз дороже чем покупка выходит, либо заказ от 10 и более шт.
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Re: STM32 новичку в ARM что к чему
Пока дешевле чем на eBay не находил.
Re: STM32 новичку в ARM что к чему
Ну доставка всегда будет не меньше 200р.
А так вот проверенные, где брал стм: http://chip-nn.ru/81.php http://www.elitan.ru/
А так вот проверенные, где брал стм: http://chip-nn.ru/81.php http://www.elitan.ru/
- Солнцеворот
- Встал на лапы
- Сообщения: 141
- Зарегистрирован: Вт июн 03, 2008 01:39:47
Re: STM32 новичку в ARM что к чему
SubDia писал(а):Константы-делители имеют постоянную величину, и можно с одинаковым удобством работать как с резонатором на 8 МГц, так и на 12 МГц.
А сама величина HSE указывается в файле "system_stm32f10x.c", который свободно редактируется руками; затем при вызове функции SystemInit (при стартовой настройке) происходит конфигурирование системы соответственно выбранной величине.
Да, вы правы. Я этого не знал. Документация на STM32 хорошая, а на библиотеки отвратительная.
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
... да файл stm32f10x_stdperiph_lib_um.chm весит всего каких нибудь 19МБ. На самом деле datasheet_a вполне хватает, чтобы вообще отказаться от stdperiph_library, но тут как говорится на вкус и цвет ....Солнцеворот писал(а):Документация на STM32 хорошая, а на библиотеки отвратительная.
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
ChipKiller писал(а):datasheet_a вполне хватает, чтобы вообще отказаться от stdperiph_library
Я в первое время даже боялся приближаться к ст-шной библиотеке (не хотелось изучать и разбираться), все руками настраивал.
Потом время стал экономить. Тут уж действительно, кому как нравится. Мне, в принципе, и так нравилось, и так неплохо, просто довольно много времени экономлю с библиотекой.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: STM32 новичку в ARM что к чему
SubDia писал(а):4.4.3 и считайте номинал сопротивления по формуле Rext = 1/(2πFC). Впрочем, я уже посчитал, для 12МГц выходит 885 Ом (ближайшее по стандартному ряду, пожалуй, будет 910 Ом).
Вот только мне так и не попалось ни одного кварца с известным CL. Или оно у них всех стандартное?
В плате VL Discovery вон вообще 220 Ом стоит.
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
uk8amk писал(а):Вот только мне так и не попалось ни одного кварца с известным CL. Или оно у них всех стандартное?
В том апноуте, который я упоминал выше, сказано, что CL1 и CL2 - это конденсаторы в обвязке кварцевого резонатора. Цепь Rext+CL2 - это простейший ФНЧ, посему в расчете учитывается именно эта емкость - если Вы изучали основы теории цепей, то это Вам и так понятно. =)
Почему же схемотехники из ST нарушают собственные рекомендации в случае с VL Discovery, я пока ответить не могу. И не уверен, что вообще когда-либо смогу ответить.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

-
The_D
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Пт июл 06, 2012 14:28:17
- Откуда: Россия. г.Смоленск
Re: STM32 новичку в ARM что к чему
Потом сам пересчитал, действительно нужно было 880 Ом, к сожалению ряд СМД резисторов у меня не полный. Поставил 1кОм, надеюсь подойдет.
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
Ну, я не думаю, что лишних 100 Ом сорвет устойчивость колебательной системы. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
