Всем доброго времени суток!
Столкнулся с такой проблемой. Запускаю UART, передаю биты, но увы и ах.. Комп принимает биты, но какие-то другие. Не могу понять в чем дело.
Код по инициализации и передаче символа, прикрепил.
При передаче символа H получаю 88, при передаче 0xAA, получаю 0x6A.
При передаче 0xFF получаю 0xFF (но там то тупо все нули, поэтому очевидно, что должны были прийти все эти нули).
P.S. При работе stm32 L0 избавиться ерунды помог system_clock_config, который просто взял из примера.
P.S. МК stm32 f401C
Код
#include "stm32f4xx_hal.h"
void INIT_GPIO(void);
void INIT_UART(void);
void SEND_DATA_UART(uint8_t data);
GPIO_InitTypeDef GPIO;
UART_HandleTypeDef UART;
int main()
{
HAL_Init();
INIT_GPIO();
INIT_UART();
while(1)
{
// Проверка UART
SEND_DATA_UART('H');
}
}
void INIT_GPIO()
{
__GPIOB_CLK_ENABLE();
//UART
GPIO.Pin = (GPIO_PIN_6) | (GPIO_PIN_7);
GPIO.Mode = GPIO_MODE_AF_PP;
GPIO.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOB, &GPIO);
}
void INIT_UART()
{
__USART1_CLK_ENABLE();
UART.Instance = USART1;
UART.Init.Mode = UART_MODE_TX_RX;
UART.Init.BaudRate = 9600;
UART.Init.WordLength = UART_WORDLENGTH_8B;
UART.Init.Parity = UART_PARITY_NONE;
UART.Init.StopBits = USART_STOPBITS_1;
HAL_UART_Init(&UART);
}
//Функция отправляющая байт в UART
void SEND_DATA_UART(uint8_t data)
{
//Если TC=1, то передача завершена и можно опять что-то записывать в регистр данных USART_DR
while(!(USART1->SR & USART_SR_TC));
//Отсылаем байт через UART
USART1->DR = data;
}
Изначально инициализировал ножки так:
Код
void INIT_GPIO()
{
__GPIOA_CLK_ENABLE();
//UART
GPIO.Pin = (GPIO_PIN_9) | (GPIO_PIN_10);
GPIO.Mode = GPIO_MODE_AF_PP;
GPIO.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO);
}
Но там на осциллографе увидел, что фронты имеют вид, как-будто бы к этим пинам подключили конденсатор. Залез в схематику, действительно так и есть.
Спрашивается зачем там емкость? Что разработчики туда закладывали?
P.S. Советы типа поменяйте baudrate не катят. Т.к. уже перепробовал всевозможные(адекватные) настройки (не только baudrate).