STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

Re: STM32 новичку в ARM что к чему

Сообщение polyname »

большинство портов STM32 5V-tolerant, работает норм. от 5В-RS232
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Re: STM32 новичку в ARM что к чему

Сообщение The_D »

Что-нибудь нужно делать чтобы это работало? Там резисторы какие впаять или конфигурацию порта какую-то особенную выставить?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: STM32 новичку в ARM что к чему

Сообщение SubDia »

Нет, ничего.
Только свериться с даташитом (pinouts), чтобы напротив названия вывода в графе "I/O structure" стояло "FT".
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Re: STM32 новичку в ARM что к чему

Сообщение The_D »

Мда, пошарил еще раз по даташитам/интернетам и выяснил что выводы используемые уартом нифига не толерантные. Вот и получается что мне нужно или колхозить делитель или использовать 3-х вольтовую микросхему для rs485. А учитывая что MAX487 я купил от души придется колхозить ((. Слава богу что не поспешил и не включил распаянный модуль.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Даже с учётом Remap???
Быть такого не может... смотрите лучше... хоть один, но должен быть...
"Я не даю готовых решений, я заставляю думать!"(С)
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

Re: STM32 новичку в ARM что к чему

Сообщение polyname »

выводы используемые уартом нифига не толерантные
вы хоть уточните какой контроллер и выводы UART. У STM32F100/103/205 (подозреваю что и у других) PA9/10/PB10/PB11/PC10/PC11/PD5/PD6 обозначены как FT, и точно работают от 5В
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Re: STM32 новичку в ARM что к чему

Сообщение The_D »

PA0-PA3
STM32F100
makser
Открыл глаза
Сообщения: 71
Зарегистрирован: Пт апр 24, 2009 11:25:34
Откуда: Rus

Re: STM32 новичку в ARM что к чему

Сообщение makser »

The_D писал(а):PA0-PA3
STM32F100

Подсоединяйте их через резисторы 1к и все будет ОК, проверено, "лишнее" напряжение останется на них.
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Re: STM32 новичку в ARM что к чему

Сообщение Foks »

Это НЕ ок. Открывается защитный диод по входу, и эти 5 В через резистор и диод идут на 3.3. Если нагрузка по 3.3 В мала, то 3.3 может вырасти до 4, а то и выше.
Замеряйте своё 3.3 В питание ДО и ПОСЛЕ подключения резисторов.
Giggity giggity goo!
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

Re: STM32 новичку в ARM что к чему

Сообщение polyname »

поможет стабилитрон на 3.3В
PetrB09
Открыл глаза
Сообщения: 61
Зарегистрирован: Вт авг 14, 2012 21:13:42
Откуда: Санкт-Петербург
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение PetrB09 »

Помогите, во время компиляции проекта в IAR вылезают такие ошибки:
error.png
(12.6 КБ) 586 скачиваний

в чем дело? сами файлы есть.
первая ошибка вылезает еще когда делаешь "rebuild all" :(
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: STM32 новичку в ARM что к чему

Сообщение SubDia »

1. В проект включен сорц system_stm32l10x.c? startup_stm32l1xx_md.s пытается вытащить внешнюю функцию SystemInit, которую линкер чавойта не находит.
2. Аналогично. В main.c осуществляется вызов нигде не объявленной функции Delay..
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
PetrB09
Открыл глаза
Сообщения: 61
Зарегистрирован: Вт авг 14, 2012 21:13:42
Откуда: Санкт-Петербург
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение PetrB09 »

Спасибо, подключил system_stm32l10x.c и одна ошибка пропала. а где delay объявляется? я перед этим делал проект вот от сюда:http://chipspace.ru/stm32-project-iar-ewarm-porty-1/ , там она то же используется, а файлы все те же подключены.

P. S. Прошу прощения за, возможно, глупые вопросы, просто я с Си только знакомлюсь, да и с МК то же
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: STM32 новичку в ARM что к чему

Сообщение SubDia »

Смотрите листинг main.c. Delay(uint32_t step) объявляется в самую последнюю очередь:

Код: Выделить всё

void Delay(uint32_t step)
{
 while(step>>0)
 {
  --step;
 }
}


Вы или прототип функции пропустили (смотрите вверху после блока дефайнов), или саму ее забыли объявить.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
PetrB09
Открыл глаза
Сообщения: 61
Зарегистрирован: Вт авг 14, 2012 21:13:42
Откуда: Санкт-Петербург
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение PetrB09 »

вроде добавил кусок сразу после дефайнов, и в конце тот, что вы написали, не помогает. А как еще можно задержку сделать (для бегущего огонька на светодиодах)?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: STM32 новичку в ARM что к чему

Сообщение SubDia »

Скопируйте всё из main.c и сюда вставьте. Не может такого быть, чтобы прототипированная и объявленная как надо функция не обнаруживалась.
Суть не в выполнении функции задержки, а в ее названии. В данном случае важно только это.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
PetrB09
Открыл глаза
Сообщения: 61
Зарегистрирован: Вт авг 14, 2012 21:13:42
Откуда: Санкт-Петербург
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение PetrB09 »

упс... я не заметил, что ошибка другая появляется :oops:

Error[Pe020]: identifier "step" is undefined C:\Users\Petr\Documents\Project\LED2\main.c 80
Warning[Pe128]: loop is not reachable C:\Users\Petr\Documents\Project\LED2\main.c 80


Спойлер

Код: Выделить всё

#include <stm32l1xx.h>
#include <stm32l1xx_gpio.h>
#define LD_PORT GPIOB
#define LD_1 GPIO_Pin_15
#define LD_2 GPIO_Pin_14
#define LD_3 GPIO_Pin_13
#define LD_4 GPIO_Pin_12
#define LD_5 GPIO_Pin_11
#define LD_6 GPIO_Pin_10
#define LD_7 GPIO_Pin_2

#define GPIO_HIGH(a, b) a -> BSRRL = b
#define GPIO_LOW(a, b) a -> BSRRH = b

void InitPeriph(void);
void Delay(uint32_t step);

int main(void)
{
   RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
   GPIOB->MODER |= GPIO_MODER_MODER15_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_15;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR15;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR15;
   
   GPIOB->MODER |= GPIO_MODER_MODER14_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_14;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR14;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR14;
     
   GPIOB->MODER |= GPIO_MODER_MODER13_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_13;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR13;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR13;
     
   GPIOB->MODER |= GPIO_MODER_MODER12_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_12;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR12;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR12;
   
   GPIOB->MODER |= GPIO_MODER_MODER11_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_11;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR11;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR11;
     
   GPIOB->MODER |= GPIO_MODER_MODER10_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_10;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR10;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR10;
   
   GPIOB->MODER |= GPIO_MODER_MODER2_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_2;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR2;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR2;
   while (1){
     GPIO_LOW(LD_PORT, LD_7);
     GPIO_HIGH(LD_PORT, LD_1);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_1);
     GPIO_HIGH(LD_PORT, LD_2);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_2);
     GPIO_HIGH(LD_PORT, LD_3);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_3);
     GPIO_HIGH(LD_PORT, LD_4);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_4);
     GPIO_HIGH(LD_PORT, LD_5);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_5);
     GPIO_HIGH(LD_PORT, LD_6);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_6);
     GPIO_HIGH(LD_PORT, LD_7);
     Delay(0x0001FFFF);
   }
   void Delay(uint32_t step)
 
while(step>>0);
 {
 --step;
 }
 }
Последний раз редактировалось PetrB09 Вт ноя 13, 2012 20:03:08, всего редактировалось 1 раз.
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: STM32 новичку в ARM что к чему

Сообщение SubDia »

Наш провайдер вообще озверел, два дня без инета на работе, так что извиняюсь премного.

Итак.
Нужно просто обращать внимание на то, что пишете, и проверять соответствие того, что пишете, синтаксису языка, на котором пишете.
Почему после оператора while точка с запятой? Куда делась скобка, открывающая функцию Delay? И куда делась скобка, закрывающая функцию main? ))
Хотя я, конечно, понимаю, что эти ошибки - от копирования чужой программы без осознания производимых действий.
А вот так сделайте.
Спойлер

Код: Выделить всё

#include <stm32l1xx.h>
#include <stm32l1xx_gpio.h>
#define LD_PORT GPIOB
#define LD_1 GPIO_Pin_15
#define LD_2 GPIO_Pin_14
#define LD_3 GPIO_Pin_13
#define LD_4 GPIO_Pin_12
#define LD_5 GPIO_Pin_11
#define LD_6 GPIO_Pin_10
#define LD_7 GPIO_Pin_2

#define GPIO_HIGH(a, b) a -> BSRRL = b
#define GPIO_LOW(a, b) a -> BSRRH = b

void InitPeriph(void);
void Delay(uint32_t step);

int main(void)
{
   RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
   GPIOB->MODER |= GPIO_MODER_MODER15_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_15;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR15;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR15;
   
   GPIOB->MODER |= GPIO_MODER_MODER14_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_14;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR14;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR14;
     
   GPIOB->MODER |= GPIO_MODER_MODER13_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_13;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR13;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR13;
     
   GPIOB->MODER |= GPIO_MODER_MODER12_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_12;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR12;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR12;
   
   GPIOB->MODER |= GPIO_MODER_MODER11_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_11;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR11;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR11;
     
   GPIOB->MODER |= GPIO_MODER_MODER10_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_10;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR10;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR10;
   
   GPIOB->MODER |= GPIO_MODER_MODER2_0;
   GPIOB->OTYPER &= ~GPIO_OTYPER_OT_2;
   GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR2;
   GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR2;
   while (1){
     GPIO_LOW(LD_PORT, LD_7);
     GPIO_HIGH(LD_PORT, LD_1);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_1);
     GPIO_HIGH(LD_PORT, LD_2);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_2);
     GPIO_HIGH(LD_PORT, LD_3);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_3);
     GPIO_HIGH(LD_PORT, LD_4);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_4);
     GPIO_HIGH(LD_PORT, LD_5);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_5);
     GPIO_HIGH(LD_PORT, LD_6);
     Delay(0x0001FFFF);
     GPIO_LOW(LD_PORT, LD_6);
     GPIO_HIGH(LD_PORT, LD_7);
     Delay(0x0001FFFF);
   }
}
 
void Delay(uint32_t step) {
while(step>>0)
 {
 --step;
 }
}

ЗЫ. Кстати, какие-то странные шаманские манипуляции автор производит в функции Delay. Я об этом:

Код: Выделить всё

while (step>>0)

На кой? :dont_know:
Никто не знает.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: STM32 новичку в ARM что к чему

Сообщение md5sum »

Код: Выделить всё

while (step>>0)

Очередная очепятка.... Думаю там while (step>0) {...}, хотя я бы написал так while (step) {...}
— Не говорите мне что делать и я не скажу куда Вам идти...
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: STM32 новичку в ARM что к чему

Сообщение SubDia »

Так-то да, я бы точно так же сделал. Посему и задумался - к чему эти лишние телодвижения? Результат-то один.
Верно и в самом деле опечатка.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Ответить

Вернуться в «ARM»