OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6163|回复: 3

请教一下串口问题stm32f103,调试的时候串口只能进入发送中断,进入不了接收中断是怎么回事?

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-11-28
在线时间
0 小时
发表于 2014-9-16 09:29:16 | 显示全部楼层 |阅读模式
5金钱

我用的stm32f103,调试的时候串口只能进入发送中断,进入不了接收中断是怎么回事?谢谢,代码在下面

最佳答案

查看完整内容[请看2#楼]

楼主 可以参考下我们的串口实验。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-16 09:29:17 | 显示全部楼层
楼主 可以参考下我们的串口实验。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2014-8-20
在线时间
0 小时
发表于 2014-9-16 09:33:00 | 显示全部楼层
无图无真相,你好歹也出点代码。。。
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-11-28
在线时间
0 小时
 楼主| 发表于 2014-9-16 10:01:43 | 显示全部楼层
回复【2楼】fly0000:
---------------------------------
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseInitStructure;
/********************USART_Buffer*********************************************************************************/
NVIC_InitTypeDef         NVIC_InitStructure       ; // ?????ò?????????á??
NVIC_InitStructure.NVIC_IRQChannel                   = USART2_IRQn       ; // ????USART2????
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3                 ;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 1                 ;
  NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE            ;
  NVIC_Init(&NVIC_InitStructure)                                           ;
/*****************************************************************************************************************/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

/****************GPIO_Pin_485_DE**********************************************************************************/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;   /****GPIO_Mode_IN; GPIO_Mode_OUT; GPIO_Mode_AF; GPIO_Mode_AN****/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; /****GPIO_Pin_Select****/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/****GPIO_Speed_2MHz VL; GPIO_Speed_25MHz LP****/ 
                                               /****GPIO_Speed_50MHz MS; GPIO_Speed_100MHz HS****/
GPIO_Init(USART2_PORT,&GPIO_InitStructure);
/*****************************************************************************************************************/
USART2_DE_RX;
/******************GPIO_Pin_485_TX********************************************************************************/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;   /****GPIO_Mode_IN; GPIO_Mode_OUT; GPIO_Mode_AF; GPIO_Mode_AN****/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3; /****GPIO_Pin_Select****/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/****GPIO_Speed_2MKHz VL; GPIO_Speed_25MHz LP****/ 
                                               /****GPIO_Speed_50MHz MS; GPIO_Speed_100MHz HS****/
GPIO_Init(GPIOA,&GPIO_InitStructure);
// GPIO_PinAFConfig(USART2_PORT,USART2_TX_AF_Pin,GPIO_AF_USART2);  /*****Connect The in To The USART2******/

/******************GPIO_Pin_485_RX********************************************************************************/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;   /****GPIO_Mode_IN; GPIO_Mode_OUT; GPIO_Mode_AF; GPIO_Mode_AN****/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;  /****GPIO_Pin_Select****/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/****GPIO_Speed_2MHz VL; GPIO_Speed_25MHz LP****/ 
                                               /****GPIO_Speed_50MHz MS; GPIO_Speed_100MHz HS****/
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_PinLockConfig(GPIOA,GPIO_Pin_0| \
 GPIO_Pin_2| \
 GPIO_Pin_3); /***********Lock The 485Pin Configuration*****************/
/*****************************************************************************************************************/
/******************GPIO_485_USART_Config*************************************************************************/
USART_InitStructure.USART_BaudRate=Modbus_RTU_USART_Parameter_USART2.Baud_Rate;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_Init(USART2, &USART_InitStructure);
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//?ò???????????÷·?????????
USART_Cmd(USART2, ENABLE);


void USART2_IRQHandler(void)  
{
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
if(USART_GetITStatus(USART2,USART_IT_TXE)==SET)//????·????????÷??????
{
if(USART2_TX_Index<USART2_TX_Data_Length)//????????·????ê?????ò·?????????
{
//MB_RTU_TX2_LED_ENABLE();
GPIO_ResetBits(GPIOC,GPIO_Pin_3);
USART2->DR=USART2_TX_Buffer[USART2_TX_Index];//?ù·????????÷????????
USART2_TX_Index+=1;
}
else  //????·????ê????
{
USART_ITConfig(USART2,USART_IT_TXE,DISABLE);//??±?·????????÷????????
USART_ITConfig(USART2,USART_IT_TC,ENABLE);//?ò??·????ê????????
USART2_TX_Index=0;
}
}
else if(USART_GetITStatus(USART2,USART_IT_TC)==SET)//????·????ê????????
{
//MB_RTU_TX2_LED_DISABLE();
GPIO_SetBits(GPIOC,GPIO_Pin_3);
USART_ITConfig(USART2,USART_IT_TC,DISABLE);//??±?·????ê????????
xSemaphoreGiveFromISR( xSem_USART2_TX_OK, &xHigherPriorityTaskWoken );
if( xHigherPriorityTaskWoken != pdFALSE )
portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
}
else if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)//?????????????÷·?????????
{
//if(USART2->SR&0X03) //?ì?é???é?í?ó±ê???????í?ó±ê????
//USART2_Parity_Error_Flag_Index=1;
USART2_RX_Buffer[USART2_RX_Index]=USART2->DR ;//??????????
USART2_RX_Index+=1;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 20:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表