搜索
bottom↓
回复: 6

stm32 usart1 remap 不能发送

[复制链接]

出0入0汤圆

发表于 2014-3-30 12:08:19 | 显示全部楼层 |阅读模式
我使用STM32F103RCT6,将串口1Remap到PB6 PB7 ,发现串口1 中断接收没有问题,但是调用发送函数不能发出数据

初始化代码如下:
  1. GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
  2.         /* Configure PB.6 (UART1_TXD) as AF OD  ---------------------------*/
  3.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  4.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  5.         GPIO_Init(GPIOB, &GPIO_InitStructure);       

  6.         /* Configure PB.7 (UART1_RXD) as AF  -------------------------*/
  7.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  8.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  9.         GPIO_Init(GPIOB  , &GPIO_InitStructure);
  10.          
  11.         USART_InitStruct.USART_BaudRate = 19200;
  12.         USART_InitStruct.USART_WordLength = USART_WordLength_8b;
  13.         USART_InitStruct.USART_StopBits = USART_StopBits_1;
  14.         USART_InitStruct.USART_Parity = USART_Parity_No;       
  15.         USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  16.         USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  17.         /* Configure UART1 */
  18.         USART_Init(USART1, &USART_InitStruct);

  19.         /* Enable USART1 Receive and Transmit interrupts */
  20.         USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

  21.         /* Enable the USART1 */
  22.         USART_Cmd(USART1, ENABLE);
复制代码


时钟设置如下:
  1.        
  2.         RCC_APB1PeriphClockCmd(
  3.                 RCC_APB1Periph_TIM2|
  4.                 RCC_APB1Periph_TIM3|
  5.                 RCC_APB1Periph_SPI2|
  6.                 RCC_APB1Periph_I2C1|
  7.                 RCC_APB1Periph_USART2|
  8.                 RCC_APB1Periph_USART3,
  9.                 ENABLE);
  10.        
  11.         RCC_APB2PeriphClockCmd(
  12.                 RCC_APB2Periph_GPIOA |
  13.                 RCC_APB2Periph_GPIOB |
  14.                 RCC_APB2Periph_GPIOC |
  15.                 RCC_APB2Periph_GPIOD |
  16.                 RCC_APB2Periph_AFIO |
  17.                 RCC_APB2Periph_ADC1 |
  18.                 RCC_APB2Periph_USART1,
  19.                 ENABLE);
复制代码


中断向量配置:
  1.        
  2.         //Enable USART1 Interrupt
  3.         NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  4.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  5.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  6.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  7.         NVIC_Init(&NVIC_InitStructure);
复制代码


发送函数:
  1. int Uart1PutByte(char byData)
  2. {
  3.         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  4.                 USART_SendData(USART1, byData);
  5. }
复制代码


中断接收:

  1. void USART1_IRQHandler()
  2. {
  3.         int State = USART1->SR;
  4.        
  5.         if((State & USART_IT_RXNE) ||
  6.                 (State & USART_IT_ORE))

  7.         {
  8.                 sData = USART1->DR;
  9.         }
  10. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2014-3-30 12:09:49 | 显示全部楼层
我找了好久都不能确定问题出在哪里,旁观者清,各位莫友帮我看下可能是什么问题

出0入0汤圆

 楼主| 发表于 2014-3-30 17:39:27 | 显示全部楼层
自己顶一顶,怎么没有人看帖子呢

出0入0汤圆

发表于 2014-3-30 20:43:22 | 显示全部楼层
youmu 发表于 2014-3-30 17:39
自己顶一顶,怎么没有人看帖子呢

你这个,,,,,看看我的代码吧,,时钟初始化部分,你还有两个时钟没有初始化   AFIO时钟和串口1重映射时钟  
对应我的代码:
改成串口1的就行了 串口3有部分重映射和完全重映射,串口1只有一种重映射

   RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//开启串口3时钟 串口3时钟挂在APB1下面了
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);
   GPIO_PinRemapConfig(GPIO_PartialRemap_USART3,ENABLE); //开启串口3部分重映射时钟

出0入0汤圆

 楼主| 发表于 2014-3-31 14:18:07 | 显示全部楼层
磊磊映画 发表于 2014-3-30 20:43
你这个,,,,,看看我的代码吧,,时钟初始化部分,你还有两个时钟没有初始化   AFIO时钟和串口1重映射 ...

你没有看仔细啊,我的问题解决了,IIC搞的鬼

出0入0汤圆

发表于 2014-3-31 20:30:49 | 显示全部楼层
youmu 发表于 2014-3-31 14:18
你没有看仔细啊,我的问题解决了,IIC搞的鬼

你帮我看看啊

出330入0汤圆

发表于 2017-6-23 23:36:00 | 显示全部楼层
youmu 发表于 2014-3-31 14:18
你没有看仔细啊,我的问题解决了,IIC搞的鬼

IIC搞的鬼

属于STM32重映射的BUG?
我最近为了布线方便,把USART1重映射到了PB6、PB7。
一般而言,我对于不常规的东西总是心有余悸,设计中尽量避免,担心中招。
重映射对于我而言就是个不常规的用法,所以来提前打个预防针。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-22 11:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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