/*
ypedef struct {
USART_TypeDef *Instance; // Базовый адрес регистров UART
UART_InitTypeDef Init; // Параметры UART-связи
UART_AdvFeatureInitTypeDef AdvancedInit; // Параметры инициализации
продвинутых функций UART
uint8_t *pTxBuffPtr; // Указатель на буфер Tx-передачи UART
uint16_t TxXferSize; // Размер Tx-передачи UART
uint16_t TxXferCount; // Счетчик Tx-передачи UART
uint8_t *pRxBuffPtr; // Указатель на буфер Rx-передачи UART
uint16_t RxXferSize; // Размер Rx-передачи UART
uint16_t RxXferCount; // Счетчик Rx-передачи UART
DMA_HandleTypeDef *hdmatx; // Параметры дескриптора DMA для Tx UART
DMA_HandleTypeDef *hdmarx; // Параметры дескриптора DMA для Rx UART
HAL_LockTypeDef Lock; // Блокировка объекта UART
__IO HAL_UART_StateTypeDef State; // Состояние работы UART
__IO HAL_UART_ErrorTypeDef ErrorCode; // Код ошибки UART
} UART_HandleTypeDef;
//=======================================================================
ypedef struct {
uint32_t BaudRate;
uint32_t WordLength;
uint32_t StopBits;
uint32_t Parity;
uint32_t Mode;
uint32_t HwFlowCtl;
uint32_t OverSampling;
} UART_InitTypeDef;
*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stm32c0xx_hal.h>
//#define WELCOME_MESSAGE "Hello!"
uint8_t tx_buff[] = "Hello!";
UART_HandleTypeDef huart2;
void Init_GPIO(void)
{
GPIO_InitTypeDef GPIO_Config;
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_Config.Pin = GPIO_PIN_3;
GPIO_Config.Mode = GPIO_MODE_INPUT;
GPIO_Config.Pull = GPIO_PULLUP ;
GPIO_Config.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_Config);
}
static void MX_USART2_UART_Init(void)
{
__HAL_RCC_USART2_CLK_ENABLE();
//=====================Конфигурация портов USART=======================
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF1_USART2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
//=====================================================================
huart2.Instance = USART2;
huart2.Init.BaudRate = 38400;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart2);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
Init_GPIO();
MX_USART2_UART_Init();
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3) == 1)
{
HAL_UART_Transmit(&huart2, tx_buff, sizeof(tx_buff) / sizeof(tx_buff[0]), HAL_MAX_DELAY);
HAL_Delay(3000);
}
while(1)
{
}
return 0;
}