реклама на сайте
подробности

 
 
 
Closed TopicStart new topic
> STM8L UART
-AZ-
сообщение Oct 24 2015, 14:54
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Уважаемые специалисты, кому то удалось от HSI завести UART выше 2400, все перепробовал, на 9600 уже ошибки проскакивают, может что то упускаю?

CLK_CKDIVR=0x00; //делитель частоты 1
CLK_ICKCR_bit. HSION = 1;
CLK_PCKENR1_bit.PCKEN15 = 1; //Включаем тактирование модуля USART1

PC_DDR &= ~(1 << 2);//PC2 RX USART1 receive (вход)
PC_DDR &= ~(1 << 3); //PC3 TX USART1 transmit (выход)

USART1_BRR2 = 0x03; //скорость 9600bps
USART1_BRR1 = 0x68;

USART1_CR2_bit.REN=1; //прием
USART1_CR2_bit.TEN=1; //передача

USART1_CR2_RIEN=1; //Прерывание по приему
__enable_interrupt (); // Разрешаем прерывания.

while(!(USART1_SR_bit.TXE)); //Ожидаем освобождения буферного регистра TDR
USART1_DR='F'; // Отправляем символ "F".

while (1){} //беск. цикл

}

#pragma vector=USART_R_OR_vector
__interrupt void USART1_RXE(void)
{
USART1_DR=USART1_DR; //Отправляем тоже, что и приняли (эхо)
}
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 24 2015, 19:02
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



У вас в комментарии написано, что TX выход, а в коде вы его настраиваете на вход.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Oct 25 2015, 15:48
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(AHTOXA @ Oct 24 2015, 22:02) *
У вас в комментарии написано, что TX выход, а в коде вы его настраиваете на вход.

Да эти строчки
PC_DDR &= ~(1 << 2);//PC2 RX USART1 receive (вход)
PC_DDR &= ~(1 << 3); //PC3 TX USART1 transmit (выход)
можно вообще прибить, они не нужны, это я просто забыл, проблема не в этом...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 25 2015, 16:34
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Надо настроить ногу TX на выход, вот так:
Код
PC_DDR |= (1 << 3);
PC_CR1 |= (1 << 3);  // push-pull


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01375 секунд с 7
ELECTRONIX ©2004-2016