搜索
bottom↓
回复: 5

请教STM32F107VCT6的串口3问题,谢谢

[复制链接]

出0入0汤圆

发表于 2017-7-25 17:01:23 | 显示全部楼层 |阅读模式
我要使用STM32F107VCT6的串口3,引脚是B10和B11。我按串口1设置的顺序(时钟,引脚,中断管理,中断处理)设置,可是串口3一点反应都没有,不知与串口1的设置有啥不同,谢谢!

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

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

出0入0汤圆

发表于 2017-7-25 17:27:11 | 显示全部楼层
应该是没有什么太大的区别,可能还是你哪里配置的问题

出0入0汤圆

 楼主| 发表于 2017-7-26 07:54:52 | 显示全部楼层
测试了还是不行,把源码贴上:
int main(void)
{
   
        
  /* System Clocks Configuration */
    SystemInit();
   /* Configure the GPIO ports */
   GPIO_Configuration();
   TIM2_Configuration();
  UTRA3_Configuration();
   /* NVIC configuration */
   NVIC_Configuration();
   Uart_InterruptsendY(USART3,ddd1,3);///wwwwwwwwwwwwwwwwwwwwwwwwwww
   while (1)
   {
   }
}

void GPIO_Configuration(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART3 | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

  /* Configure USARTx_Tx as alternate function push-pull */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//10
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* Configure USARTx_Rx as input floating */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//11
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void UTRA3_Configuration(void)
{
/* USARTy and USARTz configuration ------------------------------------------------------*/
   /* 9600  8  n  1
   */
   USART_InitStructure.USART_BaudRate = 9600;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_InitStructure.USART_StopBits = USART_StopBits_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;
   /* Configure USARTy */
   USART_Init(USART3, &USART_InitStructure);
   /* Configure USARTz */
  /* Enable USARTy Receive and Transmit interrupts */
   USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
// USART_ITConfig(USART1, USART_IT_TXE, ENABLE);//使能中断 这里先不使能  在后面中断发送之前发送
   USART_Cmd(USART3, ENABLE);   
}

void NVIC_Configuration(void)
{
   NVIC_InitTypeDef NVIC_InitStructure;

  /* Configure the NVIC Preemption Priority Bits */  
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
   
   /* Enable the USARTy Interrupt */
   NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);
   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);
}

void Uart_InterruptsendY(USART_TypeDef *USARTx,vu8* Uart0_sended,u8 NbOfBytes )
{   
       Uart_send_counter=NbOfBytes;
       Uart_send_pointer=Uart0_sended;
      USART_SendData(USARTx, *Uart_send_pointer++);
      USART_ITConfig(USARTx, USART_IT_TXE, ENABLE);
        //UART_ITConfig(UARTx,UART_IT_TxEmpty, ENABLE);
}

出0入0汤圆

发表于 2017-7-27 09:14:53 | 显示全部楼层
串口3的时钟好像只有一半的

出0入0汤圆

发表于 2017-7-27 09:40:08 | 显示全部楼层
试试把  NVIC_Configuration();
放到所有初始化完之后,while 上一行

出0入0汤圆

 楼主| 发表于 2017-8-8 15:20:48 | 显示全部楼层
硬件的问题,在此谢谢各位!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 23:45

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

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