Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4470 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Вот самый простой пример на плату STM32F4-Discovery. Я тоже принялся за STM32, бо надоели эти AVR и Cortex-A8 с готовым линуксом. захотелось с нуля освоить более мощные МК.
Код:
#include <ST\iostm32f407VG.h> //Это недостающий заголовочник для IAR 6.30, который пришлось добавить самому.
#define COUNT 0x0001A0FF
////////////////////////////////////////////////////////////////////////////// int main() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //Enable GPIO A RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; //Enable GPIO D
//RCC->APB1RSTR |= RCC_AHB1RSTR_GPIOARST; //Reset GPIO A //RCC->APB1RSTR |= RCC_AHB1RSTR_GPIODRST; //Reset GPIO D
GPIOD->MODER |= (GPIO_MODER_MODER15_0 | GPIO_MODER_MODER14_0 | GPIO_MODER_MODER13_0 | GPIO_MODER_MODER12_0); // GPIO Mode Port Out
GPIOD->OTYPER = 0x00000000; //Out D type Push-Pull GPIOD->OSPEEDR = 0x00000000; //Out Speed Low (2MHz) GPIOD->PUPDR = 0x00000000; //Not Pull Up/Down
unsigned char a = 0; while(1) { if((GPIOA->IDR) & (GPIO_IDR_IDR_0) == 1) //if PA0 is set to 1 (button pressed) { a = ~a; while((GPIOA->IDR) & (GPIO_IDR_IDR_0) == 1) //if PA0 is set to 1 (button pressed) { asm("nop"); } }
if(!a) { for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_15;} //Set 1 to PD15 for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_15;} //Set 0 to PD15
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_14;} //Set 1 to PD14 for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_14;} //Set 0 to PD14
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_13;} //Set 1 to PD13 for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_13;} //Set 0 to PD13
for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR |= GPIO_ODR_ODR_12;} //Set 1 to PD12 for(int i = 0 ; i < COUNT ; i++){GPIOD->ODR &= ~GPIO_ODR_ODR_12;} //Set 0 to PD12 } } //return 0; }
Программа мигает поочередно четырьмя светодиодами. Мигание можно остановить\запустить штатной пользовательской кнопкой. Антидребезг я не предусматривал.
_________________ I am DX168B and this is my favourite forum on internet!
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Да с программой проблем не было, накосячил со скриптом линкера.
А на F4 делать пока нечего, сейчас подезжают несколько штук F103C8T6, вот на них развернусь! А дискавери в качестве программатора пока пусть порабоатет...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4470 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
У меня секас был с прерываниями. Сначала стартап забыл включить в проект. Потом не мог вкурить, что там с тактированием. В стартапе закомментил три строчки и все заработало. То есть, я выкинул вызов SystemInit от туда (там настраивалось тактирование и прочее)
Настройки тактирования ядра и периферии выставил сам. Все работает пока. Даже есть желание написать парочку макросов для автоподсчета и автонастройки всего этого безобразия.
_________________ I am DX168B and this is my favourite forum on internet!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения