野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16052|回复: 2

串口调试程序

[复制链接]
发表于 2020-7-2 23:16:15 | 显示全部楼层 |阅读模式
int main(void)
{
         
         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
   My_USART1_Init();


         uint8_t  a[10]={1,2,3,4,5,6,7,8,9,11};
        //USART1_IRQHandler();
        //Usart_SendByte(USART1,'b');
                         //USART_SendData(USART1,a[2]);

   Usart_SendArray(USART1,a,10);
  // Usart_SendStr(USART1, "Hello World!\n");
        //printf("123\n");
                       


        while(1)
{
}

}

  1. void My_USART1_Init(void)
  2. {
  3.         //GPIO端口设置
  4.   GPIO_InitTypeDef GPIO_InitStructure;
  5.         USART_InitTypeDef USART_InitStructure;
  6.         NVIC_InitTypeDef NVIC_InitStructure;
  7.          
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);        //使能USART1,GPIOA时钟
  9.   
  10.         //USART1_TX   GPIOA.9
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  12.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
  15.    
  16.   //USART1_RX          GPIOA.10初始化
  17.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  18.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  19.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  

  20.   //Usart1 NVIC 配置
  21.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  22.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
  23.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子优先级3
  24.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
  25.         NVIC_Init(&NVIC_InitStructure);        //根据指定的参数初始化VIC寄存器
  26.   
  27.    //USART 初始化设置

  28.         USART_InitStructure.USART_BaudRate = 9600;//串口波特率
  29.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
  30.         USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
  31.         USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
  32.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
  33.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //收发模式

  34.   USART_Init(USART1, &USART_InitStructure); //初始化串口1
  35.   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
  36.   USART_Cmd(USART1, ENABLE);                    //使能串口1

  37. }
复制代码
野火论坛202007022315423427..png
为什么结果只输出数组的最后一位呢???

回复

使用道具 举报

 楼主| 发表于 2020-7-2 23:16:54 | 显示全部楼层
void Usart_SendArray(USART_TypeDef* pUSARTx, uint8_t *array, u8 num)
{
        u8 i;
        for(i=0;i<num;i++)
        {
                USART_SendData(pUSARTx,*(array+i));
               
        }
                while(USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == 0);
}
回复 支持 反对

使用道具 举报

发表于 2020-7-3 14:31:01 | 显示全部楼层
你把while放到for循环里面就行了
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 15:25 , Processed in 0.036721 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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