您的位置 首页 软件

Stm32RS485串口通讯——中止接纳发送数据

main.c源码:/**说明:*PA9:USART1_TX;PA10:USART1_RX*/#includestm32f10x.h#includestm32f10x_rcc.h#includestm3

main.c源码:

/**阐明:*PA9:USART1_TX;PA10:USART1_RX*/#include "stm32f10x.h"#include "stm32f10x_rcc.h"#include "stm32f10x_gpio.h"#include "stm32f10x_usart.h"#include "stm32f10x_exti.h"#include "system_stm32f10x.h"#include "misc.h"void RCC_Configuration(void);void GPIO_Configuration(void); void USART_Configuration(void);void NVIC_Configuration(void);int main(){SystemInit();//72mRCC_Configuration();GPIO_Configuration(); USART_Configuration();NVIC_Configuration();GPIO_ResetBits(GPIOE,GPIO_Pin_5);                                              while(1);}void RCC_Configuration(void)  {   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE);  RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);} void GPIO_Configuration(void)  {  GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;             //CS_485GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽输出GPIO_Init(GPIOE, &GPIO_InitStructure);   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;             //管脚2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       //复用推挽输出GPIO_Init(GPIOA, &GPIO_InitStructure);                //TX初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;             //管脚3GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入        GPIO_Init(GPIOA, &GPIO_InitStructure);                //RX初始化} void USART_Configuration(void)//串口初始化函数{//串口参数初始化  USART_InitTypeDef USART_InitStructure;               //串口设置康复默许参数//初始化参数设置USART_InitStructure.USART_BaudRate = 9600;                  //波特率9600USART_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_Rx | USART_Mode_Tx;//翻开Rx接纳和Tx发送功用USART_Init(USART2,&USART_InitStructure);                   //初始化USART_ITConfig(USART2,USART_IT_TXE,ENABLE);                //答应串口1发送中止。USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);               //答应串口1接纳中止。USART_Cmd(USART2,ENABLE);                                  //发动串口USART_ClearFlag(USART2,USART_FLAG_TC);                     //发送完结标志位} void NVIC_Configuration(void)//装备中止优先级  {  NVIC_InitTypeDef NVIC_InitStructure;  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  NVIC_Init(&NVIC_InitStructure);  }  

stm32f10x_it.c的中止函数接纳发送数据:

#include "..\include\stm32f10x.h" #include "..\include\stm32f10x_it.h"#include "..\include\stm32f10x_gpio.h"#include "..\include\stm32f10x_usart.h"void delay_ms(u16 time)     {    u16 i=0;    while(time--)     {    i=12000;    while(i--);    }    } void USART2_IRQHandler(void){u8 RX_dat;if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)//USART_IT_RXNE:接纳中止{ RX_dat=USART_ReceiveData(USART2);    GPIO_SetBits(GPIOE,GPIO_Pin_5);delay_ms(1);USART_SendData(USART2,RX_dat);   while(USART_GetFlagStatus(USART2,USART_FLAG_TXE) == RESET){} //发送数据寄存器空标志位delay_ms(2);GPIO_ResetBits(GPIOE,GPIO_Pin_5);}   }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/265289.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部