留下代码,日后复习
.c文件
#include "my_uart.h"
void my_uart_init()
{
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组
//①
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能 串口 RCC_APB2!
/*-------------------------------------------------------------------*/
//②
GPIO_InitTypeDef GPIO_InitStructure;
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE); //使能 PORTA,PORTE 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 ;//
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推完
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA管脚9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA管脚10
/*---------------------------------------------------------*/
//③
USART_InitTypeDef Usart_Initstru ;// 串口初始化
Usart_Initstru.USART_BaudRate=115200; // 波特率
Usart_Initstru.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
Usart_Initstru.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; // 收发 都使能
Usart_Initstru.USART_Parity=USART_Parity_No; // 奇偶校验
Usart_Initstru.USART_StopBits=USART_StopBits_1; // 停止位
Usart_Initstru.USART_WordLength=USART_WordLength_8b;// 8位字长
//USART_DeInit( USART1 ); //复位
USART_Init( USART1, &Usart_Initstru); //初始化 串口1,
USART_Cmd(USART1, ENABLE); //使能函数串口 初始化串口完成
/*-------------------------------------------------------------------*/
//④ /*中断模式*/ //接收区非空 进入中断
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//使能 串口中断服务函数 有多个模式
//如果需要开启中断 设置中断 优先级
NVIC_InitTypeDef NVIC_Init_Stru; //串口中断 初始化结构体
NVIC_Init_Stru.NVIC_IRQChannel= USART1_IRQn ; //通道
NVIC_Init_Stru.NVIC_IRQChannelCmd=ENABLE; //是否使能 中断通道
NVIC_Init_Stru.NVIC_IRQChannelPreemptionPriority=1; //抢占优先级
NVIC_Init_Stru.NVIC_IRQChannelSubPriority=1; //响应优先级
NVIC_Init( &NVIC_Init_Stru); //不要定义 指针类型!!!
}
void USART1_IRQHandler(void) //中断服务函数
{
u8 res;
if(USART_GetITStatus( USART1, USART_IT_RXNE)==1) //判断 是不是想要的 中断类型发生
{
res =USART_ReceiveData(USART1); //有返回值 接的接受
USART_SendData(USART1, res);
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除RXNE标志位
}
}
.h文件
#ifndef _my_uart_H_
#define _my_uart_H_
#include "stm32f10x.h"
#include "stm32f10x_conf.h"
//#include "startup_stm32f10x_hd.s"
void my_uart_init();
#endif
这东西就当云端储存了,记录每次学到的知识点,hiahia
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)