Jump to content

    
Sign in to follow this  
electrotehnik

STM32F373 GPIO

Recommended Posts

Добрый день

 

Не работают 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.

Share this post


Link to post
Share on other sites
Самое существенное отличие, что теперь GPIO не попадает в регион bitband.

 

Смотрел example на STM32F37x - там нет отличий по инициализации портов, все как Cortex-M4. Вообще уже не знаю что делать.

Может кварцевый резонатор ерундить, если операции с чтением и записью прошивки проходят всегда успешно?

Share this post


Link to post
Share on other sites
Смотрел example на STM32F37x - там нет отличий по инициализации портов, все как Cortex-M4. Вообще уже не знаю что делать.

Может кварцевый резонатор ерундить, если операции с чтением и записью прошивки проходят всегда успешно?

CUBE не пробовали?

Share this post


Link to post
Share on other sites

Попробовал Cube - все заработало, схема значит рабочая. Но Cube использует HAL драйверы.

Я же привык кодить на Standart Peripherial Library (SPL), судя по тому, что код рабочий, затык у меня в недоподключенной библиотеке SPL.

Дерево файлов моего проекта (кроме всех файлов в папке MDS-ARM) можно посмотреть во вложении к этому посту.

 

 

 

 

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

 

По осциллографу заметил, что код-то заработал, да не на той частоте, на какой нужно.

При этом работает только если подключать программатор SWD. Если подавать питание без подключенного программатора, то проц не исполняет код вообще. Сдается мне в тактировании проблема.

CortexM4_F37x.zip

Edited by electrotehnik

Share this post


Link to post
Share on other sites

Подскажите, пожалуйста, как узнать текущую частоту тактирования проца (где прочитать)? Вывод 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); 
}

Edited by electrotehnik

Share this post


Link to post
Share on other sites
Подскажите, пожалуйста, как узнать текущую частоту тактирования проца (где прочитать)?

 

Банальный ответ - отладчиком прочитать регистры тактирования (RCC_*), выписать на бумажку, и по reference manual'у разобрать их на битики. Вместе с тщательным курением этого мануала занимает полчаса.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this