打印

stm32f103c8t6最小核心板 关于串口传输 跪求大神指导

[复制链接]
2480|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
扛把子滴|  楼主 | 2017-5-26 14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
扛把子滴|  楼主 | 2017-5-26 14:42 | 只看该作者
#include "stm32f10x.h"


void My_USART_Init(void)
{

GPIO_InitTypeDef GPIO_InitStructure;       
USART_InitTypeDef USART_InitStructure;       
NVIC_InitTypeDef NVIC_InitStructure;       
       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
       
       
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;       
GPIO_Init(GPIOA,&GPIO_InitStructure);       
       
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;       
GPIO_Init(GPIOA,&GPIO_InitStructure);               

       
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;       
GPIO_Init(GPIOA,&GPIO_InitStructure);       
       
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;       
GPIO_Init(GPIOA,&GPIO_InitStructure);               
       
       
USART_InitStructure.USART_BaudRate=9600;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART_InitStructure);       

USART_InitStructure.USART_BaudRate=9600;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_Init(USART2,&USART_InitStructure);
       
USART_Cmd(USART1,ENABLE);        //使能串口1
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//打开接受中断

USART_Cmd(USART2,ENABLE);        //使能串口2
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//打开接受中断



NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStructure);
}

void USART1_IRQHandler(void)
{
       
        u8 res1;
       
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
        {
        res1=USART_ReceiveData(USART1);
        USART_SendData(USART2,res1);
        }
       


}

void USART2_IRQHandler(void)
{
       
       
        u8 res2;

        if(USART_GetITStatus(USART2,USART_IT_RXNE))
        {
        res2=USART_ReceiveData(USART2);
        USART_SendData(USART1,res2);
        }
       

}


int main(void)
{       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        My_USART_Init();
        while(1);
         
}

使用特权

评论回复
板凳
扛把子滴|  楼主 | 2017-5-26 14:42 | 只看该作者
求大神指导,哪出错了?

使用特权

评论回复
地板
dengxindieying| | 2017-5-31 19:49 | 只看该作者
用调试器跟进去,看看进入中断后是不是清除了

使用特权

评论回复
5
shahexu| | 2017-6-8 19:43 | 只看该作者
接收完成,要请中断的

使用特权

评论回复
6
zhazhahua| | 2017-6-17 11:42 | 只看该作者
用keil单步调试,还有初始化那里NVIC部分应该放在你USART_Cmd(USART1, ENABLE);前面

使用特权

评论回复
7
S2663265296| | 2017-6-22 17:52 | 只看该作者
去看下例程之类的教程应该就懂了

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝