OpenEdv-开源电子网

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

STM32F401 UART1

[复制链接]

17

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-7-4
在线时间
21 小时
发表于 2014-12-12 17:03:13 | 显示全部楼层 |阅读模式
5金钱
各位好!
       我在调试401 usart1时候,刚开始用PA9 PA1,怎么搞都没反应,就想串口没配置起来一样
后来,尝试复用的 PB6 PB7上,结果可以了,纳闷呀!
      我怀疑,是不是IO坏了,我单独控制PA9 PA10 拉高拉低,一点问题没有
      麻烦大家帮忙抽空看看,谢谢!
      附上代码:
#if 1 //PB6 PB7
#define USART1_ALT_GPIO_CLK  RCC_AHB1Periph_GPIOB
#define USART1_ALT_GPIO  GPIOB
#define USART1_TX_PIN  GPIO_Pin_6
#define USART1_RX_PIN  GPIO_Pin_7
#define TX_ALT_PIN  GPIO_PinSource6
#define RX_ALT_PIN  GPIO_PinSource7
#else  //PA9 PA10
#define USART1_ALT_GPIO_CLK  RCC_AHB1Periph_GPIOA
#define USART1_ALT_GPIO  GPIOA
#define USART1_TX_PIN  GPIO_Pin_9
#define USART1_RX_PIN  GPIO_Pin_10
#define TX_ALT_PIN  GPIO_PinSource9
#define RX_ALT_PIN  GPIO_PinSource10
#endif

#define TEST_PA9  Aout(9)
#define TEST_PA10 PAout(10)  

void Test_PA9PA10(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);


  TEST_PA9=0;
TEST_PA10=0;
TEST_PA9=1;
TEST_PA10=1;
TEST_PA9=0;
TEST_PA10=0;

}


//??????IO ?®??1 
//bound:?¨????
void uart_init(u32 bound)
{
   //GPIO?????è??
  GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;


RCC_AHB1PeriphClockCmd(USART1_ALT_GPIO_CLK,ENABLE); //????GPIOA?±??
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//????USART1?±??
 
//?®??1????????????????
GPIO_PinAFConfig(USART1_ALT_GPIO,TX_ALT_PIN,GPIO_AF_USART1); //GPIOA9??????USART1
GPIO_PinAFConfig(USART1_ALT_GPIO,RX_ALT_PIN,GPIO_AF_USART1); //GPIOA10??????USART1

//USART1????????
  GPIO_InitStructure.GPIO_Pin = USART1_TX_PIN | USART1_RX_PIN; //GPIOA9??GPIOA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//????????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //????50MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //???ì????????
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //????
GPIO_Init(USART1_ALT_GPIO,&GPIO_InitStructure); //??????PA9??PA10

   //USART1 ???????è??
USART_InitStructure.USART_BaudRate = bound;//?¨?????è??
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×??¤??8??????????
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; //??·?????
  USART_Init(USART1, &USART_InitStructure); //???????®??1

  USART_Cmd(USART1, ENABLE);  //?????®??1 

USART_ClearFlag(USART1, USART_FLAG_TC);

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//?????à??????

//Usart1 NVIC ????
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//?®??1?????¨??
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//??????????3
NVIC_InitStructure.NVIC_IRQChannelSubPriority =3; //×???????3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨??????
NVIC_Init(&NVIC_InitStructure); //?ù?????¨????????????VIC?????÷??

//Test_PA9PA10();
}


void USART1_SendChar(u8 ch)
{
while((USART1->SR&0X40)==0);//???··???,?±??·????ê±?   
USART1->DR = (u8) ch;      
}

void USART1_IRQHandler(void)                 //?®??1????·??????ò
{
u8 Res;

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //????????(????????????±?????0x0d 0x0a?á??)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //????????????????
USART1_SendChar(Res);
  } 


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-12-12 19:46:58 | 显示全部楼层
初始化成复用模式,你搞成普通模式干嘛
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-23 23:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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