STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Контроллеры, драйверы, датчики, управляющие устройства.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение aftaev »

Impartial эх, если бы меня так в школе учили, был бы вумный :)
Impartial писал(а):В микроконтроллере есть блок отвечающий за тактирование (RCC) он так и называется в документации.
В этом блоке есть регист (CR - регистр управления). В этом регистре есть бит HSION отвечающий за включение/выключение тактирования от внутреннего RC генератора. Чтобы не лазить каждый раз и не смотреть где этот бит в позиции регистра, берем его по имени, объявленному в "stm32f10x.h".
Если правильно понимаю у Атмелов , ПИКов тактирование всегда включено. Зачем в СТМ32 его нужно включать/выключать?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение Serg »

aftaev писал(а):Если правильно понимаю у Атмелов , ПИКов тактирование всегда включено. Зачем в СТМ32 его нужно включать/выключать?
Незатактированный блок не потребляет электричества.

Вот вам моргалка светодиодами и нажималка кнопками, причем с прерываниями и приоритетами.
Написана с использованием библиотек, чтобы не парится с даташитами на конкретный камень и не держать в голове имена и структуры регистров. Соотв. работает на них на всех (Cortex-M) не взирая на различия, нужно только подправить имена вайлов в первых четырёх строчках.

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

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_exti.h"

void Delay(uint32_t val) {
	for (; val!=0; val--);
}

// Обработчики прерываний
// Сброс флага прерывания специально поставлен в конце, чтобы было лучше видно как работают приоритеты
void EXTI0_IRQHandler(void) {
	int i;
	for (i=0; i<30; i++) {
		GPIOA->ODR ^= GPIO_Pin_2;
		Delay(250000);
	}
	EXTI_ClearFlag(EXTI_Line0);
}

void EXTI1_IRQHandler(void) {
	int i;
	for (i=0; i<30; i++) {
		GPIOA->ODR ^= GPIO_Pin_3;
		Delay(250000);
	}
	EXTI_ClearFlag(EXTI_Line1);
}

int main(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);

    // Настраиваем пины кнопок PA0, PA1
    GPIO_DeInit(GPIOA);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    // PA0 и PA1 будут использоваться как линии внешнего прерывания 0 и 1 соотв. Это соответствие зашито в архитектуру
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);
    // Настраиваем линии внешнего прерывания на спад (кнопки коротят входы на землю)
    EXTI_DeInit();
    EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
    // Разрешаем эти прерывания.
    NVIC_EnableIRQ(EXTI0_IRQn);
    NVIC_EnableIRQ(EXTI1_IRQn);
    // Линии 1 понижаем приоритет
    NVIC_SetPriority(EXTI1_IRQn, 2);

    // Настраиваем пины светодиодов, у меня это PA2, PA3, PD2
    GPIO_DeInit(GPIOA);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_DeInit(GPIOD);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);


    while(1)
    {
        // Моргаем PD2 всё свободное время
        GPIOD->ODR ^= GPIO_Pin_2;
        Delay(250000);
    }
}
Суть:
Когда нечего делать моргает PD2.
При нажатии PA0 "нечего делать" прерывается и моргает 30 раз PA2. Если в это время нажать PA1, то PA2 доморгает до 30 и только после этого произойдёт другое прерывание и заморгает PA3.
При нажатии PA1 "нечего делать" прерывается и моргает 30 раз PA3. Если в это время нажать PA0, то PA3 прервется и начнёт моргать PA2, когда отморгает 30 раз PA3 доморгает остаток до 30.


P.S. Impartial хоть и хает библиотеки, но ту-же CMSIS активно юзает... :hehehe:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение aftaev »

UAVpilot, неплохо бы целиком проект для ИАР :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение michael-yurov »

UAVpilot, Спасибо, это очень близко к тому, что мне нужно.
Буду ковыряться потихоньку.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение Serg »

У меня не стоит IAR. :wik:
Пусть это будет вам домашним заданием. :hehehe:

P.S. На самом деле это мой первый проект на CooCox. Как это ни странно ни разу даже в хелп не заглянул. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение aftaev »

UAVpilot писал(а):У меня не стоит IAR.
а что у тебя есть?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение michael-yurov »

aftaev, Попробуй CoCox. Для начала - проще и удобнее других систем.
Не нужно будет искать, и копировать в папку проекта кучи файлов библиотек.
И практически ничего настраивать не нужно для начала работы.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение aftaev »

michael-yurov писал(а):aftaev, Попробуй CoCox. Для начала - проще и удобнее других систем.
ткни носом где его скачать?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2180
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение ukr-sasha »

Михаил, эту ссылку видели: http://cxem.net/mc/mc172.php ?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение michael-yurov »

aftaev писал(а):
michael-yurov писал(а):aftaev, Попробуй CoCox. Для начала - проще и удобнее других систем.
ткни носом где его скачать?
Сегодня не твой день - сайт не работает :wik:
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение michael-yurov »

ukr-sasha писал(а):Михаил, эту ссылку видели: http://cxem.net/mc/mc172.php ?
Да, Александр, спасибо (лучше - на "ты").
Видел, прочитал, понравилось, с картинками :D но мало...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение aftaev »

michael-yurov писал(а):Сегодня не твой день - сайт не работает
Видать кокос забыли полить :)
ты ссылку кинь :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение Serg »

michael-yurov писал(а):Сегодня не твой день - сайт не работает :wik:
Усё работает. Это у тебя кусок инета сломался.

Вот тут качай http://www.coocox.org/CooCox_CoIDE.htm и GCC Toolchain.
Удобно сделано подключение стандартных библиотек, не надо самому копировать файлы или вспоминать где они лежат.
Но отладчик огорчил. Но для небольших проектов сгодится.
aftaev писал(а):а что у тебя есть?
У меня как-то исторически только Keil остался.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение aftaev »

UAVpilot писал(а):У меня как-то исторически только Keil остался.
Кеил больше понравился с ним больше возился.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение aftaev »

а что это за дивная микруха с дыркой на DASCOVERY делает :hehehe:
123.png (2494 просмотра) <a class='original' href='./download/file.php?id=14813&sid=d328f93ba8a7d5637caa3832cac01c95&mode=view' target=_blank>Загрузить оригинал (527.28 КБ)</a>
акселерометр какой нибудь :thinking:
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение michael-yurov »

Цифровой микрофон.
Нокия с HTC или самсунгом передрались из за такого микрофона
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение michael-yurov »

UAVpilot писал(а):Вот вам моргалка светодиодами и нажималка кнопками, причем с прерываниями и приоритетами.
Написана с использованием библиотек, чтобы не парится с даташитами на конкретный камень и не держать в голове имена и структуры регистров. Соотв. работает на них на всех (Cortex-M) не взирая на различия, нужно только подправить имена вайлов в первых четырёх строчках.
Со скрипом у меня все продвигается.
Даже можно сказать, что не продвигается.
С библиотеками для STM32F100 этот код компилируется без проблем,
А с F0 и F4 (с такими контроллерами у меня есть тестовые платки) ничего не выходит.
Имена файлов библиотек, я заменил на аналогичные для соответствующей серии (и еще кучу всего, с чем смог разобраться), но все же компилятор спотыкается на строчках:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);
Untitled-2.png (2455 просмотров) <a class='original' href='./download/file.php?id=14976&sid=d328f93ba8a7d5637caa3832cac01c95&mode=view' target=_blank>Загрузить оригинал (104.19 КБ)</a>
В итоге, мне все равно нужно будет писать программу под F100, но сейчас под рукой есть только платы под F0 и F4, и хотелось бы попробовать на них.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение Serg »

F0 нет, а на F4 завтра проверю. Вполне может быть - уж больно сильно отличается он от F1, да и Cortex-M4 он.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение michael-yurov »

UAVpilot писал(а):F0 нет, а на F4 завтра проверю. Вполне может быть - уж больно сильно отличается он от F1, да и Cortex-M4 он.
UAVpilot, еще раз спасибо за большую и полезную помощь.
Мне все это не срочно. На F4 пойдет, полагаю мне лучше сразу с ней пробовать, т.к. все равно собираюсь именно Cortex-M3 использовать, и проще изучить его работу на М4 (я так понимаю, M4 включает все возможности M3)/
Все равно мне самому нужно ковыряться, пробовать, разбираться. Тут в основном вопрос времени.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics

Сообщение Serg »

Попробуй эти функции заменить на:

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

SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

Вернуться в «Электроника»