19.02.2018, 12:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,714
Сказал спасибо: 130
Сказали Спасибо 1,108 раз(а) в 527 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
По документам - 64к. Но на практике - доступно больше и в том числе "отсутствующие" модули старших чипов этой серии. Но без гарантии работоспособности.
Так что используй 64к.
Цитата:
|
device id = 0x20036410
STM32 flash size failed, probe inaccurate - assuming 128k flash
flash size = 128kbytes
Device Security Bit Set
target state: halted
|
Как вариант - программатор не разобрался с объемом памяти и выставил 128к.
В производстве сильно не выгодно делать кучу разных кристаллов. Cерия 101,102,103 на самом деле имеет одну и ту же начинку, а их разделение на серии происходит на этапе тестирования образцов перед маркировкой (лучшее в 103, похуже 102, слабые 101).
Например:
1) В STM32F101 есть USB, но он не документирован.
2) Видел 102(по маркировке), а на самом деле определялись отладчиком как 103. И RAM было действительно больше и она работала.
3) При внимательном наблюдением выясняется, что у sm32f030f4 вместо 16 килобайт в наличии 32 килобайта, у stm32f103c8 вместо 64 килобайт — 128, у stm32f407ve вместо 512 — 1024, хотя в области размера флеша находится значение 512.
Так что лишнее использовать можно, но гарантий нормальной работы тебе никто не даст.
Последний раз редактировалось DanilinSA; 19.02.2018 в 12:54.
|
|
|
|
19.02.2018, 13:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от sat_art
|
Так как я дуину ненавижу,
|
Не знаю,во всем плохом нужно видеть хорошее. Ардуино готовые модули предоставляет,состыковывать пишеш свое управление и вот все готово. Платы мне лень разводить.
__________________
Глаза боятся,а руки делают.
|
|
|
|
24.02.2018, 22:56
|
|
Прохожий
Регистрация: 19.01.2008
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Здравствуйте! Подскажите какой оптимальный программатор/отладчик выбрать для начала изучение stm32 и навсякий stm8?
Как этот вариант http://s.aliexpress.com/beIJrMjA?fromSns
или такой за 4.5$
http://kiloom.com.ua/debuggers/stlink
Искал в основном с наличием swo и nRst. Думаю они не помешают при программировании и отладки.
Спасибо!
Последний раз редактировалось talex1985; 25.02.2018 в 02:55.
|
|
|
|
24.02.2018, 23:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,628
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
talex1985, не надо такие дорогие! Есть дешевле. На ибее можно еще дешевле найти, но там 50/50, что придет...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
24.02.2018, 23:43
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Эти китайские залипухи отлично работают. Для питания таргета от дебаггера требуют легкой доработки, иначе завешивают дебаггер при горячем подключении.
|
|
|
|
26.02.2018, 17:24
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Кто пользовал 303-ю серию? Как с усилками и компараторами дела? Имеет смысл переплачивать бакс или даже два? Или лучше взять 103 с ЦАП а усилок снаружи прицепить? Ядро не принципиально.
Сильно не пинайте с СТМами только знакомлюсь, но хочется определиться куда упор делать.
|
|
|
|
27.02.2018, 20:00
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
И что? По 303-й серии никто не скажет ничего хорошего?
|
|
|
|
27.02.2018, 23:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,714
Сказал спасибо: 130
Сказали Спасибо 1,108 раз(а) в 527 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А что сказать? Серия как серия. Абсолютно типовая.
Из особенностей - заточка под обработку "аналога".
Имеет хороший быстрый АЦП и усилители с компараторами. Это позволяет упростить внешнюю обвязку.
У меня валялся не доделанный самопальный осциллограф на этим чипе. Самое то. А выходной ЦАП по моему стандартный ( глянь в доки - я могу ошибаться).
Имеет смысл использовать только для реализации быстрого АЦП. Если быстрый АЦП не нужен - особого смысла в использовании данной серии нет.
Последний раз редактировалось DanilinSA; 27.02.2018 в 23:21.
|
|
|
|
01.03.2018, 07:47
|
|
Прохожий
Регистрация: 10.03.2016
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Нашел хорошую статью, где читает и отправляет строку, но проблемка есть, мне надо его перекинуть на usart3, т.к. у меня порты usart1 и usart2 заняты, я сам переделал как умею, но не работает может подскажете
Нажмите, чтобы открыть спойлер
Цитата:
|
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
unsigned char Buffer[512]; // Буфер
int a,b;
void init()
{
//------------------------------------------------------------
// UART
//------------------------------------------------------------
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//Configure GPIO pin
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // Tx
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; // Rx
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// Configure UART
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART3, &USART_InitStructure);
USART_Cmd(USART3, ENABLE);
}
void delay(unsigned long p)
{
while(p›0){p--;}
}
void send_Uart(USART_TypeDef* USARTx, unsigned char c)
{
while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE)== RESET){}
USART_SendData(USARTx, c);
}
unsigned char getch_Uart(USART_TypeDef* USARTx)
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_RXNE) == RESET){}
return USART_ReceiveData(USARTx);
}
// Отправка строки в USTR
void send_Uart_str(USART_TypeDef* USARTx, unsigned char *s)
{
while (*s != 0)
send_Uart(USARTx, *s++);
}
// выводим число в UART. Максимальная длина числа 6 цифр
void send_int_Uart(USART_TypeDef* USARTx,long c)
{
unsigned long d=10000000;
char temp,flag=0;
if(c‹0)
{
send_Uart(USARTx,'-');
c=-c;
}
do
{
c=c%d;
d=d/10;
temp=c/d;
if(temp!=0)
{
flag=1;
}
if(flag==1)
{
send_Uart(USARTx,temp+'0');
}
}
while(d›1);
}
// Читаем число (в ASCII) с UART. Максимальной длиной в 8 знаков.
// Завершение ввода по вводу любого не цифрового символа
long read_int_uart(USART_TypeDef* USARTx)
{
unsigned char temp=0,index=0,flag=0;
long value=0;
temp=getch_Uart(USARTx);
if(temp=='-')
{
flag=1;
temp=getch_Uart(USARTx);
index++;
}
do
{
index++;
if((47‹temp)&&(temp‹5 )
{
value=value*10+temp-48;
}
else
{
index=255;
}
if(index‹7)
{
temp=getch_Uart(USARTx);
}
}while(index‹7);
/* while(index‹7)
{
value=value*10+temp;
if(flag==0)
{
flag=2;
}
else
{
temp=getch_Uart(USARTx);
}
index++;
if((47‹temp)&&(temp‹5 )
{
temp=temp-48;
}
else
{
index=255;
}
}*/
if(flag==1)
{
value=-value;
}
return value;
}
// читаем текстовую строку с UART, до ввода ‹enter›. Максимальная длина строки 512Байт
void read_str_uart(USART_TypeDef* USARTx,unsigned char* s)
{
unsigned char temp;
unsigned int index=0;
while(index‹512)
{
temp=getch_Uart(USARTx);
if(temp!=13)
{
*s++=temp;
}
else
{
index=512;
}
index++;
}
}
int main(void)
{
init();
while(1)
{
send_Uart_str(USART3,"alex-exe.ru\n");
send_Uart_str(USART3,"Enter string\n");
read_str_uart(USART3, Buffer);
send_Uart_str(USART3,"Input string - ");
send_Uart_str(USART3, Buffer);
send_Uart(USART3,'\n');
send_Uart_str(USART3,"Enter two numbers separated by a space\n");
a=read_int_uart(USART3);
b=read_int_uart(USART3);
send_Uart_str(USART3,"a + b = ");
send_int_Uart(USART3, a+b);
send_Uart(USART3,'\n');
}
}
|
|
|
|
|
01.03.2018, 11:01
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Много очень плохого кода. Не пишите такое и лучше никому не показывайте. Прием данных должен быть либо через DMA (лучше), либо через прерывание (по старинке). Но уж точно не так.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:19.
|
|