ViKo 1 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Вот только теперь вопрос. Какой максимальный втекающий ток по reset у ULINK? И еще. Вы с таким уже сталкивались? Не знаю. Не сталкивался. Предложил, руководствуясь законом Ома. :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dac 0 14 апреля, 2011 Опубликовано 14 апреля, 2011 · Жалоба Потому что симулятор кейла не умеет симулировать 107ой, а 103ий умеет. Для 107го только симулятор ядра. Можно выбарть 103ий в настройках и симулировать, как 103ий. keil не умеет для 107 симулировать ВСЮ периферию. а уж uart точно должен уметь, т.к. идентичен 103. проблема как раз не в симуляции периферии, а в симуляции ядра. симулятор запускает с 0 адреса вместо 0х8000000 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akimych 0 17 апреля, 2011 Опубликовано 17 апреля, 2011 · Жалоба А с чего он вдруг должен стартовать с 0х800000? Если он знать не знает, что там еще есть кроме ядра, а флеш частью ядра не является. Дело в том как устроен симулятор кейла. Не умеет он симулировать по отдельности. Типа вот тут у нас уарты одинаковые - это я могу, а вот тут что-то другое не могу. Просто симулятор не знает чипа stm32f107 вообще. Потому и ведет себя подобным образом, симулирует только ядро, стартует с 0 и т.д. Если очень хочется, можно заставить симулятор ядра стартовать с 0х800000, да только какой смысл, если можно запустить симулятор как f103 и получить тоже самое + часть периферии, которая у f107 такая же. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dac 0 17 апреля, 2011 Опубликовано 17 апреля, 2011 · Жалоба А с чего он вдруг должен стартовать с 0х800000? Если он знать не знает, что там еще есть кроме ядра, а флеш частью ядра не является. Дело в том как устроен симулятор кейла. Не умеет он симулировать по отдельности. Типа вот тут у нас уарты одинаковые - это я могу, а вот тут что-то другое не могу. Просто симулятор не знает чипа stm32f107 вообще. Потому и ведет себя подобным образом, симулирует только ядро, стартует с 0 и т.д. Если очень хочется, можно заставить симулятор ядра стартовать с 0х800000, да только какой смысл, если можно запустить симулятор как f103 и получить тоже самое + часть периферии, которая у f107 такая же. понятно. жаль конечно, всегда в железе отлаживал уже на заключительном этапе, либо придется симулировать для 103, а в железе уже 107 :( и это хваленый кейл :1111493779: интересно когда поддержку 107 в симуляторе планируют? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akimych 0 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба Сомневаюсюь, что вообще планируют. F217 уже вроде как добавили, а он позже появился. Так же как и F100 уже давно могли бы добавить, там же различий почти нет с F101. Забавно, что кейл почему-то думает, что у них симулятор поддерживает частично F107. На сайте написано и в настройках симулятора именно F107 выставляется, если его выбрать. С F100 честно пишут, что не поддерживается и в настройках симулятора сразу прописывается симулятор ядра. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 20 апреля, 2011 Опубликовано 20 апреля, 2011 · Жалоба В дополнение к разговору о битах, выкладываю свои макрофункции конфигурирования портов STM32 - модификации конфигурации одиночного бита, и записи конфигурации младшего или старшего байта порта целиком. По-моему, простенько (и красиво)... /* Port bit configuration table */ typedef enum { IN_ANALG, GPO_PP10, GPO_PP02, GPO_PP50, // Input Analog, GP Output Push-pull 10-2-50MHz IN_FLOAT, GPO_OD10, GPO_OD02, GPO_OD50, // Input Float, GP Output Open-drain 10-2-50MHz IN_PD_PU, AFO_PP10, AFO_PP02, AFO_PP50, // Input Pull-down/Pull-up, Alt Func Push-pull CFG_None, AFO_OD10, AFO_OD02, AFO_OD50 // none(illegal), Alt Func Open-drain 10-2-50MHz } CFG_MODE; /*! ******************************************************************************* * @brief Port Low/High byte configuration * @details Конфигурация байтов порта целиком * @param PORT - имя порта (A..G) * @param CM15..CM00 - конфигурация битов 15..0 * @return нет * @note Используется перечисляемый тип CFG_MODE * @note Для IN_PD_PU нужный pull-down, pull-up задается в ODR *******************************************************************************/ #define GPIO_PORTL_CFG(PORT,CM07,CM06,CM05,CM04,CM03,CM02,CM01,CM00) \ GPIO##PORT->CRL = (CM07<<28|CM06<<24|CM05<<20|CM04<<16|CM03<<12|CM02<<8|CM01<<4|CM00) #define GPIO_PORTH_CFG(PORT,CM15,CM14,CM13,CM12,CM11,CM10,CM09,CM08) \ GPIO##PORT->CRH = (CM15<<28|CM14<<24|CM13<<20|CM12<<16|CM11<<12|CM10<<8|CM09<<4|CM08) /*! ******************************************************************************* * @brief Bit of Low/High byte Port configuration * @details Конфигурация одиночного бита порта * @param PORT - имя порта (A..G) * @param BIT - номер бита (0..15) * @param CM - конфигурация бита * @return нет * @note Используется перечисляемый тип CFG_MODE * @note Для IN_PD_PU нужный pull-down, pull-up задается в ODR *******************************************************************************/ #define GPIO_LBIT_CFG(PORT,BIT,CM) \ GPIO##PORT->CRL = GPIO##PORT->CRL & (~(0xf<<BIT*4)) | (CM<<BIT*4) #define GPIO_HBIT_CFG(PORT,BIT,CM) \ GPIO##PORT->CRH = GPIO##PORT->CRH & (~(0xf<<(BIT-8)*4)) | (CM<<(BIT-8)*4) Добавлю пример использования GPIO_LBIT_CFG(A,0,IN_FLOAT); GPIO_HBIT_CFG(A,8,AFO_PP50); GPIO_PORTL_CFG(B,IN_PD_PU,IN_PD_PU,IN_PD_PU,IN_PD_PU,IN_PD_PU,IN_PD_PU,IN_PD_PU,IN_PD_PU); GPIO_PORTH_CFG(B,GPO_PP10,GPO_PP10,GPO_PP10,GPO_PP10,GPO_PP10,GPO_PP10,GPO_PP10,GPO_PP10); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 20 апреля, 2011 Опубликовано 20 апреля, 2011 · Жалоба у меня вопрос тупой до безобразия... решил пойти в ногу с прогрессом и освоить ARM наконец-таки. для чего приобрел STM32vldiscovery, как наиболее дешевую платку. Скачал и установил Yagarto, плагин для Eclipse и наэтом подзастрял. во-первых, смотрю в демо-проекты, скачанные с сайта ST, и не могу найти некоторых хидеров. куда они их позасунули? какова вообще структура библиотечных файлов поддержки камней STM32 "от производителя"? может, не стоит ими пользоваться? опыт WinAVR как-то не очень помогает - там все камушки описывались хидерами, лежащими в одной папке, поставляемой с WinAVR, генератор проекта позволял выбрать нужный кристалл - и аллес, на этом подготовка кончалась, оставалось только вспомнить, какая периферия доступна и пользоваться ею. пока что такой аналогии в STM32 не прослеживаю... научите, пожалуйста! во-вторых, если у кого есть опыт работы со всем упомянутым счастьем именно в Eclipse, посоветуйте, что и как там настроить для комфортной работы? Может, есть толковые ссылки по этой теме, плагины какие-то особые? Скачал ARM Eclipse plugin - но, может, это не самое лучшее, что есть? в общем, что-то я в тумане почище ежика... дайте толчок - дальше попробую сам... не смотря на то. что GCC считается кросс-компилятором, для всех таргетов свои фишки, голова пухнет :( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 20 апреля, 2011 Опубликовано 20 апреля, 2011 · Жалоба в общем, что-то я в тумане почище ежика... дайте толчок - дальше попробую сам... не смотря на то. что GCC считается кросс-компилятором, для всех таргетов свои фишки, голова пухнет :( А ибо нефиг пользовать специализированные плагины:) Если взять просто эклипс, и делать makefile-based проекты, то работа со всеми поддерживаемыми GCC таргетами практически идентична. Что касаемо примеров от ST, то обычно там лежит их библиотека, по крайней мере во всех, что я видел - лежала. Я лично её не использую, не нравится. Могу порекомендовать примеры от scmRTOS, четвёртый там точно под VL. --- ЗЫ. Ещё вот тут постил пример, он вроде на сях и с ст-шной библиотекой. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 20 апреля, 2011 Опубликовано 20 апреля, 2011 · Жалоба А ибо нефиг пользовать специализированные плагины :) Если взять просто эклипс, и делать makefile-based проекты, то работа со всеми поддерживаемыми GCC таргетами практически идентична. Что касаемо примеров от ST, то обычно там лежит их библиотека, по крайней мере во всех, что я видел - лежала. Я лично её не использую, не нравится. Могу порекомендовать примеры от scmRTOS, четвёртый там точно под VL. --- ЗЫ. Ещё вот тут постил пример, он вроде на сях и с ст-шной библиотекой. во-первых, в примерах ST нет makefile. а сделать его самостоятельно, не имея прочных понятий в новой архитектуре и не будучи знакомым с новым компилятором, я не смогу. во-вторых, если не ST-шная библиотека - то какая альтернатива? где вся ST-шная периферия описана хорошо? не самому же все эти бесчисленные GPIO и т.п. описывать?! не понимаю... ну а ссылки - погляжу, спасибо, может, что прояснится... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 20 апреля, 2011 Опубликовано 20 апреля, 2011 · Жалоба во-первых, в примерах ST нет makefile. а сделать его самостоятельно, не имея прочных понятий в новой архитектуре и не будучи знакомым с новым компилятором, я не смогу. Ну так возьмите готовый:) В тех примерах, на которые я сослался, для добавления файла к проекту достаточно расположить его в каталоге src. А вообще - makefile и архитектура - вещи практически ортогональные. во-вторых, если не ST-шная библиотека - то какая альтернатива? где вся ST-шная периферия описана хорошо? не самому же все эти бесчисленные GPIO и т.п. описывать?! не понимаю... Альтернатива - ручками, через регистры. Доку про них всё равно придётся читать, что с библиотекой, что без. А все регистры описаны в паре специальных файлов - stm32f10x.h и core_cm3.h. Они не являются частью FwLib, а входят в CMSIS. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба Контроллер STM32F103RD. Не могу заставить ADC1 тактироваться от Timer2. Вариантов перепробовал ...очень много. В чем может быть фишка? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KARLSON 1 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба Без кода инициализации, что у Вас сейчас, вряд ли поможем. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 22 апреля, 2011 Опубликовано 22 апреля, 2011 · Жалоба Без кода инициализации, что у Вас сейчас, вряд ли поможем. Вот один из вариантов: void ADC1_Init() { ADC1->CR1 = ADC_CR1_DISCEN | ADC_CR1_EOCIE; ADC1->CR2 = ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTTRIG; ADC1->SQR1 = 0x00; ADC1->SQR2 = 0x00; ADC1->SQR3 = ADC_SQR3_SQ1_0; ADC1->SMPR2 = ADC_SMPR2_SMP1_2; //0x08; ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_RSTCAL; while(ADC1->CR2 & ADC_CR2_RSTCAL); ADC1->CR2 |= ADC_CR2_CAL; while(ADC1->CR2 & ADC_CR2_CAL); ADC1->SR = 0; } void TIM2_Init() { TIM2->CR1 = TIM_CR1_ARPE; TIM2->SMCR = 0; TIM2->ARR = 49; TIM2->PSC = 0x47; // TIM2->CCR2 = 50; // TIM2->CCMR1 = TIM_CCMR1_OC2PE | TIM_CCMR1_OC2CE; TIM2->CCMR1 = TIM_CCMR1_OC2M_0 | TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2PE; // TIM2->CCMR1 = TIM_CCMR1_OC2CE; TIM2->EGR = TIM_EGR_CC2G; TIM2->DIER = TIM_DIER_CC2IE; TIM2->CCER = TIM_CCER_CC2E; } Хедер прикрепил. stm32f10x_map.zip Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alechin 0 22 апреля, 2011 Опубликовано 22 апреля, 2011 · Жалоба Не могу заставить процессор запускаться с программой из флеши. Писал-писал, отлаживался в IARе через ST-Link. А тут решил включить плату отдельно - не хочет запускать программу! ST-Link Utility показывает, что файл прошит. Но стартует программу только если нажать "Core Reset" В чем может быть причина? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 23 апреля, 2011 Опубликовано 23 апреля, 2011 · Жалоба Не могу заставить процессор запускаться с программой из флеши. Писал-писал, отлаживался в IARе через ST-Link. А тут решил включить плату отдельно - не хочет запускать программу! ST-Link Utility показывает, что файл прошит. Но стартует программу только если нажать "Core Reset" В чем может быть причина? Проверьте пины BOOT проца. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться