Jump to content

    

ek74

Свой
  • Content Count

    81
  • Joined

  • Last visited

Everything posted by ek74


  1. Старт STM32

    Цитата(Immortal_Buka @ May 6 2015, 10:26) Код#define __START _start bl    __START А где можно посмотреть реализацию этой функции? Ну например тут: GNU Tools for ARM Embedded Processors. Качаешь исходники компилятора. В дереве исходников находишь такой файл \src\newlib\newlib\libc\sys\arm\crt0.S, который и содержит реализацию _start.
  2. Старт STM32

    Из вполне доступного, можно это почитать: GCC: статические конструкторы
  3. Загляни по ссылке https://github.com/libopencm3/libopencm3. Там справа есть кнопочка "Download ZIP"
  4. Цитата(MrYuran @ May 13 2013, 11:35) Осталось сделать то же самое, но статически. Если писать на Си и есть поддержка стандарта c99 (для GCC включаем -std=c99), то можно так CODE#include <stdio.h> float matrix1[3][4] = { { 1.0f, 2.0f, 3.0f, 4.0f }, { 5.0f, 6.0f, 7.0f, 8.0f }, { 9.0f, 10.0f, 11.0f, 12.0f } }; float matrix2[4][2] = { { 1.0f, 2.0f }, { 3.0f, 4.0f }, { 5.0f, 6.0f }, { 7.0f, 8.0f } }; void matrix_out(int n, int m, float matrix[n][m]) { printf("Матрица[%d][%d]:\n", n, m); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) printf("\t%f", matrix[i][j]); putchar('\n'); } } int main() { matrix_out(3, 4, matrix1); matrix_out(4, 2, matrix2); return 0; }
  5. STM32L151 OPAMP1 ключ SanB

    Цитата(MiklPolikov @ Jan 17 2013, 08:25) Как вообще включить OPAMP ? Тактирование совмещено с тактированием компараторов. КодRCC_APB1PeriphClockCmd(RCC_APB1Periph_COMP, ENABLE); Цитата(MiklPolikov @ Jan 16 2013, 06:42) В моём процессоре нет выхода OPAMP1_VINM Не во всех процах есть модуль OPAMP, его нет в STM32L15x6/8/B. А в Medium+ и High density devices - присутствует.
  6. STM32L152 внешние прерывания

    Цитата(Метценгерштейн @ Jan 11 2013, 02:09) где указать для этого проца, что EXTI0 будет именно на порт А? Код// Connect EXTI line 0 to PA.0 SYSCFG->EXTICR[EXTI_PinSource0 >> 0x02] =     (SYSCFG->EXTICR[EXTI_PinSource0 >> 0x02] & ~(0x0F << ((EXTI_PinSource0 & 0x03) * 4))) |     (EXTI_PortSourceGPIOA << ((EXTI_PinSource0 & 0x03) * 4));
  7. Код#if defined (__VFP_FP__) && !defined(__SOFTFP__)    // Используем аппаратную плавучку #else   // Используем софтовую плавучку #endif
  8. Цитата(dimay192 @ Jul 2 2012, 10:15) Свежая! Возможно даже слишком свежая - из гит-репозитория собирал! Я то же собирал из репозитория, проблем не возникло. Вот лог прошивки STM32L151RBT6 CODE Open On-Chip Debugger 0.6.0-dev-ga21affa-dirty (2012-06-22-11:08) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 400 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 cortex_m3 reset_config sysresetreq Info : device: 4 "2232C" Info : deviceID: 364511235 Info : SerialNumber: FTP6QG5WA Info : Description: Olimex OpenOCD JTAG A Info : clock speed 400 kHz Info : JTAG tap: cpld.tap tap/device found: 0x020a50dd (mfg: 0x06e, part: 0x20a5, ver: 0x0) Info : JTAG tap: slave.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: slave.bs tap/device found: 0x06413041 (mfg: 0x020, part: 0x6413, ver: 0x0) Info : JTAG tap: STM32L151RBT6.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: STM32L151RBT6.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) Info : STM32L151RBT6.cpu: hardware has 6 breakpoints, 4 watchpoints Info : JTAG tap: cpld.tap tap/device found: 0x020a50dd (mfg: 0x06e, part: 0x20a5, ver: 0x0) Info : JTAG tap: slave.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: slave.bs tap/device found: 0x06413041 (mfg: 0x020, part: 0x6413, ver: 0x0) Info : JTAG tap: STM32L151RBT6.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: STM32L151RBT6.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x080009cc msp: 0x20004000 Info : flash size = 128kbytes erased sectors 0 through 31 on flash bank 0 in 8.578125s wrote 7224 bytes from file ../../build/mcu_master/exe/us_classic_master.elf in 0.843750s (8.361 KiB/s) Info : JTAG tap: cpld.tap tap/device found: 0x020a50dd (mfg: 0x06e, part: 0x20a5, ver: 0x0) Info : JTAG tap: slave.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: slave.bs tap/device found: 0x06413041 (mfg: 0x020, part: 0x6413, ver: 0x0) Info : JTAG tap: STM32L151RBT6.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: STM32L151RBT6.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) shutdown command invoked Цитата(dimay192 @ Jul 2 2012, 07:23) Второй вопрос возник из-за того, что для stm32f1 есть отдельный набор команд (stm32f1x unlock 0, stm32f1x mass_erase 0,...), а для stm32lx подобного нет.Для этого, я использую по-секторное стирание. Кодflash erase_sector 0 0 31 Вообщем полёт нормальный, с учетом того, что у меня в JTAG chain сидят ещё STM32F405RGT6 и MAX5M240ZT100ISN. Всё прошиваеться.
  9. Цитата(Nikitoc @ May 18 2011, 14:40) Т.е. preemption priority для всех одинаковый, а subpriority разные? А зачем тогда нужны эти subpriority если на выполнение прерываний они не влияют?[The Definitive Guide to the ARM Cortex-M3, Second Edition, Page 114] The preempt priority level defines whether an interrupt can take place when the processor is already running another interrupt handler. The subpriority level value is used only when two exceptions with the same preempt priority level occurred at the same time. In this case, the exception with higher subpriority (lower value) will be handled first. Цитата(Nikitoc @ May 18 2011, 14:40) Это корректно?В принципе, да. И не забыть установить приоритет для SysTick.
  10. Цитата(Nikitoc @ May 18 2011, 01:19) Ну а выставляю соответственно: КодNVIC_SetPriority(SysTick_IRQn, 3); Используйте NVIC_EncodePriority(...). Например: Код/* 2 bits for pre-emption priority and 2 bits for subpriority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Set USART1 interrupt preemption priority to 1 */ NVIC_SetPriority(USART1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 1, 0)); /* Set SysTick interrupt preemption priority to 3 */ NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 3, 0));
  11. Цитата(belen @ Apr 28 2011, 16:13) Странно, но у меня нет возможности редактировать свои сообщения. Не понял, что, для этого нужны особые привилегии? Правка личных тем и сообщений
  12. Цитата(gotty @ Apr 24 2011, 12:05) http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html http://gcc.gnu.org/onlinedocs/gcc/Function...on-Pragmas.html Цитата(belen @ Apr 25 2011, 13:05) Я работаю с GCC уже не первый год и знаю какие флаги изменяют режим оптимизации, но режим оптимизации прменяется ко всему файлу(ам). __attribute__ ((optimize("Os"))) Цитатаoptimize The optimize attribute is used to specify that a function is to be compiled with different optimization options than specified on the command line. Arguments can either be numbers or strings. Numbers are assumed to be an optimization level. Strings that begin with O are assumed to be an optimization option, while other options are assumed to be used with a -f prefix. You can also use the `#pragma GCC optimize' pragma to set the optimization options that affect more than one function. See Function Specific Option Pragmas, for details about the `#pragma GCC optimize' pragma. This can be used for instance to have frequently executed functions compiled with more aggressive optimization options that produce faster and larger code, while other functions can be called with less aggressive options. Работает с начиная с версии GCC 4.4.
  13. Linux for cortex

    Цитата(AlexandrY @ Aug 9 2009, 22:02) Боюсь в обещанном порте вместо нормального стека TCP/IP будет тот самый печально известный LwIP. Скорей всего там будет вот это NicheLite™ TCP/IP stack for STM32 А на счёт остального - полностью согласен.
  14. Linux for cortex

    Цитата(HARMHARM @ Aug 7 2009, 18:06) Не думаю, что даже ucLinux будут портировать. Это не совсем так. ВыдержкаЦитатаµClinux is running on STM32, we will publish soon (During Summer 2009 ) all the sources and the final Application Note on our web site www.st.com/stm32 Полностью читаем топик на форуме st - uClinux on STM32
  15. Всем доброй ночи. Посмотрел описания на SBC Тион Про 270 от ЗАО "Завод Электрооборудования". На первый взгяд для моих задач подходит. Поделитесь, пожалуйста, впечатлениями, кто пользовался.
  16. Имется древний проект на 149. Сейчас возникла необходимость реанимировать его с большим расширением функциональности. Но в 60 Кб уже не уладываемся. На сайте TI нашел msp430f241x (msp430f2416, msp430f2417, msp430f2418, msp430f2419), бегло просмотрел описания на них. На первый взгляд распиновки и работа с периферией и низ совпадает со 149. Собственно вопрос (может кто уже делал подобное): могу ли я тупо запаять 241x вместо 149, ну и соответственно перекомпилировать программу без изменения в работе с железом?
  17. Замена msp430f149 на msp430f241x

    Цитата(rezident @ Feb 8 2009, 02:55) без переделки работы с некоторыми модулями и главное полной перекомпиляции всего софта работать не будетЯ это прекрасно осознаю, благо изменять придется не много (только работу с uart). Цитата(rezident @ Feb 8 2009, 02:55) Читайте рекомендации по переходу c MSP430x13x/14x на MSP430x23x/24x (slaa381a) на сайте производителяА вот за это - спасибо. Просмотрел, не заметил я этот документ у TI Цитата(Vas&Lis @ Feb 8 2009, 10:57) почему принято было решение на 24? мне кажется лучше сразу на 2618...Может быть это будет следуюший шаг Всем откликнувшимся - большое спасибо.
  18. Цитата(rvk @ Jan 9 2009, 11:58) По другому поставлю вопрос. Какая разница, проинициализирована периферия в startup.s файле или в main.c А если Вы пишите на C++, и у Вас есть глобальные статические экземпляры некоторых классов (конструкторы таких объектов вызываются ДО main). И самое главное - эти объекты должны работать с железом. В этом случаи инициализация периферии в main будет как на бане гудок.
  19. Цитата(Сергей Борщ @ Jan 8 2009, 15:11) У меня он есть. Search->more options Проверил. Действительно это есть, НО только если включить английский интерфейс. В русском - этого пункта нет. Обнаружил следующую вещь, которая зависит от выбранного языка: Русский:КодМой Профиль · Новые сообщения · Мой помощник ·  · 0 новых писем Английский:КодMy Controls · View New Posts · My Assistant · My Friends · 0 New Messages
  20. Цитата(Сергей Борщ @ Jan 8 2009, 09:45) Логотип и левое меню вижу только на главной странице. А у меня этого нет даже на главной странице. Кроме того, пропал расширенный поиск (это там где можно было выбирать в каком разделе ищем). Еще обнаружил, что на странице информации о пользователе – полный бардак. Скриншот добавить не могу, т.к. пропала возможность прицепить к сообщению файл. PS: Пользуюсь Оперой
  21. STM32 C/C++ build environment using CodeSourcery Sourcery G++ Там есть всё как настроить CodeSourcery GCC для STM32 (включая пример для отладочной платы Olimex STM32-H103) с использованием STM32F101xx and STM32F103xx firmware library by STMicroelectronics
  22. На сайте STMicroelectronics появилась информация о новом семействе STM32 с ядром Cortex-M3. ■ Core – ARM 32-bit Cortex-M3TM CPU – 36 MHz, 45 DMips with 1.25 DMips/MHz (STM32F101x) – 72 MHz, 90 DMips with 1.25 DMips/MHz (STM32F103x) – Single-cycle multiplication and hardware division for computational acceleration ■ Memories – From 32 Kbytes to 128 Kbytes Flash memory – From 6 Kbytes to 16 Kbytes SRAM (STM32F101x) – From 6 Kbytes to 20 Kbytes SRAM (STM32F103x) – Multi-boot capability ■ Clock, Reset and Supply Management – 2.0 to 3.6V application supply and I/Os – Internal regulator for core supply – Embedded high-speed quartz oscillator from 4 to 16 MHz – Power on / power down reset (POR/PDR), programmable voltage detector (PVD), brown-out detector – Embedded RTC oscillator running from external 32 kHz crystal – Internal factory-trimmed RC running at 8 MHz – Internal RC running at 32 kHz – Embedded PLL for CPU clock – Real-Time Clock with calibration capability for precise clock-calendar function ■ Low Power – 3 power saving modes: SLEEP, STOP and STANDBY with automatic wake up – VBAT supply for RTC and backup registers ■ Nested Interrupt Controller – Superior multiple vector interrupt handling – 43 maskable interrupt channels (not including the 16 interrupt lines of Cortex-M3) – Very low latency interrupt processing down to 6 CPU cycles with tail-chaining ■ Debug Mode – Serial wire debug (SWD) and JTAG interfaces – Serial wire viewer – 8 hardware breakpoints ■ DMA – 7-channel DMA controller – Circular buffer management – Peripherals supported: timers, ADC, SPI, I2C and USART ■ 12-bit A/D Converter (16-channel) (STM32F101x) ■ 2 x 12-bit A/D Converters (16-channel) (STM32F103x) – Sampling frequency up to 1 MHz – Conversion range: 0 to 3.6V – Auto-calibration – Auto-scan mode – Temperature sensor ■ Up to 80 Fast I/O Ports – 32/49/80 multifunctional bidirectional 5V-tolerant I/Os – All mappable on 16 external interrupts – Up to 80 ports with external interrupt capability – Possibility of locking the I/O in chosen alternate function configuration – Atomic read/modify/write operations – I/Os on APB2 with up to 18 MHz toggling speed (STM32F103x) ■ Up to 6 Timers (STM32F101x) ■ Up to 7 Timers (STM32F103x) – Up to 3 synchronizable 16-bit timers, each with up to 4 channels used for input captures/output compares, PWM or pulse counter – 16-bit 6-channel advanced control timer, configurable with up to 4 channels for input capture/output compare (STM32F103x) – 2 x 16-bit watchdog timers (Independent and Window) – SysTick timer: a 24-bit down counter with auto reload capability with programmable clock source for timebase functions ■ Up to 7 Communication Interfaces (STM32F101x) ■ Up to 9 Communication Interfaces (STM32F103x) – Up to 2 x I2C interfaces (SMBus/PMBus) – Up to 3 USARTs asynchronous serial interfaces (2.25 MBit/s), providing Smart Card ISO7816 interface, LIN master slave capability, IrDA capability, Modem control – Up to 2 SPI synchronous serial interfaces (18 Mbit/s) – CAN interface (2.0B Active) (STM32F103x) – USB 2.0 full speed interface (STM32F103x) ■ Operating Temp.: -40 to +85 °C / -40 to +105 °C ■ Packages: LQFP48, LQFP64, LQFP100, BGA100
  23. Цитата(IgorKossak @ Oct 3 2008, 16:46) Почитайте errata <www.st.com/mcu/modules.php?name=mcu&file=familiesdocs&FAM=110#Errata Sheet> Там кое-что есть про второй канал TIM3.Согласен есть ошибка со вторым каналом TIM3, но мне кажется (на железе нет возможности проверить) это не тот случай. Насколько я понимаю, ошибка проявляется при совместном использовании I2C1 и TIM3_CH2:Код2.4.8 I2C1 and TIM3_CH2 remapped Conditions ● I2C1 and TIM3 are clocked. ● I/O port pin PB5 is configured as an alternate function output.В приведённом примере I2C1 не используется. А для того, что бы работал remap необходимо включить тактирование AFIO, о чём собственно я и указал в предыдущем посте. Если я не прав то, пожалуйста, поправьте.
  24. Включи тактирование AFIO. Замени строку Код/* GPIOA and GPIOB clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);на Код/* GPIOA, GPIOB and AFIO clocks enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
  25. Цитата(sergey sva @ Sep 4 2008, 19:12) Realview Дороговато . GCC это тот что в Yagarto ? Да. Есть ещё варианты: - GNU ARM toolchain - CodeSourcery GNU Toolchain for ARM Processors - WinARM - Сборка от klen`а