mirror of
https://github.com/jie65535/stm32f10x-uC-OS-II.git
synced 2024-07-27 19:10:55 +08:00
76 lines
2.5 KiB
C
76 lines
2.5 KiB
C
#include <stdio.h>
|
||
#include "stm32f10x.h"
|
||
#include "SerialPort.h"
|
||
|
||
#ifdef __GNUC__
|
||
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
|
||
set to 'Yes') calls __io_putchar() */
|
||
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
|
||
#else
|
||
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
|
||
#endif /* __GNUC__ */
|
||
|
||
PUTCHAR_PROTOTYPE
|
||
{
|
||
USART_SendData(USART1, (uint8_t) ch);
|
||
|
||
/* 循环等待直到发送结束*/
|
||
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
|
||
|
||
return ch;
|
||
}
|
||
|
||
static void NVIC_Configuration(void)
|
||
{
|
||
NVIC_InitTypeDef NVIC_InitStructure;
|
||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
}
|
||
|
||
void SerialPortInit(int BaudRate)
|
||
{
|
||
GPIO_InitTypeDef GPIO_InitStructure;
|
||
USART_InitTypeDef USART_InitStructure;
|
||
|
||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
|
||
USART_DeInit(USART1); //复位串口1
|
||
//USART1_TX PA.9
|
||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
|
||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
|
||
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9
|
||
|
||
//USART1_RX PA.10
|
||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
|
||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
|
||
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA10
|
||
/* USARTx 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 = BaudRate;
|
||
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;
|
||
|
||
USART_Init(USART1, &USART_InitStructure);
|
||
|
||
NVIC_Configuration();
|
||
|
||
// 打开串口接收中断
|
||
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
|
||
|
||
USART_Cmd(USART1, ENABLE); //使能串口
|
||
}
|