#include "stm32f10x.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
//void NVIC_Configuration(void);
void USART_Config(void);
int main()
{
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
USART_Config();
while(1)
{
USART_SendData(USART1, 0x0d);
}
}
void RCC_Configuration()
{
SystemInit();
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO , ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 , ENABLE);
}
void GPIO_Configuration()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1控制--PB5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //USART1 TX
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);
}
/*void NVIC_Configuration()
{
// 结构声明
//NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
/* Configure one bit for preemption priority */
/* 优先级组 说明了抢占优先级所用的位数,和响应优先级所用的位数 在这里是0, 4
0组: 抢占优先级占0位, 响应优先级占4位
1组: 抢占优先级占1位, 响应优先级占3位
2组: 抢占优先级占2位, 响应优先级占2位
3组: 抢占优先级占3位, 响应优先级占1位
4组: 抢占优先级占4位, 响应优先级占0位
*/
/* NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //设置串口1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&NVIC_InitStructure);
} */
void USART_Config()
{
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = 9600; //速率115200bps
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位8位
USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位1位
USART_InitStructure.USART_Parity = USART_Parity_No; //无校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //无硬件流控
USART_InitStructure.USART_Mode = USART_Mode_Tx; //收发模式
USART_Init(USART1, &USART_InitStructure); //配置串口参数函数
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能接收中断
USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //使能发送缓冲空中断
USART_Cmd(USART1, ENABLE);
}
此帖出自
小平头技术问答
一周热门 更多>