6878|6

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

stm32飞07 的usart3 和usart1,2怎么不一样 [复制链接]

usart1,2都试过了没问题,但是试了usart3 怎么都不行,我先把usart1的程序贴出来,哪位大侠能帮忙贴下usart3的么,想对比学习下,谢谢。
#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

void Rcc_Configuration(void)
{
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
}

void UsartGPIO_Configuration(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 
 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;         
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
 GPIO_Init(GPIOB, &GPIO_InitStructure);    
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;        
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void usart_Configuration(void)
{
 USART_InitTypeDef USART_InitStructure;

 Rcc_Configuration();
 
 UsartGPIO_Configuration();

 USART_InitStructure.USART_BaudRate = 115200;
 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;
 
 USART_Init(USART1, &USART_InitStructure);
 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
 USART_Cmd(USART1, ENABLE);
}

void UsartGPIO_CTRT_Configuration(void)
{
   GPIO_InitTypeDef GPIO_InitStruct;

 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOB, &GPIO_InitStruct);

 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
 GPIO_Init(GPIOA, &GPIO_InitStruct);

 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
 GPIO_Init(GPIOB, &GPIO_InitStruct);
 
 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;
 GPIO_Init(GPIOA, &GPIO_InitStruct);
}


void USART_CTRT_Configuartion(void)
{
 USART_InitTypeDef USART_InitStruct;

 Rcc_Configuration();

 USART_InitStruct.USART_BaudRate = 115200;
 USART_InitStruct.USART_StopBits = USART_StopBits_1;
 USART_InitStruct.USART_WordLength = USART_WordLength_8b;
 USART_InitStruct.USART_Parity = USART_Parity_No;
 USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_RTS_CTS;
 USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
 
 USART_Init(USART1, &USART_InitStruct);

 USART_Cmd(USART1, ENABLE);

 UsartGPIO_CTRT_Configuration();
}

//不使用半主机模式
#if 1 //如果没有这段,则需要在target选项中选择使用USE microLIB
#pragma import(__use_no_semihosting)
struct __FILE 

 int handle; 
}; 
FILE __stdout; 

_sys_exit(int x) 

 x = x; 
}
#endif

PUTCHAR_PROTOTYPE
{
 /* Place your implementation of fputc here */
 /* e.g. write a character to the USART */
 USART_SendData(USART1,(u8)ch);

 /* Loop until the end of transmission */
 while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

 return ch;
}

#include <stm32f10x.h>
#include "usart.h"
//#define CTRT


uint8_t TxBuffer[] = "\n\rUSART Hyperterminal Hardware Flow Control Example: USART - \
Hyperterminal communication using hardware flow control\n\r";

#ifndef CTRT
//配置矢量中断,矢量的意思就是有顺序,有先后的意思。
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure; //定义数据结构体
 
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);//将中断矢量放到Flash的0地址

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//设置优先级配置的模式,详情请阅读原材料中的文章

  //使能串口中断,并设置优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
  NVIC_Init(&NVIC_InitStructure); //将结构体丢到配置函数,即写入到对应寄存器中
}
#endif

int main(void)
{
 u32 i=0xffffff;
 SystemInit();

#ifdef CTRT    /*使用CTS RTS硬件流模式*/
 USART_CTRT_Configuartion();
 while(NbrOfDataToTransfer--)
   {
      USART_SendData(USART1, TxBuffer[TxCounter++]);
      while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);         
   }
 
   /*Receive a string (Max RxBufferSize bytes) from the Hyperterminal ended by '\r' (Enter key) */
   while(1)
   {  
      if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET)
      {
         USART_SendData(USART1,USART_ReceiveData(USART1));
      }  
   }
#else  /*普通串口模式*/
 usart_Configuration(); 
 NVIC_Configuration();
   while(1)
 {
  printf("Waveshare 上海_2!\r\n");
  while(--i);
  i=0xffffff;
 }
#endif
}

 

上面的程序是usart1的,没问题,如果要改usart2的话 只需将usart1改成usart2,并且将时钟改成apb1和复用的gpio端口改下就也可以了,但是我在调试usart3的时候按照同样的方法修改却不行,是不是复用端口不对啊,还发现个问题 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);这样改都没问题,但偏偏在改成GPIO_PinRemapConfig(GPIO_Remap_USART3, ENABLE)就编译不过,请大侠指教,初学者研究了好久还是不行,呵呵 见笑

[ 本帖最后由 chairmanisme 于 2012-6-30 17:46 编辑 ]
此帖出自stm32/stm8论坛

最新回复

很是无语,。。。。。  详情 回复 发表于 2014-10-22 14:39
点赞 关注
 

回复
举报

23

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

补充

呵呵 刚下载了datasheet看了一下,我对usart3复用的gpIO端口为PD5和6,但是PC10和PC11也可以复用USART3,星期一我去试下PC10和PC11;不知道哪位大侠能解释下,这有什么区别么,感激不尽啊。
此帖出自stm32/stm8论坛
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

datasheet

附上datasheet,可以参考下。呵呵

datasheet.pdf

836.69 KB, 下载次数: 69

此帖出自stm32/stm8论坛
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

4
 

解决

哈哈 已经解决了 想知道的同学 初学的同学 可以加我qq 544900367,一起学习额
此帖出自stm32/stm8论坛
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

5
 
楼主,请解决后将问题公布一下,方便后来的人,OK??
此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

6
 

解决

呵呵 人比较懒,如果你想知道的话 可以加我qq 544900367,很乐意和大家分享的呵呵
此帖出自stm32/stm8论坛
 
 
 

回复

30

帖子

1

TA的资源

一粒金砂(初级)

7
 
很是无语,。。。。。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表