Страницы

Ярлыки

ДШИ-200 (1) КСВУ-6 (1) ЛЧМ (1) МДР-23 (1) микроконтроллер (1) перенаправление (1) С (1) структуры (1) учебный курс (1) AC/DC (1) ADC (1) ADS1248 (1) Altium (1) Altuim (1) Amolifer (1) ARM (1) assembler (2) Asynchronous (1) at command (3) at#eaddr (1) at#epassw (1) at#esmtp (1) at#euser (1) at#gprs (1) at#selint=2 (1) at#sgact (1) at#tcpatcmdseq (1) ATX (1) AVR (2) bit (1) boost (1) boot (2) bootlloader (1) C (6) C# (7) C++ (1) CMSIS (1) command (1) CP2101 (1) CSD (1) Danfoss (6) DBGMCU (1) debug (1) debug.ini (1) delegate (1) Discovery (1) DMA (1) DRV8805 (1) DWT (1) e-mail (1) email (1) Exel (1) exFAT (1) FC-051 (1) gl868-dual (2) gl868-dual cmux (1) GPIO (2) GSM (1) I2C (1) IAR (1) ID (1) Invoke (1) Keil (3) LabVIEW (1) Linux (1) LMP7721 (1) LoRa (3) mdmread (1) memory (1) MODBUS (1) Operation Amplifer (1) pack (1) printf (2) printf() (1) RCC (1) retargetting (1) RFM95/96/87/98(W) (1) RS232 (4) RS485 (1) RSAPI.DLL (1) RSS (1) RTC (2) send (2) SerialPort (1) Silabs (1) spl (1) standard peripherals library (1) startup (1) stepper (2) STlink (1) STlink/V2 (2) STM32 (10) stm32 stm32f10x (1) STM32DBG.IN (1) STM32F (19) STM32F103 (4) struct (1) Structure (1) system (1) SystemInit (1) Task (1) telit (5) thread (4) TIM (1) Type Cast (1) UART (1) uni-trend (1) USART (6) USB (1) UT61B (1) viewer (1)

понедельник, 25 ноября 2013 г.

USART send stm32

Подключаем такие модули библиотеки:

#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_usart.h"

Объявим две структуры для хранения настроек периферии.
 
//Структуры для инициализации GPIOA и USART1
GPIO_InitTypeDef    GPIO_InitStruct;
USART_InitTypeDef    USART_InitStruct;

Прототипы функций:
 
void Usart1_Init(void); //Объявление функции инициализации периферии
void Usart1_Send_symbol(uint8_t); //Объявление функции передачи символа
void Usart1_Send_String(char* str); //Объявление функции передачи строки

Функция инициализации USART1:
 
void Usart1_Init() {
//Включаем тактирование GPIOA, USART1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
//Инициализация вывода PA9 - USART1_Tx
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //Настройки вывода PA9
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // скорость порта
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; // режим альтернативной функции
GPIO_Init(GPIOA, &GPIO_InitStruct); // заданные настройки сохраняем в регистрах GPIOА
//Инициализация вывода PA10 - USART1_Rx
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; // настройки вывода PA10
GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF; // режим альтернативной функции
GPIO_Init(GPIOA, &GPIO_InitStruct); // заданные настройки сохраняем в регистрах GPIOА
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
//Инициализация USART1
USART_InitStruct.USART_BaudRate = 1200; // скорость обмена 1200 бод
USART_InitStruct.USART_WordLength = USART_WordLength_8b; // длина слова 8 бит
USART_InitStruct.USART_StopBits = USART_StopBits_1; // 1 стоп-бит
USART_InitStruct.USART_Parity = USART_Parity_No ; // без проверки четности
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // без аппаратного контроля
USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // включен передатчик и приемник USART1
USART_Init(USART1, &USART_InitStruct); // заданные настройки сохраняем в регистрах USART1
USART_Cmd(USART1, ENABLE); // включаем USART1
}


Функция передачи байта через USART:
 
void Usart1_Send_symbol(uint8_t data) {
while(!(USART1->SR & USART_SR_TC)); // проверяем установку флага TC - завершения предыдущей передачи
USART1->DR = data; // записываем значение в регистр данных - передаем символ
}

Фунция передачи строки через USART:
 
void Usart1_Send_String(char* str) {
uint8_t i=0;
while(str[i]) {
Usart1_Send_symbol(str[i]);
i++;
}
// передаем сивол конца строки
Usart1_Send_symbol('\n');
Usart1_Send_symbol('\r');
}

Для использования необходимо провести инициализацию соответствующей функцией и отправить нужные байты.
 
int main() {
Usart1_Init(); //Вызов функции инициализации периферии
//Передаем строку, сообщающую о готовности микроконтроллера к обмену данными
Usart1_Send_String("I'm ready!");
while(1) {
}

Комментариев нет:

Отправить комментарий

ваше мнение...