Вс окт 27, 2013 22:38:50
void Init_usart(void)
{
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //Включаем тактирование GPIOA
RCC->APB2ENR |= RCC_APB2ENR_USART1EN; //Включаем тактирование USART1
GPIOA->MODER |= GPIO_MODER_MODER9_1; // PA9 (TX) - Alternate function mode
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; // PA9 (TX) - High speed
USART1->CR1 |= USART_CR1_UE; //Включаем USART1
USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
USART1->BRR = 0x681; //Скорость обмена 9600 бод
USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1
USART1->CR1 |= USART_CR1_RE; //Включаем приемник USART1
}
void Transmit(uint16_t Data)
{
while(!(USART1->ISR & USART_ISR_TC));
USART1->TDR = (Data & (uint16_t)0x01FF);
}
Вс окт 27, 2013 23:08:55
/* Clear USARTSW[1:0] bit */
RCC->CFGR3 &= ~RCC_CFGR3_USART1SW;
/* Set USARTSW bits according to RCC_USARTCLK value */
RCC->CFGR3 |= RCC_USARTCLK;
Вс окт 27, 2013 23:22:31
Вс окт 27, 2013 23:48:10
Пн окт 28, 2013 01:21:15
zöner писал(а):это RCC_USART1CLK_SYSCLK
Пн окт 28, 2013 01:31:18
#define RCC_USART1CLK_SYSCLK RCC_CFGR3_USART1SW_0
Пн окт 28, 2013 09:53:20
С инитом не разбирался, там все просто.wss60 писал(а):Не получается запустить USART на данном мк:
Пробовал:
- Код:
void Transmit(uint16_t Data)
{
while(!(USART1->ISR & USART_ISR_TC));
USART1->TDR = (Data & (uint16_t)0x01FF);
}
На выходе тишина…
Не могу понять, что не так?
void USART_Tx( u8 data ){
USART1->DR = data;
while(!(USART1->SR & USART_SR_TC)) {};
USART1->SR &= ~USART_SR_TC;
}
Пн окт 28, 2013 10:25:01
wss60 писал(а):Не получается запустить USART на данном мк:
На выходе тишина…
Не могу понять, что не так?
- Код:
USART1->BRR = 0x681; //Скорость обмена 9600 бод
#define APBCLK 48000000UL
#define BAUDRATE 115200UL
USART2->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE;
Пн окт 28, 2013 15:26:53
ut1wpr писал(а):Что ???!!!! "Магические знаки" ????
void Init_usart(void)
{
GPIOA_CLK_ENABLE; //Включаем тактирование GPIOA
USART1_CLK_ENABLE; //Включаем тактирование USART1
GPIOA->MODER |= GPIO_MODER_MODER9_1; // PA9 (TX) - Alternate function mode
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; // PA9 (TX) - High speed
GPIOA->AFRH |= 0x0110; // <----- !!!
/* тактирование usart(SYSCLK) */
RCC->CFGR3 &= ~RCC_CFGR3_USART1SW;
RCC->CFGR3 |= RCC_CFGR3_USART1SW_0;
USART1->CR1 |= USART_CR1_UE; //Включаем USART1
USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
USART1->BRR = 0x681; //Скорость обмена 9600
USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1
}
Пн окт 28, 2013 15:33:42
wss60 писал(а):Теперь другая проблема: компилятор “ругается” на регистр AFRH!?
- Код:
void Init_usart(void)
{
GPIOA->AFRH |= 0x0110; // <----- !!!
GPIOA->AFR[1]= (1<<(2*4))|(1<<(1*4));
Пн окт 28, 2013 16:51:31
#define APBCLK 8000000UL
#define BAUDRATE 115200UL
void Init_usart(void)
{
GPIOA_CLK_ENABLE; //Включаем тактирование GPIOA
USART1_CLK_ENABLE; //Включаем тактирование USART1
GPIOA->MODER |= GPIO_MODER_MODER9_1; // PA9 (TX) - Alternate function mode
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; // PA9 (TX) - High speed
GPIOA->AFR[1] |= 0x0110; //
RCC->CFGR3 &= ~RCC_CFGR3_USART1SW;
RCC->CFGR3 |= RCC_CFGR3_USART1SW_0; //System clock (SYSCLK) selected as USART1 clock
USART1->CR1 |= USART_CR1_UE; //Включаем USART1
USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
USART1->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE; //скорость usart
USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1
USART1->CR1 |= USART_CR1_RE; //Включаем приемник USART1
}
void Transmit(uint16_t Data)
{
while(!(USART1->ISR & USART_ISR_TC));
USART1->TDR = (Data & (uint16_t)0x01FF);
}
Пн окт 28, 2013 17:25:32
wss60 писал(а):
- Код:
USART1->CR1 |= USART_CR1_UE; //Включаем USART1
Пн дек 02, 2013 09:40:53
#include "stm32f0xx.h"
#define APBCLK 8000000UL
#define BAUDRATE 115200UL
void Init_usart(void)
{
// Включить тактирование порта А
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
// Включаем тактирование USART1
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
GPIOA->MODER |= GPIO_MODER_MODER9_1; // PA9 (TX) - Alternate function mode
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; // PA9 (TX) - High speed
GPIOA->AFR[1] |= 0x0110; // ????????????????????
RCC->CFGR3 &= ~RCC_CFGR3_USART1SW;
RCC->CFGR3 |= RCC_CFGR3_USART1SW_0; //System clock (SYSCLK) selected as USART1 clock
USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
USART1->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE; //скорость usart
USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1
USART1->CR1 |= USART_CR1_RE; //Включаем приемник USART1
USART1->CR1 |= USART_CR1_UE; //Включаем USART1
}
void Transmit(uint16_t Data)
{
while(!(USART1->ISR & USART_ISR_TC));
USART1->TDR = (Data & (uint16_t)0x01FF);
}
// Главный цикл
int main(void)
{
Init_usart();
while(1)
{
Transmit(0x45);
}
}
Пн дек 02, 2013 11:27:46
Пн дек 02, 2013 12:16:26
Пн дек 02, 2013 13:12:49
// Главный цикл
int main(void)
{
Init_usart();
Delay_mS(100);
while(1)
{
Transmit(0x45);
Delay_mS(100);
}
}
Пн дек 02, 2013 13:37:36
Пн дек 02, 2013 13:46:08
GPIOA->AFR[1]= (1<<(2*4))|(1<<(1*4));
Пн дек 02, 2013 14:13:43
Пн дек 02, 2013 15:06:46