stm32串口中断发送数据,用中断怎么发送?能举个例子吗

STM32 串口中断接收数据
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
STM32 串口中断接收数据
#include &stm32f10x.h&
/***********************************************************************
***********************************************************************/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void delay(vu32 nCount)
&for(; nCount != 0; nCount--);
/***********************************************************************
************************************************************************/
&RCC_Configuration();//系统时钟配置
&NVIC_Configuration();//中断配置
&GPIO_Configuration();//GPIO口配置
&while(1)&&&&&&&&& //LED灯循环亮灭,串口循环发送ASCII&9&
& delay(5000000);
& GPIO_WriteBit(GPIOD,GPIO_Pin_2,Bit_RESET);&
& USART_SendData(USART1,'9');
&&&& while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
& delay(5000000);
& GPIO_WriteBit(GPIOD,GPIO_Pin_2,Bit_SET);&&&&&&&
/*****************************************************************************
*****************************************************************************/
//系统时钟配置
void RCC_Configuration(void)
&RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能串口1的GPIO时钟
&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD, ENABLE); //pa.9 pa.10 led0
/*****************************************************************************
*****************************************************************************/
//串口GPIO口配置
void GPIO_Configuration(void)
&GPIO_InitTypeDef GPIO_InitS
&USART_InitTypeDef USART_InitS
&/* LED0*/
&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
&GPIO_Init(GPIOD, &GPIO_InitStructure);
// GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);&
&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);
&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;&& //悬浮输入
&GPIO_Init(GPIOA, &GPIO_InitStructure);
&USART_InitStructure.USART_BaudRate = 9600;&&&&& //设定波特率
&USART_InitStructure.USART_WordLength = USART_WordLength_8b;& //传输数据位数
&USART_InitStructure.USART_StopBits = USART_StopBits_1;&& //停止位1
&USART_InitStructure.USART_Parity = USART_Parity_No;&&& //不用校验位
&USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N//不用流量控制
&USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //使用接收和发送功能
&USART_Init(USART1, &USART_InitStructure);&&&&&& //初始化串口1
&USART_Cmd(USART1,ENABLE);&&&&&&&&&&& //串口1使能
&USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);&&&& //使能串口1 读中断
/*****************************************************************************
*****************************************************************************/
//中断配置
void NVIC_Configuration(void)
&NVIC_InitTypeDef NVIC_InitS
&NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);&&&& //先占优先权2,从优先级2位
&NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;&&& //开串口中断1
&NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;&& //指定抢占优先级别1
&NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;&&& //指定相应优先级别0
&NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
&NVIC_Init(&NVIC_InitStructure);
/*****************************************************************************
*****************************************************************************/
void USART1_IRQHandler(void)&&&&&& //串口接收中断,并将接收到得数据发送出
&u16 temp_
&if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//判断 是否 接收中断&
& temp_trx = USART_ReceiveData(USART1);
& USART_SendData(USART1,temp_trx);
&&&& while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);//判断 发送标志
/*****************************************************************************
*****************************************************************************/
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights ReservedSTM32的串口配置(中断方式)
> STM32的串口配置(中断方式)
STM32的串口配置(中断方式)
修改NVIC_Configuration函数/************************************************************ Name : NVIC_Configuration* Deion : Configures NVIC and Vector Table base location.* Input : None* Output : None* Return : None***************************************************/void NVIC_Configuration(void){NVIC_InitTypeDef NVIC_InitS#ifdef VECT_TAB_RAM/* Set the Vector Table base location at 0x */NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);#else /* VECT_TAB_FLASH *//* Set the Vector Table base location at 0x */NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);#endif/* Configure the NVIC Preemption Priority Bits */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/* Enable the USART1 Interrupt */NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQCNVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(NVIC_InitStructure);}//串口中断void USART1_IRQHandler(void){//处理接收到的数据if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){/* Clear the USART1 Receive interrupt */USART_ClearITPendingBit(USART1, USART_IT_RXNE);}//发送中断if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET){USART_SendData(USART1, Send_Data[Send_Length++]);if (Send_Length==SEND_LENGTH){//发送字节结束USART_ClearITPendingBit(USART1,USART_IT_TXE);USART_ITConfig(USART1, USART_IT_TXE, DISABLE);USART_ITConfig(USART1, USART_IT_TC, ENABLE);}}//发送完成if (USART_GetITStatus(USART1, USART_IT_TC) != RESET){USART_ClearITPendingBit(USART1,USART_IT_TC);USART_ITConfig(USART1, USART_IT_TC, DISABLE);}}在需要发送的程序里Send_Data[SEND_LENGTH]和发送长度设置好,void Send_to_PC(void){//设置好Send_Data[SEND_LENGTH]数组//打开发送中断USART_ITConfig(USART1, USART_IT_TXE, ENABLE);}至此 串口就可以工作起来了!~
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一stm32串口发送数据,用中断怎么发送?能举个例子吗_百度知道stm32串口发送数据,用中断怎么发送?能举个例子吗-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
stm32串口发送数据,用中断怎么发送?能举个例子吗
来源:互联网 发表时间: 15:59:56 责任编辑:王亮字体:
为了帮助网友解决“stm32串口发送数据,用中断怎么发送?能举个例子吗”相关的问题,中国学网通过互联网对“stm32串口发送数据,用中断怎么发送?能举个例子吗”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:stm32串口发送数据,用中断怎么发送?能举个例子吗,具体解决方案如下:解决方案1:
通常情况下不使用发送中断你可以先用串口调试助手,对于多数据发送!(USART1-&gt,用j-link在中断函数里设置断点,向单片机发送一个数据,还有.;SR ,如果有j-link,而是接收中断.,可以等待发送完成标志 while(,进入中断后程序会停在usart中断那里
1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号

我要回帖

更多关于 stm32串口中断死机 的文章

 

随机推荐