Перейти к содержанию
    

STM32F4DISCOVERY

Добрый день. С контроллерами STM особо не знаком...

Пытаюсь запустить USART3 с пинов PD8 и PD9... Без использования готовых функций...

Вот текст примитивной программы... Светодиоды работают, но внешний светодиод подключённый к PD8 вообще никак не мигает...

В регистрах USART3 при отладке, содержимое регистра USART3->DR стабильно не меняется... Помогите пожалуйста, если что-то знаете, подскажите, в чём может быть причина...

 

	#include "stm32f4xx.h"
#include "system_stm32f4xx.h"

/* Include variables */
unsigned long int i = 0x00000000;

/* Main program text*/
int main(void)
{
/* Set clock mode */
RCC->CFGR |= (1<<0);		// set HSE clock
RCC->AHB1ENR |= (1<<3);		// port D clock enable
RCC->APB1ENR |= (1<<18);	// enable clock USART3

/* Set I/O mode */
GPIOD->MODER = 0x555A5555;	// port D OUT PD8 and PD9 how to alternative function
GPIOD->OTYPER |= (1<<9);		// open-drain mode for PD9_RX
GPIOD->OSPEEDR = 0x555A5555;	// 50 MHz speed PD8 and PD9
GPIOD->PUPDR = 0x00000000;	// no pull-up/pull-down
GPIOD->AFR[1] |= (1<<1);		// PD9 how to alternative function TX
GPIOD->ODR |= (1<<5);		// pull-up PD5

             /* USART3 configuration set */ 
USART3->BRR = 0x0341;		// usart3 speed 9600
USART3->CR1 |= (1<<13);		// usart3 enable
USART3->CR1 |= (1<<3);		// usart3 TX enable

/* Program for indication */
ind:
USART3->DR = 0xFA;
for(;((USART3->SR & USART_SR_TC) == 0);)
{
}
USART3->SR &= ~USART_SR_TC;
GPIOD->ODR |= ((1<<12) | (1<<14));
for(i=0;i<1000000;i++)
{
}
GPIOD->ODR &= ~((1<<12) | (1<<14));
GPIOD->ODR |= ((1<<13) | (1<<15));
for(i=0;i<1000000;i++)
{
}
GPIOD->ODR &= ~((1<<13) | (1<<15));
goto ind;
return(0);	
}

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем open-drain для uart?

GPIOD->AFR[1] |= (1<<1); - это что? точно не то, что в комменте написано. UART1-3 это AF7, и включать его надо на оба пина.

Остальное не проверял, только что в глаза бросилось. Уж лучше STшную либу использовать, при все ее корявости, чем голые цифры в регистры писать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, действительно, просмотрел табличку альтернативных функций на страничке 190 REFERENCE MANUAL, там указано, что это альтернативная функция AF7...) А сразу, среди 1416 страниц не знаметил...)

Спасибо за совет, очень помогло...)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...