/******************** USART使用********************
stm32库文件使用—USART1使用
芯片型号:STM32F103V
引脚: TXD1:PA9-US1-TX RXD1:PA10-US1-RX
编写日期:2012年3月24日
作者: ClimberWin
作用: 串口1输出数据,循环累加
波特率: 9600,n,8,1
*/
/* Includes ——————————————————————*/
#include “stm32f10x.h”
#include “misc.h”
#define uint unsigned int
#define uchar unsigned char
static volatile ErrorStatus HSEStartUpStatus = SUCCESS;
/* Private typedef ———————————————————–*/
typedef enum { FAILED = 0, PASSED = !FAILED} TestStatus;
/* Private define ————————————————————*/
#define TxBufferSize1 (countof(TxBuffer1) – 1)
#define RxBufferSize1 (countof(TxBuffer1) – 1)
/* Private macro ————————————————————-*/
#define countof(a) (sizeof(a) / sizeof(*(a)))
/* Private variables ———————————————————*/
USART_InitTypeDef USART_InitStructure;
uint8_t TxBuffer1[] = “USART1 Test OK”;
uint8_t RxBuffer1[RxBufferSize1],rec_f;
__IO uint8_t TxCounter1 = 0x00;
__IO uint8_t RxCounter1 = 0x00;
uint8_t NbrOfDataToTransfer1 = TxBufferSize1;
uint8_t NbrOfDataToRead1 = RxBufferSize1;
uchar data_temp;
/* Private function prototypes ———————————————–*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void delayms(unsigned int count);
GPIO_InitTypeDef GPIO_InitStructure;
/*************延时程序***************/
void delayms(unsigned int count)
{
unsigned int i,j;
for(i=0;i
}
//////////////主程序/////////////////
int main(void)
{
/* System Clocks Configuration */
RCC_Configuration();
/* NVIC configuration */
NVIC_Configuration();
/* Configure the GPIO ports */
GPIO_Configuration();
/* USART1 configuration ——————————————————*/
/* USART and USART2 configured as follow:
– BaudRate = 9600 baud
– Word Length = 8 Bits
– One Stop Bit
– No parity
– Hardware flow control disabled (RTS and CTS signals)
– Receive and transmit enabled
*/
/////////////////////////////////////////////////////
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
/* Configure USART1 */
USART_Init(USART1, &USART_InitStructure);
/* Enable USART1 Receive and Transmit interrupts */
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
/* Enable the USART1 */
USART_Cmd(USART1, ENABLE);
/////////////////////////////////////////////////////
while (1)
{
delayms(1000);
USART_SendData(USART1, data_temp);
data_temp++;
}
}
/////////////////子程序/////////////////////////
void RCC_Configuration(void)
{
/* Setup the microcontroller system. Initialize the Embedded Flash Interface,
initialize the PLL and update the SystemFrequency variable. */
SystemInit();
/* Enable USART1, GPIOA, GPIOx and AFIO clocks */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA
| RCC_APB2Periph_AFIO, ENABLE);
}
/**
* @brief Configures the different GPIO ports.
* @param None
* @retval : None
*/
void GPIO_Configuration(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //USART1 TX
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure); //A端口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //USART1 RX
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //复用开漏输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //A端口
}
/**
* @brief Configures the nested vectored interrupt controller.
* @param None
* @retval : None
*/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
}