OpenEdv-开源电子网

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

串口问题。。。。。

[复制链接]

145

主题

445

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2014-1-15
在线时间
350 小时
发表于 2016-11-29 12:01:26 | 显示全部楼层 |阅读模式
50金钱
[mw_shl_code=c,true]/*******************************************************************************
*******************************************************************************/
void USART1_Init(u32 bound)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef  NVIC_InitStructure;       
    /* config USART1 clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
    /* USART1 GPIO config */
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);   
    /* Configure USART1 Rx (PA.10) as input floating */
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStructure);
    /* USART1 mode config */
    USART_InitStructure.USART_BaudRate            = bound;
    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);

    NVIC_InitStructure.NVIC_IRQChannel                   = USART1_IRQn; //????2??
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;           //?????2?
    NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 0;           //????2?
    NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;      //????????
    NVIC_Init(&NVIC_InitStructure);                                     //??NVIC_InitStruct???????????NVIC???

    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);                      //????  
    USART_Cmd(USART1, ENABLE);
}
/*******************************************************************************
*******************************************************************************/
void Usart_SendString(USART_TypeDef *USARTx, unsigned char *str, unsigned short len)
{
    unsigned char *s=str;
        unsigned short count = 0;
       
        for(; count < len; count++)
        {
                USART_SendData(USARTx, *(s++));
                while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);
                delay_us(2);
        }

}
/*******************************************************************************
*******************************************************************************/
void USART1_XmtChar(unsigned char c)
{
    USART_SendData(USART1, c);
   
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
        ;
}
/*******************************************************************************
*******************************************************************************/
void USART1_XmtStr(unsigned char *str)
{
    unsigned char *s=str;
    while(*s!='\0')
    {
        USART1_XmtChar(*(s++));        
    }   
}
/*******************************************************************************
*******************************************************************************/
void USART1_SendData(u8 *buf,u8 len)
{
        u8 t;

          for(t=0;t<len;t++)                //&#209;-&#187;··¢&#203;íêy&#190;Y
        {                  
                while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);          
                USART_SendData(USART1,buf[t]);
        }         

        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);               

}[/mw_shl_code]



主函数:
[mw_shl_code=c,true]
unsigned char ww[]="01234\r\n";
int main(void)
{
                delay_init();                     //&#209;óê±oˉêy3&#245;ê&#188;&#187;ˉ          
             NVIC_Configuration();          //éè&#214;&#195;NVIC&#214;D&#182;&#207;·&#214;×é2:2&#206;&#187;&#199;à&#213;&#188;ó&#197;&#207;è&#188;&#182;£&#172;2&#206;&#187;&#207;ìó|ó&#197;&#207;è&#188;&#182;

                USART1_Init(9600);
//                M6311_Init();
         
         
        while(1)
        {
        
                    USART1_XmtStr(ww);
Usart_SendString(USART1,ww,7);
        USART1_SendData(ww,7);

        }
}[/mw_shl_code]




有什么不对的?????三个发送函数发的字符完全不一样,且没有一个正确

最佳答案

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

之前是用原子的beep做框架,把我的这个文件放进去测试,板子不是原子的。编译无问题,就是串口不行。 我把库文件全部删了又去下的库文件,添加进去,就好了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

145

主题

445

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2014-1-15
在线时间
350 小时
 楼主| 发表于 2016-11-29 12:01:27 | 显示全部楼层
之前是用原子的beep做框架,把我的这个文件放进去测试,板子不是原子的。编译无问题,就是串口不行。

我把库文件全部删了又去下的库文件,添加进去,就好了。
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-29 15:36:34 | 显示全部楼层
同学,你的代码问题有点多哦~
回复

使用道具 举报

145

主题

445

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2014-1-15
在线时间
350 小时
 楼主| 发表于 2016-11-29 17:30:44 | 显示全部楼层
小陀螺爱炒蛋 发表于 2016-11-29 15:36
同学,你的代码问题有点多哦~

请问都有那些地方?
回复

使用道具 举报

4

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-8-3
在线时间
18 小时
发表于 2016-11-29 21:32:29 | 显示全部楼层
中断分组一下,还没写完呢你的程序
回复

使用道具 举报

145

主题

445

帖子

0

精华

高级会员

Rank: 4

积分
823
金钱
823
注册时间
2014-1-15
在线时间
350 小时
 楼主| 发表于 2016-11-30 10:47:41 | 显示全部楼层
黑羽翼 发表于 2016-11-29 21:32
中断分组一下,还没写完呢你的程序

没用到中断。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 07:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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