打印

STM32F417, 我的代码Usart1为什么没反应呢?

[复制链接]
4131|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
javenreal|  楼主 | 2012-4-28 12:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
淘宝上花100元买了一个STM32F417,怎么调,Usart1都无法输出数据,请大家指教。(注1:串口硬件是好的,因为程序也是通过Usart1下载的。)
(注2:芯片里的程序已经正常运行,因为用万用表可以量出PA0的电平变化)

int main(void)
{

GPIO_InitTypeDef    GPIO_InitStructure;

USART_InitTypeDef   USART_InitStructure;

//rcc
   
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB |
                           RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD |
                           RCC_AHB1Periph_GPIOE, ENABLE);


RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);


RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);


RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

//gpio


GPIO_DeInit(GPIOA);

   
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
   
GPIO_Init(GPIOA, &GPIO_InitStructure);



GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;


GPIO_Init(GPIOA, &GPIO_InitStructure);




//COM1 相关管脚

// Connect PXx to USARTx_Tx

GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);

// Connect PXx to USARTx_Rx

GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);



GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;


GPIO_Init(GPIOA, &GPIO_InitStructure);



// Configure USART1_Rx  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_Init(GPIOA, &GPIO_InitStructure);  



USART_DeInit(USART1);

//初始化第一个串口

USART_InitStructure.USART_BaudRate = 57600;  //波特率

USART_InitStructure.USART_WordLength = USART_WordLength_8b; //8位数据

USART_InitStructure.USART_StopBits = USART_StopBits_1;  //1个停止位

USART_InitStructure.USART_Parity = USART_Parity_No;     //无校验位

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //不用RTS、CTS等

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;   //发送、接收使能

// Configure USART1

USART_Init(USART1, &USART_InitStructure);



// Enable the USART1

USART_Cmd(USART1, ENABLE);



char i = 0;

volatile unsigned int delay;

volatile int delay2;

while (1)

{

delay2 = 0;

while(delay2 < 3)

{

delay = 0;

while(delay < 0xFFFFF)

{

delay++;

//__asm("NOP");

}

delay2++;

}


if(i)

{

GPIO_ResetBits(GPIOA, GPIO_Pin_0);

i = 0;

}

else

{

GPIO_SetBits(GPIOA, GPIO_Pin_0);

i = 0x0F;

}

//USART_SendData(USART1, i);


USART1->DR = i;

}
}
沙发
fq1110| | 2012-4-28 12:47 | 只看该作者
增加这句试试,
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_AFIO, ENABLE);

使用特权

评论回复
板凳
javenreal|  楼主 | 2012-4-28 13:43 | 只看该作者
2# fq1110 你好,在F2和F4中,已经没有 “RCC_AHB1Periph_AFIO”了。

使用特权

评论回复
地板
airwill| | 2012-4-28 13:54 | 只看该作者
不赞成没有示波器和 JTAG 调试器的调试方法.
小米加步枪的仅靠一个万用表调试 32 系统, 太累了

使用特权

评论回复
5
logokfu| | 2012-4-28 16:18 | 只看该作者
严重同意楼上的

使用特权

评论回复
6
fq1110| | 2012-4-28 17:10 | 只看该作者
2# fq1110 你好,在F2和F4中,已经没有 “RCC_AHB1Periph_AFIO”了。
javenreal 发表于 2012-4-28 13:43


嗯,刚看了,确实这样。

使用特权

评论回复
7
fq1110| | 2012-4-28 17:19 | 只看该作者
请问你是如何判断usart1无法输出数据的?
你是接电脑上RS232吗?还是两块板子连接?
如果是接RS232,中间请连接ttl->rs232,
建议如楼上两位所说,先弄个示波器测量一下。

使用特权

评论回复
8
PowerSource| | 2012-4-29 14:39 | 只看该作者
RS232电平转换芯片的TX脚虚焊了吗?

使用特权

评论回复
9
wxd123com| | 2012-9-6 15:51 | 只看该作者
遇到同样的问题。关注中。。。。。。。。。。

使用特权

评论回复
10
wxd123com| | 2012-9-6 18:51 | 只看该作者
今天仿真了一下,发现程序死在等待发送完毕的标志处。感觉奇怪。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

48

帖子

1

粉丝