OpenEdv-开源电子网

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

Stm32F407ZGT6串口一库函数的样例参数改成usart2的参数之后,电脑串口调试助手显示没找到串口

[复制链接]

2

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-7-13
在线时间
3 小时
发表于 2020-7-24 11:20:22 | 显示全部楼层 |阅读模式
1金钱
Stm32F407ZGT6开发板的串口一库函数实验样例,将里面的参数改成usart2的参数之后,下载到板子上,再用数据线连接到电脑,电脑串口调试助手显示没找到串口
附代码如下:
———————main.c------------------
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "stm32f4xx.h"

int main(void)
{

    u8 t;
    u8 len;   
    u16 times=0;  
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃϵͳÖжÏÓÅÏȼ¶·Ö×é2
    delay_init(168);        //ÑÓʱ³õʼ»¯
    uart_init(115200);    //´®¿Ú³õʼ»¯²¨ÌØÂÊΪ115200
    LED_Init();                  //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú  
    while(1)
    {
        if(USART_RX_STA&0x8000)
        {                       
            len=USART_RX_STA&0x3fff;//µÃµ½´Ë´Î½ÓÊÕµ½µÄÊý¾Ý³¤¶È
            printf("\r\nÄú·¢Ë͵ÄÏûϢΪ:\r\n");
            for(t=0;t<len;t++)
            {
                USART_SendData(USART2, USART_RX_BUF[t]);         //&#207;ò&#180;&#174;&#191;&#218;1·&#162;&#203;&#205;&#202;&#253;&#190;&#221;
                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//&#181;&#200;&#180;&#253;·&#162;&#203;&#205;&#189;á&#202;&#248;
            }
            printf("\r\n\r\n");//&#178;&#229;&#200;&#235;&#187;&#187;&#208;&#208;
            USART_RX_STA=0;
        }else
        {
            times++;
            if(times%5000==0)
            {
                printf("\r\nALIENTEK &#180;&#174;&#191;&#218;&#202;&#181;&#209;é\r\n");
                printf("&#207;&#196;&#204;ì&#179;&#212;&#206;÷&#185;&#207;\r\n\r\n\r\n");
            }
            if(times%200==0)printf("&#199;&#235;&#202;&#228;&#200;&#235;&#202;&#253;&#190;&#221;,&#210;&#212;&#187;&#216;&#179;&#181;&#188;ü&#189;á&#202;&#248;\r\n");  
            if(times%30==0) LED0=!LED0;//&#201;&#193;&#203;&#184;LED,&#204;á&#202;&#190;&#207;&#181;&#205;&#179;&#213;&#253;&#212;&#218;&#212;&#203;&#208;&#208;.
            delay_ms(10);   
        }
    }
}

----------------------usart.c----------------------
#include "sys.h"
#include "usart.h"   
//////////////////////////////////////////////////////////////////////////////////      
//&#200;&#231;&#185;&#251;&#202;&#185;&#211;&#195;ucos,&#212;ò°ü&#192;¨&#207;&#194;&#195;&#230;&#181;&#196;&#205;·&#206;&#196;&#188;&#254;&#188;&#180;&#191;&#201;.
#if SYSTEM_SUPPORT_OS
#include "includes.h"                    //ucos &#202;&#185;&#211;&#195;      
#endif
//////////////////////////////////////////////////////////////////
//&#188;&#211;&#200;&#235;&#210;&#212;&#207;&#194;&#180;ú&#194;&#235;,&#214;§&#179;&#214;printf&#186;&#175;&#202;&#253;,&#182;&#248;&#178;&#187;&#208;è&#210;&#170;&#209;&#161;&#212;&#241;use MicroLIB      
#if 1
#pragma import(__use_no_semihosting)            
//±ê×&#188;&#191;&#226;&#208;è&#210;&#170;&#181;&#196;&#214;§&#179;&#214;&#186;&#175;&#202;&#253;                 
struct __FILE
{
    int handle;
};

FILE __stdout;      
//&#182;¨&#210;&#229;_sys_exit()&#210;&#212;±&#220;&#195;&#226;&#202;&#185;&#211;&#195;°&#235;&#214;÷&#187;ú&#196;&#163;&#202;&#189;   
_sys_exit(int x)
{
    x = x;
}
//&#214;&#216;&#182;¨&#210;&#229;fputc&#186;&#175;&#202;&#253;
int fputc(int ch, FILE *f)
{     
    while((USART2->SR&0X40)==0);//&#209;&#173;&#187;··&#162;&#203;&#205;,&#214;±&#181;&#189;·&#162;&#203;&#205;&#205;ê±&#207;   
    USART2->DR = (u8) ch;      
    return ch;
}
#endif

#if EN_USART2_RX   //&#200;&#231;&#185;&#251;&#202;&#185;&#196;&#220;&#193;&#203;&#189;&#211;&#202;&#213;
//&#180;&#174;&#191;&#218;1&#214;&#208;&#182;&#207;·&#254;&#206;&#241;&#179;&#204;&#208;ò
//×&#162;&#210;&#226;,&#182;&#193;&#200;&#161;USARTx->SR&#196;&#220;±&#220;&#195;&#226;&#196;&#170;&#195;&#251;&#198;&#228;&#195;&#238;&#181;&#196;&#180;í&#206;ó      
u8 USART_RX_BUF[USART_REC_LEN];     //&#189;&#211;&#202;&#213;&#187;&#186;&#179;&#229;,×&#238;&#180;óUSART_REC_LEN&#184;&#246;×&#214;&#189;&#218;.
//&#189;&#211;&#202;&#213;×&#180;&#204;&#172;
//bit15&#163;&#172;    &#189;&#211;&#202;&#213;&#205;ê&#179;&#201;±ê&#214;&#190;
//bit14&#163;&#172;    &#189;&#211;&#202;&#213;&#181;&#189;0x0d
//bit13~0&#163;&#172;    &#189;&#211;&#202;&#213;&#181;&#189;&#181;&#196;&#211;&#208;&#208;§×&#214;&#189;&#218;&#202;&#253;&#196;&#191;
u16 USART_RX_STA=0;       //&#189;&#211;&#202;&#213;×&#180;&#204;&#172;±ê&#188;&#199;   

//&#179;&#245;&#202;&#188;&#187;&#175;IO &#180;&#174;&#191;&#218;1
//bound:&#178;¨&#204;&#216;&#194;&#202;
void uart_init(u32 bound){
   //GPIO&#182;&#203;&#191;&#218;&#201;è&#214;&#195;
  GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
   
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //&#202;&#185;&#196;&#220;GPIOA&#202;±&#214;&#211;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//&#202;&#185;&#196;&#220;USART1&#202;±&#214;&#211;

    //&#180;&#174;&#191;&#218;1&#182;&#212;&#211;&#166;&#210;&#253;&#189;&#197;&#184;&#180;&#211;&#195;&#211;&#179;&#201;&#228;
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2); //GPIOA9&#184;&#180;&#211;&#195;&#206;&#170;USART1
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2); //GPIOA10&#184;&#180;&#211;&#195;&#206;&#170;USART1
   
    //USART1&#182;&#203;&#191;&#218;&#197;&#228;&#214;&#195;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; //GPIOA9&#211;&#235;GPIOA10
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//&#184;&#180;&#211;&#195;&#185;&#166;&#196;&#220;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //&#203;&#217;&#182;&#200;50MHz
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //&#205;&#198;&#205;ì&#184;&#180;&#211;&#195;&#202;&#228;&#179;&#246;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //&#201;&#207;&#192;&#173;
    GPIO_Init(GPIOA,&GPIO_InitStructure); //&#179;&#245;&#202;&#188;&#187;&#175A9&#163;&#172A10

   //USART1 &#179;&#245;&#202;&#188;&#187;&#175;&#201;è&#214;&#195;
    USART_InitStructure.USART_BaudRate = bound;//&#178;¨&#204;&#216;&#194;&#202;&#201;è&#214;&#195;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×&#214;&#179;¤&#206;&#170;8&#206;&#187;&#202;&#253;&#190;&#221;&#184;&#241;&#202;&#189;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;//&#210;&#187;&#184;&#246;&#205;&#163;&#214;&#185;&#206;&#187;
    USART_InitStructure.USART_Parity = USART_Parity_No;//&#206;&#222;&#198;&#230;&#197;&#188;&#208;&#163;&#209;é&#206;&#187;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//&#206;&#222;&#211;&#178;&#188;&#254;&#202;&#253;&#190;&#221;&#193;÷&#191;&#216;&#214;&#198;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    //&#202;&#213;·&#162;&#196;&#163;&#202;&#189;
  USART_Init(USART2, &USART_InitStructure); //&#179;&#245;&#202;&#188;&#187;&#175;&#180;&#174;&#191;&#218;1
   
  USART_Cmd(USART2, ENABLE);  //&#202;&#185;&#196;&#220;&#180;&#174;&#191;&#218;1
   
    //USART_ClearFlag(USART1, USART_FLAG_TC);
   
    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//&#191;&#170;&#198;&#244;&#207;à&#185;&#216;&#214;&#208;&#182;&#207;

    //Usart1 NVIC &#197;&#228;&#214;&#195;
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;//&#180;&#174;&#191;&#218;1&#214;&#208;&#182;&#207;&#205;¨&#181;&#192;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//&#199;&#192;&#213;&#188;&#211;&#197;&#207;&#200;&#188;&#182;3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;        //×&#211;&#211;&#197;&#207;&#200;&#188;&#182;3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //IRQ&#205;¨&#181;&#192;&#202;&#185;&#196;&#220;
    NVIC_Init(&NVIC_InitStructure);    //&#184;ù&#190;&#221;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;VIC&#188;&#196;&#180;&#230;&#198;÷&#161;&#162;

   
}


void USART2_IRQHandler(void)                    //&#180;&#174;&#191;&#218;1&#214;&#208;&#182;&#207;·&#254;&#206;&#241;&#179;&#204;&#208;ò
{
    u8 Res;
#if SYSTEM_SUPPORT_OS         //&#200;&#231;&#185;&#251;SYSTEM_SUPPORT_OS&#206;&#170;&#213;&#230;&#163;&#172;&#212;ò&#208;è&#210;&#170;&#214;§&#179;&#214;OS.
    OSIntEnter();   
#endif
    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //&#189;&#211;&#202;&#213;&#214;&#208;&#182;&#207;(&#189;&#211;&#202;&#213;&#181;&#189;&#181;&#196;&#202;&#253;&#190;&#221;±&#216;&#208;&#235;&#202;&#199;0x0d 0x0a&#189;á&#206;&#178;)
    {
        Res =USART_ReceiveData(USART2);//(USART1->DR);    //&#182;&#193;&#200;&#161;&#189;&#211;&#202;&#213;&#181;&#189;&#181;&#196;&#202;&#253;&#190;&#221;
        
        if((USART_RX_STA&0x8000)==0)//&#189;&#211;&#202;&#213;&#206;&#180;&#205;ê&#179;&#201;
        {
            if(USART_RX_STA&0x4000)//&#189;&#211;&#202;&#213;&#181;&#189;&#193;&#203;0x0d
            {
                if(Res!=0x0a)USART_RX_STA=0;//&#189;&#211;&#202;&#213;&#180;í&#206;ó,&#214;&#216;&#208;&#194;&#191;&#170;&#202;&#188;
                else USART_RX_STA|=0x8000;    //&#189;&#211;&#202;&#213;&#205;ê&#179;&#201;&#193;&#203;
            }
            else //&#187;&#185;&#195;&#187;&#202;&#213;&#181;&#189;0X0D
            {   
                if(Res==0x0d)USART_RX_STA|=0x4000;
                else
                {
                    USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                    USART_RX_STA++;
                    if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//&#189;&#211;&#202;&#213;&#202;&#253;&#190;&#221;&#180;í&#206;ó,&#214;&#216;&#208;&#194;&#191;&#170;&#202;&#188;&#189;&#211;&#202;&#213;      
                }         
            }
        }            
  }
#if SYSTEM_SUPPORT_OS     //&#200;&#231;&#185;&#251;SYSTEM_SUPPORT_OS&#206;&#170;&#213;&#230;&#163;&#172;&#212;ò&#208;è&#210;&#170;&#214;§&#179;&#214;OS.
    OSIntExit();                                               
#endif
}
#endif   


还望各路高手指教!感激不尽




最佳答案

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

串口2建议用串口2的例程,不熟的话不要自己改
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
658
金钱
658
注册时间
2020-5-17
在线时间
123 小时
发表于 2020-7-24 11:20:23 | 显示全部楼层
串口2建议用串口2的例程,不熟的话不要自己改
回复

使用道具 举报

1

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
658
金钱
658
注册时间
2020-5-17
在线时间
123 小时
发表于 2020-7-24 13:18:49 | 显示全部楼层
你连接的是串口2吗
回复

使用道具 举报

6

主题

412

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2704
金钱
2704
注册时间
2019-8-14
在线时间
414 小时
发表于 2020-7-24 15:19:07 | 显示全部楼层
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-7-13
在线时间
3 小时
 楼主| 发表于 2020-7-24 15:25:23 | 显示全部楼层
15042678602 发表于 2020-7-24 13:18
你连接的是串口2吗

对,电脑接的串口二,但是串口调试助手显示搜不到串口,但是接串口1反而有
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-7-13
在线时间
3 小时
 楼主| 发表于 2020-7-24 15:26:10 | 显示全部楼层
15042678602 发表于 2020-7-24 13:19
串口2建议用串口2的例程,不熟的话不要自己改

啊?我没找到,5555~
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-7-13
在线时间
3 小时
 楼主| 发表于 2020-7-24 15:27:25 | 显示全部楼层
EVahl 发表于 2020-7-24 15:19
参考这个看看吧http://www.openedv.com/forum.php?mod=viewthread&tid=282609&highlight=%CC%BD%CB%F7%D5%D ...

这怎么了,我改了GPIO口啊
回复

使用道具 举报

1

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
658
金钱
658
注册时间
2020-5-17
在线时间
123 小时
发表于 2020-7-24 16:22:13 | 显示全部楼层
TLv 发表于 2020-7-24 15:26
啊?我没找到,5555~

485例程是串口2
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-7-13
在线时间
3 小时
 楼主| 发表于 2020-7-25 10:13:37 | 显示全部楼层

哦哦哦,行
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 19:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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