OpenEdv-开源电子网

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

调试3天了,串口调试还是不成功,求帮助

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-8-22
在线时间
1 小时
发表于 2014-8-22 21:55:56 | 显示全部楼层 |阅读模式
5金钱
我写的main(),这个代码已经调试了3天了,还是调试不出来,我和以前原子的代码进行了对比,
已经把串口的初始化代码进行了先后顺序的调整,也一条一条的对比了,在串口调试助手上还是调试不出结果啊??
我在Debug中进行仿真调试的时候,是没有进入中断,但是已经进行了中断优先级分组了啊,也已经使能串口,使能中断了啊!
为啥还是出不了结果啊。。。
求帮助~~

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "beep.h"
#include "usart_test.h"

 int main(void)
 {
 
SystemInit();
NVIC_Configuration();
delay_init();       
led_Init();
beep_Init();  
usart_Init_test(9600);
while(1)
{
USART_SendData(USART1,'B');
delay_ms(5);
delay_ms(1000);
}
 }


#include "usart_test.h"
//extern u16 bound_test;
void usart_Init_test(u32 bound_test)
{
 
GPIO_InitTypeDef GPIO_InitStructer;
USART_InitTypeDef USART_InitStructer;
NVIC_InitTypeDef NVIC_InitStructer;
//配置GPIOA 结构体
RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);
USART_DeInit(USART1);  //复位串口1
 
GPIO_InitStructer.GPIO_Pin=GPIO_Pin_9;//PA2 TX发送引脚
GPIO_InitStructer.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructer.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructer);
GPIO_InitStructer.GPIO_Pin=GPIO_Pin_10;//PA3 RX接收引脚
GPIO_InitStructer.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructer);
 
 
USART_InitStructer.USART_BaudRate=bound_test;//初始化波特率
USART_InitStructer.USART_WordLength=USART_WordLength_8b;//8位数据
USART_InitStructer.USART_StopBits=USART_StopBits_1;//1位停止位
USART_InitStructer.USART_Parity=USART_Parity_No;//无奇偶校验
USART_InitStructer.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructer.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//设置为接收发送模式
 
USART_Init(USART1,&USART_InitStructer);

NVIC_InitStructer.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStructer.NVIC_IRQChannelPreemptionPriority=3;
NVIC_InitStructer.NVIC_IRQChannelSubPriority=3;
NVIC_InitStructer.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructer);

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能串口中断
USART_Cmd(USART1,ENABLE);//使能串口
}

void USART1_IRQHandler(void)
{
u8 Res=123;
 

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  
{
// Res =USART_ReceiveData(USART1);
USART_SendData(USART1,Res);
}
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
usart_test.h

#ifndef USART_TEST_H
#define USART_TEST_H
#include "sys.h"
#include "stdio.h"
//u16 bound_test;
void usart_Init_test(u32 bound_test);

#endif




最佳答案

查看完整内容[请看2#楼]

void usart_Init_test(u32 bound_test) {   GPIO_InitTypeDef GPIO_InitStructer; USART_InitTypeDef USART_InitStructer; NVIC_InitTypeDef NVIC_InitStructer; //配置GPIOA 结构体 RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE); USART_DeInit(USART1);  //复位串口1 你这里用的复位函数。 要用时钟使能函数: RCC_APB2PeriphClockCmd()。 太粗心了
BLDC
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-8-22 21:55:57 | 显示全部楼层
void usart_Init_test(u32 bound_test)
{
 
GPIO_InitTypeDef GPIO_InitStructer;
USART_InitTypeDef USART_InitStructer;
NVIC_InitTypeDef NVIC_InitStructer;
//配置GPIOA 结构体
RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);
USART_DeInit(USART1);  //复位串口1

你这里用的复位函数。
要用时钟使能函数:
RCC_APB2PeriphClockCmd()。
太粗心了
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-5 04:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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