STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
большинство портов STM32 5V-tolerant, работает норм. от 5В-RS232
-
The_D
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Пт июл 06, 2012 14:28:17
- Откуда: Россия. г.Смоленск
Re: STM32 новичку в ARM что к чему
Что-нибудь нужно делать чтобы это работало? Там резисторы какие впаять или конфигурацию порта какую-то особенную выставить?
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
Нет, ничего.
Только свериться с даташитом (pinouts), чтобы напротив названия вывода в графе "I/O structure" стояло "FT".
Только свериться с даташитом (pinouts), чтобы напротив названия вывода в графе "I/O structure" стояло "FT".
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

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

-
The_D
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Пт июл 06, 2012 14:28:17
- Откуда: Россия. г.Смоленск
Re: STM32 новичку в ARM что к чему
Мда, пошарил еще раз по даташитам/интернетам и выяснил что выводы используемые уартом нифига не толерантные. Вот и получается что мне нужно или колхозить делитель или использовать 3-х вольтовую микросхему для rs485. А учитывая что MAX487 я купил от души придется колхозить ((. Слава богу что не поспешил и не включил распаянный модуль.
Re: STM32 новичку в ARM что к чему
Даже с учётом Remap???
Быть такого не может... смотрите лучше... хоть один, но должен быть...
Быть такого не может... смотрите лучше... хоть один, но должен быть...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
вы хоть уточните какой контроллер и выводы 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 что к чему
PA0-PA3
STM32F100
STM32F100
Re: STM32 новичку в ARM что к чему
The_D писал(а):PA0-PA3
STM32F100
Подсоединяйте их через резисторы 1к и все будет ОК, проверено, "лишнее" напряжение останется на них.
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: STM32 новичку в ARM что к чему
Это НЕ ок. Открывается защитный диод по входу, и эти 5 В через резистор и диод идут на 3.3. Если нагрузка по 3.3 В мала, то 3.3 может вырасти до 4, а то и выше.
Замеряйте своё 3.3 В питание ДО и ПОСЛЕ подключения резисторов.
Замеряйте своё 3.3 В питание ДО и ПОСЛЕ подключения резисторов.
Giggity giggity goo!
Re: STM32 новичку в ARM что к чему
поможет стабилитрон на 3.3В
-
PetrB09
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Вт авг 14, 2012 21:13:42
- Откуда: Санкт-Петербург
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Помогите, во время компиляции проекта в IAR вылезают такие ошибки:
в чем дело? сами файлы есть.
первая ошибка вылезает еще когда делаешь "rebuild all"
в чем дело? сами файлы есть.
первая ошибка вылезает еще когда делаешь "rebuild all"
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
1. В проект включен сорц system_stm32l10x.c? startup_stm32l1xx_md.s пытается вытащить внешнюю функцию SystemInit, которую линкер чавойта не находит.
2. Аналогично. В main.c осуществляется вызов нигде не объявленной функции Delay..
2. Аналогично. В main.c осуществляется вызов нигде не объявленной функции Delay..
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

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

-
PetrB09
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Вт авг 14, 2012 21:13:42
- Откуда: Санкт-Петербург
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Спасибо, подключил system_stm32l10x.c и одна ошибка пропала. а где delay объявляется? я перед этим делал проект вот от сюда:http://chipspace.ru/stm32-project-iar-ewarm-porty-1/ , там она то же используется, а файлы все те же подключены.
P. S. Прошу прощения за, возможно, глупые вопросы, просто я с Си только знакомлюсь, да и с МК то же
P. S. Прошу прощения за, возможно, глупые вопросы, просто я с Си только знакомлюсь, да и с МК то же
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
Смотрите листинг main.c. Delay(uint32_t step) объявляется в самую последнюю очередь:
Вы или прототип функции пропустили (смотрите вверху после блока дефайнов), или саму ее забыли объявить.
Код: Выделить всё
void Delay(uint32_t step)
{
while(step>>0)
{
--step;
}
}
Вы или прототип функции пропустили (смотрите вверху после блока дефайнов), или саму ее забыли объявить.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

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

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

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

-
PetrB09
- Открыл глаза
- Сообщения: 61
- Зарегистрирован: Вт авг 14, 2012 21:13:42
- Откуда: Санкт-Петербург
- Контактная информация:
Re: STM32 новичку в ARM что к чему
упс... я не заметил, что ошибка другая появляется
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
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 что к чему
Наш провайдер вообще озверел, два дня без инета на работе, так что извиняюсь премного.
Итак.
Нужно просто обращать внимание на то, что пишете, и проверять соответствие того, что пишете, синтаксису языка, на котором пишете.
Почему после оператора while точка с запятой? Куда делась скобка, открывающая функцию Delay? И куда делась скобка, закрывающая функцию main? ))
Хотя я, конечно, понимаю, что эти ошибки - от копирования чужой программы без осознания производимых действий.
А вот так сделайте.
ЗЫ. Кстати, какие-то странные шаманские манипуляции автор производит в функции Delay. Я об этом:
На кой?
Никто не знает.
Итак.
Нужно просто обращать внимание на то, что пишете, и проверять соответствие того, что пишете, синтаксису языка, на котором пишете.
Почему после оператора 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)
На кой?
Никто не знает.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

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

Re: STM32 новичку в ARM что к чему
Код: Выделить всё
while (step>>0)
Очередная очепятка.... Думаю там while (step>0) {...}, хотя я бы написал так while (step) {...}
— Не говорите мне что делать и я не скажу куда Вам идти...
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: STM32 новичку в ARM что к чему
Так-то да, я бы точно так же сделал. Посему и задумался - к чему эти лишние телодвижения? Результат-то один.
Верно и в самом деле опечатка.
Верно и в самом деле опечатка.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

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