串口中断接收函数Word下载.docx

上传人:b****2 文档编号:15245506 上传时间:2022-10-28 格式:DOCX 页数:7 大小:18.01KB
下载 相关 举报
串口中断接收函数Word下载.docx_第1页
第1页 / 共7页
串口中断接收函数Word下载.docx_第2页
第2页 / 共7页
串口中断接收函数Word下载.docx_第3页
第3页 / 共7页
串口中断接收函数Word下载.docx_第4页
第4页 / 共7页
串口中断接收函数Word下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

串口中断接收函数Word下载.docx

《串口中断接收函数Word下载.docx》由会员分享,可在线阅读,更多相关《串口中断接收函数Word下载.docx(7页珍藏版)》请在冰豆网上搜索。

串口中断接收函数Word下载.docx

//TMOD:

timer1,mode2,8-bitrelod

PCON|=0x80;

//SMOD=1;

TH1=0xF4;

//Bud:

4800fosc=11.0592MHz

IE|=0x90;

//EnbleSerilInterrupt

TR1=1;

//timer1run

//TI=1;

}

//向串口发送一个字符

voidsend_chr_com(unsignedchrch)

SBUF=ch;

while(TI==0);

TI=0;

//向串口发送一个字符串,strlen为该字符串长度

voidsend_string_com(unsignedchr*str,unsignedintstrlen)

unsignedintk=0;

do

send_chr_com(*(str+k));

k++;

}while(kstrlen);

//串口接收中断函数

voidseril()interrupt4using3

if(RI)

unsignedchrch;

RI=0;

ch=SBUF;

if(ch127)

count3=0;

inbuf1[count3]=ch;

checksum=ch-128;

else

count3++;

checksum^=ch;

if((count3==(INBUF_LEN-1))(!

checksum))

red_flg=1;

//假如串口接收的数据到达INBUF_LEN个,且校验没错,//就置位取数标志

min()

init_serilcomm();

//初始化串口

while

(1)

if(red_flg)//假如取数标志已置位,就将读到的数从串口发出

red_flg=0;

//取数标志清0

send_string_com(inbuf1,INBUF_LEN);

串口中断接收函数篇二:

STM32Urt串口中断响应、发送接收具体程序

程序实现功能:

可以直接接收USRT1的数据,并通过串口调试输出显示

#includestm32f10x_lib.h

voidNVIC_Configurtion(void);

voidRCC_Configurtion(void);

voidGPIO_Configurtion(void);

ErrorSttusHSEStrtUpSttus;

USRT_InitTypeDefUSRT_InitStructure;

USRT_ClockInitTypeDefUSRT_ClockInitStructure;

intmin()

#ifdefDEBUG

debug

#endif

RCC_Configurtion();

NVIC_Configurtion();

GPIO_Configurtion();

/*串口传输速率的大小必需与RCC所设定的时钟相对应起来*/

USRT_InitStructure.USRT_BudRte=9600;

//设置USRT的传输速率

/*设定数据的接收发送模式*/

USRT_InitStructure.USRT_WordLength=USRT_WordLength_8b;

//在一帧中传输或接

受8位数据位

USRT_InitStructure.USRT_StopBits=USRT_StopBits_1;

//定义在帧的结尾传输

一个停止位

USRT_InitStructure.USRT_Prity=USRT_Prity_No;

//奇偶失能

USRT_InitStructure.USRT_HrdwreFlowControl=USRT_HrdwreFlowControl_None;

//指定硬件流操纵模式RTS和CTS使能

USRT_InitStructure.USRT_Mode=USRT_Mode_Rx|USRT_Mode_Tx;

//指定使能

或失能发送和接受模式Tx发送使能和Rx接收使能

USRT_ClockInitStructure.USRT_Clock=USRT_Clock_Disble;

//提升USRT时

钟时使能还是失能,钟低电平活动

USRT_ClockInitStructure.USRT_CPOL=USRT_CPOL_Low;

//指定SLCK引脚

上时钟的极性

USRT_ClockInitStructure.USRT_CPH=USRT_CPH_2Edge;

//时钟第二个边缘

进行数据捕获

USRT_ClockInitStructure.USRT_LstBit=USRT_LstBit_Disble;

//在SCLK引脚上

输出最终发送的那个数据字的脉冲不从SCLK输出

USRT_ClockInit(USRT1,USRT_ClockInitStructure);

USRT_Init(USRT1,USRT_InitStructure);

/*输入输出的中断使能*/

//USRT_ITConfig(USRT1,USRT_IT_TXE,ENBLE);

USRT_ITConfig(USRT1,USRT_IT_RXNE,ENBLE);

USRT_Cmd(USRT1,ENBLE);

//启动串口使能USRT1外设

/*

USRT_SendDt(USRT1,0X26);

//发送数

while(USRT_GetFlgSttus(USRT1,USRT_FLG_TXE)==RESET){}//等待发送结束

*/

voidNVIC_Configurtion(void)

NVIC_InitTypeDefNVIC_InitStructure;

#ifdefVETB_TB_RM

NVYC_SetVectorTble(NVIC_VectTb_RM,0x0);

#else

NVIC_SetVectorTble(NVIC_VectTb_FLSH,0x0);

/*EnbletheUSRT1Interrupt*/

NVIC_InitStructure.NVIC_IRQChnnel=USRT1_IRQChnnel;

//通道设置为串口1中

断〔故后面应选择在“voidUSRT1_IRQHndler(void)〞开中断〕

NVIC_InitStructure.NVIC_IRQChnnelPreemptionPriority=0;

//中断占先等级0

NVIC_InitStructure.NVIC_IRQChnnelSubPriority=0;

//中断响应优先级0

NVIC_InitStructure.NVIC_IRQChnnelCmd=ENBLE;

//打开中断

NVIC_Init(NVIC_InitStructure);

voidRCC_Configurtion(void)

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

HSEStrtUpSttus=RCC_WitForHSEStrtUp();

if(HSEStrtUpSttus==SUCCESS)

FLSH_PrefetchBufferCmd(FLSH_PrefetchBuffer_Enble);

FLSH_SetLtency(FLSH_Ltency_2);

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK2Config(RCC_HCLK_Div1);

//串口波特率确实定

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

RCC_PLLCmd(ENBLE);

while(RCC_GetFlgSttus(RCC_FLG_PLLRDY==RESET)){}

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

while(RCC_GetSYSCLKSource()!

=0x08){}

RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIO|RCC_PB2Periph_GPIOE|RCC_PB

2Periph_USRT1,ENBLE);

//RCC中打开相应的串口

voidGPIO_Configurtion(void)

GPIO_InitTypeDefGPIO_InitStructure;

//GPIO_PinRempConfig(GPIO_Remp_USRT1,ENBLE);

//转变指定管脚脚的

映射Chngesthemppingofthespecifiedpin

/*ConfigureUSRT1RTS(P12)ndUSRT1Tx(P9)slterntefunctionpush-pull根

据资料可查得各管脚对应*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_F_PP;

//推挽输出

GPIO_Init(GPIO,GPIO_InitStructure);

/*ConfigureUSRT2CTS(P11)ndUSRT1Rx(P10)sinputfloting*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1