OpenEdv-开源电子网

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

STM32F1精英板串口疑惑

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2016-3-29
在线时间
8 小时
发表于 2016-3-29 12:02:44 | 显示全部楼层 |阅读模式
2金钱
如题,我在用精英板做开发时,发现串口设计比较奇怪,如图:


这个USART1串口,开发板的文件上面显示PA10是USART1的接收引脚(RX), PA9则是发送引脚(TX), 但是这两个I/O口下面又有一个TX和RX,这让我很是不理解这个怎么用. 而且还有跳线帽封着,我不知道去掉跳线帽后是不是就不能正常使用USART1串口了。总之我的程序在往USART1口输送数据时,电机驱动是没有反应的,而且示波器也会显示一直是4.88V(拔掉2个跳线帽,并且检测TX和RX)。附上我的代码,比较简单,可是就是无法驱动电机(电机驱动的特性就是往里边输入特定地址信息和指令等就能够相应驱动电机运动)。希望有人可以指教是什么地方出现了问题。
void Motor_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;  //Structure for GPIO Initialize
        USART_InitTypeDef USART_InitStructure; //Structure for USART Initialize
        NVIC_InitTypeDef NVIC_InitStructure; //Structure for NVIC
       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//Enable GPIOB;

        //Set up parameter for GPOIA.9 as output
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);

        //Set up parameter for GPIOA.10 as input
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
               
        //Usart Initialize     ′Ë′|»ù±¾è«ÅìÕÕ3-Dû½ã
        USART_InitStructure.USART_BaudRate = 9600;//ò»°ãéèÖÃÎa9600;
        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);
               
        //Enable Interupt
        //NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
        //NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
//        NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
        //NVIC_Init(&NVIC_InitStructure);
       
        //Start Interupt
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
       
        //Enable the USART
        USART_Cmd(USART1,ENABLE);
               
        //Send data to USART1---Set Minium Voltage
        USART_SendData(USART1,128);
        USART_SendData(USART1,2);
        USART_SendData(USART1,25);
        USART_SendData(USART1,(128+2+25)&0x7F);
       
        //Send data to USART1---Set Maximum Voltage
        USART_SendData(USART1,128);
        USART_SendData(USART1,3);
        USART_SendData(USART1,144);
        USART_SendData(USART1,(128+3+144)&0x7F);               
}

void Setdriver(int Mode,int Commend,int Bytevalue)
{
        int Checksum;
        USART_RX_STA=0;
        Checksum=(Mode+Commend+Bytevalue)&0x7F;
        USART_SendData(USART1,Mode);
        USART_SendData(USART1,Commend);
        USART_SendData(USART1,Bytevalue);
        USART_SendData(USART1,Checksum);
        if(USART_GetITStatus(USART1,USART_IT_TC))
        {
                LED_Init();
                                delay_ms(500);
                                GPIO_ResetBits(GPIOB,GPIO_Pin_5);
                                delay_ms(500);
                                GPIO_ResetBits(GPIOE,GPIO_Pin_5);
                                delay_ms(500);
        }
                else
                {
                LED_Init();
                delay_ms(500);
                //Do nothing
               
               
                }
       
}


int main()
{

   Motor_Init();
   delay_init();
         LED_Init();
        //Send data to USART1---Set Maximum Voltage

        while(1)
                {
                Setdriver(128,3,144);
                //if(USART_GetFlagStatus(USART1,USART_FLAG_TC))
                {LED0=0;
                LED1=1;
                delay_ms(300);         //Ñóê±300ms
                LED0=1;
                LED1=0;
                delay_ms(300);        //Ñóê±300ms
                //        USART_FLAG_TC
        }
        //6else
        {
       
       
        }               
       
        }


IMG_1786.JPG
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2016-3-29 14:32:24 | 显示全部楼层
PA9,PA10跳线帽不是连接ch340用的吗??
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-29 21:08:29 | 显示全部楼层
拔了就断了USB转TTL串口和MCU的串口1的连接了.   要正常用的时候,不要拔了.  你先学习下串口通信实验吧.
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2016-3-29
在线时间
8 小时
 楼主| 发表于 2016-3-29 22:13:36 | 显示全部楼层
正点原子 发表于 2016-3-29 21:08
拔了就断了USB转TTL串口和MCU的串口1的连接了.   要正常用的时候,不要拔了.  你先学习下串口通信实验吧.

那也就是说,精英板上面的串口都无法进行板载模块之外的开发了。就只能用来学习你们的教程了是吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-29 22:31:11 | 显示全部楼层
wanjudadao 发表于 2016-3-29 22:13
那也就是说,精英板上面的串口都无法进行板载模块之外的开发了。就只能用来学习你们的教程了是吗?

当然不是,你拔了这两个跳线帽,PA9,PA10随便你自己接哪里.
只要是TTL的串口,都可以接.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 10:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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