Страница 5 из 9
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 21:09
aftaev
Impartial эх, если бы меня так в школе учили, был бы вумный
Impartial писал(а):В микроконтроллере есть блок отвечающий за тактирование (RCC) он так и называется в документации.
В этом блоке есть регист (CR - регистр управления). В этом регистре есть бит HSION отвечающий за включение/выключение тактирования от внутреннего RC генератора. Чтобы не лазить каждый раз и не смотреть где этот бит в позиции регистра, берем его по имени, объявленному в "stm32f10x.h".
Если правильно понимаю у Атмелов , ПИКов тактирование всегда включено. Зачем в СТМ32 его нужно включать/выключать?
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:10
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 активно юзает...
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:24
aftaev
UAVpilot, неплохо бы целиком проект для ИАР
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:34
michael-yurov
UAVpilot, Спасибо, это очень близко к тому, что мне нужно.
Буду ковыряться потихоньку.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:37
Serg
У меня не стоит IAR.
Пусть это будет вам домашним заданием.
P.S. На самом деле это мой первый проект на CooCox. Как это ни странно ни разу даже в хелп не заглянул.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:40
aftaev
UAVpilot писал(а):У меня не стоит IAR.
а что у тебя есть?
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:41
michael-yurov
aftaev, Попробуй CoCox. Для начала - проще и удобнее других систем.
Не нужно будет искать, и копировать в папку проекта кучи файлов библиотек.
И практически ничего настраивать не нужно для начала работы.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:45
aftaev
michael-yurov писал(а):aftaev, Попробуй CoCox. Для начала - проще и удобнее других систем.
ткни носом где его скачать?
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:47
ukr-sasha
Михаил, эту ссылку видели:
http://cxem.net/mc/mc172.php ?
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:47
michael-yurov
aftaev писал(а):michael-yurov писал(а):aftaev, Попробуй CoCox. Для начала - проще и удобнее других систем.
ткни носом где его скачать?
Сегодня не твой день - сайт не работает
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:49
michael-yurov
Да, Александр, спасибо (лучше - на "ты").
Видел, прочитал, понравилось, с картинками
но мало...
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 22:51
aftaev
michael-yurov писал(а):Сегодня не твой день - сайт не работает
Видать кокос забыли полить
ты ссылку кинь
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 23:13
Serg
michael-yurov писал(а):Сегодня не твой день - сайт не работает
Усё работает. Это у тебя кусок инета сломался.
Вот тут качай
http://www.coocox.org/CooCox_CoIDE.htm и GCC Toolchain.
Удобно сделано подключение стандартных библиотек, не надо самому копировать файлы или вспоминать где они лежат.
Но отладчик огорчил. Но для небольших проектов сгодится.
aftaev писал(а):а что у тебя есть?
У меня как-то исторически только Keil остался.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 21 май 2013, 23:48
aftaev
UAVpilot писал(а):У меня как-то исторически только Keil остался.
Кеил больше понравился с ним больше возился.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 22 май 2013, 00:22
aftaev
а что это за дивная микруха с дыркой на DASCOVERY делает
акселерометр какой нибудь
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 22 май 2013, 00:31
michael-yurov
Цифровой микрофон.
Нокия с HTC или самсунгом передрались из за такого микрофона
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 25 май 2013, 23:42
michael-yurov
UAVpilot писал(а):Вот вам моргалка светодиодами и нажималка кнопками, причем с прерываниями и приоритетами.
Написана с использованием библиотек, чтобы не парится с даташитами на конкретный камень и не держать в голове имена и структуры регистров. Соотв. работает на них на всех (Cortex-M) не взирая на различия, нужно только подправить имена вайлов в первых четырёх строчках.
Со скрипом у меня все продвигается.
Даже можно сказать, что не продвигается.
С библиотеками для STM32F100 этот код компилируется без проблем,
А с F0 и F4 (с такими контроллерами у меня есть тестовые платки) ничего не выходит.
Имена файлов библиотек, я заменил на аналогичные для соответствующей серии (и еще кучу всего, с чем смог разобраться), но все же компилятор спотыкается на строчках:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);
В итоге, мне все равно нужно будет писать программу под F100, но сейчас под рукой есть только платы под F0 и F4, и хотелось бы попробовать на них.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 25 май 2013, 23:48
Serg
F0 нет, а на F4 завтра проверю. Вполне может быть - уж больно сильно отличается он от F1, да и Cortex-M4 он.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 25 май 2013, 23:54
michael-yurov
UAVpilot писал(а):F0 нет, а на F4 завтра проверю. Вполне может быть - уж больно сильно отличается он от F1, да и Cortex-M4 он.
UAVpilot, еще раз спасибо за большую и полезную помощь.
Мне все это не срочно. На F4 пойдет, полагаю мне лучше сразу с ней пробовать, т.к. все равно собираюсь именно Cortex-M3 использовать, и проще изучить его работу на М4 (я так понимаю, M4 включает все возможности M3)/
Все равно мне самому нужно ковыряться, пробовать, разбираться. Тут в основном вопрос времени.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 01:00
Serg
Попробуй эти функции заменить на:
Код: Выделить всё
SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);