OpenEdv-开源电子网

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

关于mini板串口实验USART的问题

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-11-11
在线时间
12 小时
发表于 2014-11-11 14:18:26 | 显示全部楼层 |阅读模式
5金钱
因为视频里说到重映射的问题,所以我想试一下这个功能。所以把原子哥库函数的串口实验的代码自己修改了一下。
发现程序能下载进去,而且led也会闪烁。但是串口调试助手却一片空白,没有接受到数据。   但是原本的代码是可以的。
ps:我使用的是USART3 的重映射 。 而且后来我自己也试过不用重映射功能,还是出现同样的问题
没有重映像(TX/PB10, RX/PB11 ),    部分映像(TX/PC10, RX/PC11 )。
下面是代码。

main()函数
int main(void)
 {
u8 t;
u8 len;
u16 times=0; 
 
delay_init();     //延时函数初始化
NVIC_Configuration();// 设置中断优先级分组
uart_init(9600); //串口初始化为9600
LED_Init();   //初始化与LED连接的硬件接口 
 


while(1)
{
if(USART_RX_STA&0x8000)
{   
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n");
for(t=0;t<len;t++)
{
USART3->DR=USART_RX_BUF[t];
while((USART3->SR&0X40)==0);//等待发送结束
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("\r\nALIENTEK MiniSTM32开发板 串口实验\r\n");
printf("正点原子@ALIENTEK\r\n\r\n\r\n");
}
if(times%200==0)printf("请输入数据,以回车键结束\r\n");  
if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
delay_ms(10);   
}
}

USART的设置
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
 USART_InitTypeDef USART_InitStructure;
 NVIC_InitTypeDef NVIC_InitStructure;
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能USART1,GPIOC时钟
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
  USART_DeInit(USART3);  //复位串口3
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //选择PC.10(TXD) 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管脚频率为50MHZ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //输出模式为复用推挽输出
GPIO_Init(GPIOC,&GPIO_InitStructure); //初始化PC10

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //选择PC.11(RXD) 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //输出模式为浮空输入
GPIO_Init(GPIOC,&GPIO_InitStructure); //初始化PC11

GPIO_PinRemapConfig(GPIO_PartialRemap_USART3,ENABLE);  //启用部分重映射功能

/USART 初始化设置

USART_InitStructure.USART_BaudRate = bound;//一般设置为9600;
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(USART3, &USART_InitStructure); //初始化串口
    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启中断
    USART_Cmd(USART3, ENABLE);                    //使能串口 

需要改的我基本上都改了,为什么还是不行呢?



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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-11 15:42:54 | 显示全部楼层
先搞不重映射的,出来了再去搞重映射
串口配置,可以仿真调出来peripherals选项卡里面的USART3窗口看下设置是不是正确。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-11-11
在线时间
12 小时
 楼主| 发表于 2014-11-11 18:16:28 | 显示全部楼层


USART3配置应该没问题,软件仿真也能出来结果
但是硬件仿真就不行了....
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-11 21:17:52 | 显示全部楼层
说明这个配置OK。
检查下硬件吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 06:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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