Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F373 GPIO
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
electrotehnik
Добрый день

Не работают GPIO. Все перепроверил, использую CMSIS и Standart Peripherial Library, вот код:

Код
#include "stm32f37x.h"
#include "stm32f37x_gpio.h"

void InitPort(void)
{
   GPIO_InitTypeDef  GPIO_InitStructure;
  
   /* Разрешить тактирование GPIOx */
   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
  
   /* Конфигурирование ножки PB7, туда подключен светодиод */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
   return;
}

int main(void)
{
    InitPort();
    GPIO_SetBits(GPIOB, GPIO_Pin_7); //светодиод горит
  
    while (1)
  {
  }
}


Может чего-то не хватает? Подскажите, ткните пальцем пожалуйста. На других MCU Cortex-M4 такой код работает... вот и думаю, может проц запитал не до конца, но он ведь видится, прошивка льется и читается ST-Link.
Программирую в Keil.
adnega
Самое существенное отличие, что теперь GPIO не попадает в регион bitband.
electrotehnik
Цитата(adnega @ Jun 4 2015, 08:34) *
Самое существенное отличие, что теперь GPIO не попадает в регион bitband.


Смотрел example на STM32F37x - там нет отличий по инициализации портов, все как Cortex-M4. Вообще уже не знаю что делать.
Может кварцевый резонатор ерундить, если операции с чтением и записью прошивки проходят всегда успешно?
Tanya
Цитата(electrotehnik @ Jun 4 2015, 15:12) *
Смотрел example на STM32F37x - там нет отличий по инициализации портов, все как Cortex-M4. Вообще уже не знаю что делать.
Может кварцевый резонатор ерундить, если операции с чтением и записью прошивки проходят всегда успешно?

CUBE не пробовали?
electrotehnik
Цитата(Tanya @ Jun 4 2015, 12:47) *
CUBE не пробовали?


Cube громоздкая тема. Но ради проверки работоспособности схемы попробовать можно..
electrotehnik
Попробовал Cube - все заработало, схема значит рабочая. Но Cube использует HAL драйверы.
Я же привык кодить на Standart Peripherial Library (SPL), судя по тому, что код рабочий, затык у меня в недоподключенной библиотеке SPL.
Дерево файлов моего проекта (кроме всех файлов в папке MDS-ARM) можно посмотреть во вложении к этому посту.




По непонятным для меня причинам код из первого поста заработал сам собой. wacko.gif

По осциллографу заметил, что код-то заработал, да не на той частоте, на какой нужно.
При этом работает только если подключать программатор SWD. Если подавать питание без подключенного программатора, то проц не исполняет код вообще. Сдается мне в тактировании проблема.
ViKo
Цитата(electrotehnik @ Jun 18 2015, 13:06) *
Сдается мне в тактировании проблема.

А, может, в сбросе? Вывод NRST.
electrotehnik
Подскажите, пожалуйста, как узнать текущую частоту тактирования проца (где прочитать)? Вывод MCO конфигурировать не вариант, так как осциллограф максимум воспримет 30 МГц. Используются настройки SPL по умолчанию. Везде в статьях по STM32 пишут, что по умолчанию на шине APB1 тактовая частота 24МГц.
Но мне удалось получить длину импульсов 1 секунда только когда поставил следующие значения в инициализации:

Код
void InitTimer(void)
{
    TIM_TimeBaseInitTypeDef base_timer;
        TIM_TimeBaseStructInit(&base_timer);
    
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
    
    base_timer.TIM_Prescaler = 36000 - 1;
    base_timer.TIM_Period = 2000;
    TIM_TimeBaseInit(TIM6, &base_timer);
    
    TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);
    TIM_Cmd(TIM6, ENABLE);
    
    NVIC_EnableIRQ(TIM6_DAC1_IRQn);
}
esaulenka
Цитата(electrotehnik @ Jun 18 2015, 14:43) *
Подскажите, пожалуйста, как узнать текущую частоту тактирования проца (где прочитать)?


Банальный ответ - отладчиком прочитать регистры тактирования (RCC_*), выписать на бумажку, и по reference manual'у разобрать их на битики. Вместе с тщательным курением этого мануала занимает полчаса.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.