OpenEdv-开源电子网

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

求各位大神帮忙看看串口3的的问题

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
33
金钱
33
注册时间
2015-9-5
在线时间
1 小时
发表于 2015-9-5 21:06:16 | 显示全部楼层 |阅读模式
5金钱
能正常发送数据,接收中断只能进去一次。芯片是STM32F103VCT6。

void USART3_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure; 
/* Configure the NVIC Preemption Priority Bits */  
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

/* Enable the USARTy Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;  
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

void USART3_Configuration(u32 BaudRate)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure; 
/* USART3 GPIO config */
/* Configure USART3 Tx (PB.10) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);    
/* Configure USART3 Rx (PB.11) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* USART1 mode config */
USART_DeInit(USART3);
USART_InitStructure.USART_BaudRate = BaudRate;                 //波特率
USART_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(USART3, &USART_InitStructure);                       //初始化
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); //串口接收中断使能
USART_Cmd(USART3, ENABLE);                                      //启动串口
USART3_NVIC_Configuration();
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
}
void RCC_Configuration(void)
{
    /*使用外部晶振*/
RCC_DeInit();       //初始化为缺省值
RCC_HSEConfig(RCC_HSE_ON); //打开外部高速时钟
while(ERROR == RCC_WaitForHSEStartUp());//等待外部高速时钟就绪
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能预取指缓存
FLASH_SetLatency(FLASH_Latency_2); //2延时周期

RCC_HCLKConfig(RCC_SYSCLK_Div1);  //HCLK = SYSCLK
RCC_PCLK2Config(RCC_HCLK_Div1);  //PCLK2 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div2);  //PCLK1 = HCLK / 2
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //PLLCLK = 8MHZ * 9
RCC_PLLCmd(ENABLE);//打开PLL

while(RESET == RCC_GetFlagStatus(RCC_FLAG_PLLRDY)); //等待PLL锁定
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //设置PLL作为系统时钟
while(RCC_GetSYSCLKSource() != 0x08); //等待PLL作为系统时钟设置成功

/*打开相应外设的时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO | 
  RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | 
  RCC_APB2Periph_GPIOE, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3 | RCC_APB1Periph_PWR, ENABLE);
}
int main(void)
{
RCC_Configuration();
delay_init(72);
GPIO_Configuration();
USART3_Configuration(115200);
while (1);
}
/*******串口3中断服务函数******/
u8 USART3_Rx_Buf[128] = {0};
u8 USART3_Rx_Count = 0;
u8 USART3_Rx_Sat = 0;
void USART3_IRQHandler(void)
{
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
   
dd(1);
USART3_Rx_Buf[++USART3_Rx_Count] = USART_ReceiveData(USART3);
if (128 == USART3_Rx_Count)
USART3_Rx_Count = 0;

if (USART3_Rx_Count >= 8)
{
USART3_Rx_Sat = 1;
USART3_Rx_Count = 0;
}

USART_ClearITPendingBit(USART3, USART_IT_RXNE);
}  
}

最佳答案

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

论坛有其他网友发过代码或者提过问,直接论坛搜索,自行参考找答案。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-5 21:06:17 | 显示全部楼层
论坛有其他网友发过代码或者提过问,直接论坛搜索,自行参考找答案。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
33
金钱
33
注册时间
2015-9-5
在线时间
1 小时
 楼主| 发表于 2015-9-5 22:07:57 | 显示全部楼层
进入接收中断后无法跳出中断,但我已经清除了中断标志位
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
33
金钱
33
注册时间
2015-9-5
在线时间
1 小时
 楼主| 发表于 2015-9-8 16:46:14 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
解决了!谢谢原子哥
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 11:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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