野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11794|回复: 5

STM32F103C8T6 串口1 TX PA9没反映

[复制链接]
发表于 2018-4-5 16:57:17 | 显示全部楼层 |阅读模式
  1. void Usart_InitConfig()
  2. {
  3.           GPIO_InitTypeDef GPIO_Initstruct;
  4.           USART_InitTypeDef USART_InitStructure;
  5.        
  6.        
  7.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
  8.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  9.        
  10.        
  11.            //GPIOA  txd
  12.             GPIO_Initstruct.GPIO_Mode = GPIO_Mode_AF_PP;
  13.             GPIO_Initstruct.GPIO_Pin = GPIO_Pin_9;
  14.             GPIO_Initstruct.GPIO_Speed = GPIO_Speed_50MHz;
  15.             GPIO_Init(GPIOA,&GPIO_Initstruct);
  16.        
  17.           //GPIOA   rxd
  18.             GPIO_Initstruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  19.                         GPIO_Initstruct.GPIO_Pin = GPIO_Pin_10;
  20.                         GPIO_Initstruct.GPIO_Speed = GPIO_Speed_50MHz;
  21.                         GPIO_Init(GPIOA,&GPIO_Initstruct);

  22.          //USART
  23.                         USART_InitStructure.USART_BaudRate = 115200;
  24.                         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  25.                         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  26.                         USART_InitStructure.USART_Parity = USART_Parity_No ;
  27.                         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  28.                         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  29.                         USART_Init(USART1,&USART_InitStructure);
  30.             USART_Cmd(USART1,ENABLE);
  31.                         USART_ClearFlag(USART1, USART_FLAG_TC);
  32. }



  33. //发送数据
  34. void Usart_SendByte(USART_TypeDef* pUSARTx,uint16_t ch)
  35. {
  36.       
  37.     USART_SendData(pUSARTx,ch);
  38.         while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==SET);
  39. }
  40. //发送指定位数据
  41. void Usart_SendStr_length( USART_TypeDef * pUSARTx, uint8_t *str,uint32_t strlen )
  42. {
  43.         unsigned int k=0;
  44.     do
  45.     {
  46.         Usart_SendByte( pUSARTx, *(str + k) );
  47.         k++;
  48.     } while(k < strlen);
  49. }
  50. //发送字符串
  51. void Usart_SendString( USART_TypeDef * pUSARTx, uint8_t *str)
  52. {
  53.         unsigned int k=0;
  54.     do
  55.     {
  56.         Usart_SendByte( pUSARTx, *(str + k) );
  57.         k++;
  58.     } while(*(str + k)!='\0');
  59. }

复制代码




初始化代码如上,在main里面                        while(1)

Usart_SendString(USART1, "111111111111");


PA9没反映(逻辑分析仪打不出逻辑高低电平,接到串口上也没有数据输出)

但是我用GPIO单独拉高或者拉低PA9有反应。(能用逻辑分析仪看到)

然后一模一样的配置我下到MINI上,再用逻辑分析仪打PA9就能用看到高低电平的切换,并且接到串口上也有数据输出。

有没有大佬知道怎么回事啊
回复

使用道具 举报

发表于 2018-4-6 09:26:25 | 显示全部楼层
Pin_9  GPIO_Mode_AF_PP 改为  GPIO_Mode_Out_PP
回复 支持 反对

使用道具 举报

发表于 2018-4-6 09:29:19 | 显示全部楼层
对不起,搞错了,楼上撤回。
回复 支持 反对

使用道具 举报

发表于 2018-4-6 12:02:52 | 显示全部楼层
开复用时钟干嘛?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-7 15:19:51 | 显示全部楼层

不开复用怎么用usart啊,火哥给的例程里面也是开了复用时钟的
回复 支持 反对

使用道具 举报

发表于 2018-4-7 16:02:35 | 显示全部楼层
本帖最后由 非谢家之宝树 于 2018-4-7 16:05 编辑
Xysin 发表于 2018-4-7 15:19
不开复用怎么用usart啊,火哥给的例程里面也是开了复用时钟的

我103的一直没开过复用时钟。。。。。
  1. #define DEBUG_USART1                                                         USART1
  2. #define DEBUG_USART_CLK                                                RCC_APB2Periph_USART1
  3. #define DEBUG_USART_APBxClkCmd                 RCC_APB2PeriphClockCmd
  4. #define DEBUG_USART_BAUDRATE                         115200

  5. #define USART1_GPIO_CLK                                                RCC_APB2Periph_GPIOA
  6. #define USART1_GPIO_APBxClkCmd                RCC_APB2PeriphClockCmd
  7. //初始化串口GPIO
  8.         GPIO_InitTypeDef GPIO_InitStruct;
  9.         USART_InitTypeDef USART_InitStruct;
  10.         //打开外设时钟
  11.         RCC_APB2PeriphClockCmd(USART1_GPIO_CLK, ENABLE);
  12.         //配置初始化结构体
  13.        
  14.         GPIO_InitStruct.GPIO_Pin = USART1_GPIO_TX_PIN;
  15.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
  16.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  17.         //调用外设初始化函数将设置写入寄存器
  18.         GPIO_Init(USART1_GPIO_TX_PORT, &GPIO_InitStruct);
  19.        
  20.         GPIO_InitStruct.GPIO_Pin = USART1_GPIO_RX_PIN;
  21.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  22.         GPIO_Init(USART1_GPIO_RX_PORT, &GPIO_InitStruct);
  23.        
  24.         //初始化串口
  25.         //打开USART1串口时钟
  26.         DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);
复制代码

回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 20:02 , Processed in 0.043469 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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