1819|3

5

帖子

1

TA的资源

一粒金砂(初级)

楼主
 

帮帮看一下 [复制链接]

#include "stm32f10x.h"                  // Device header



#define PA0 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define PA1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)
#define PA2 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)

void GPIO_Configuration()
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);       
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);       
}

void NVIC_Configuration()
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}

void TIM_Configuration()
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
        TIM_TimeBaseStructure.TIM_Period = 100-1;//10msòç3ö»ò¸üDÂ
        TIM_TimeBaseStructure.TIM_Prescaler = 7200;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
        TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
        NVIC_Configuration();//
        TIM_Cmd(TIM3,ENABLE);
}

void TIM3_IRQHandler(void)//
{
        if(TIM_GetITStatus(TIM3,TIM_IT_Update) == SET)
        {
                void avoiding();
        }
        TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}

void up()
{
        GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5);
        GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6);
}

void left()
{
        GPIO_SetBits(GPIOA,GPIO_Pin_3);
        GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_5);
}

void right()
{
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_3);
}

void avoiding()
{
        if((PA0 == 1)&&(PA1 == 1)&&(PA2 == 1))   up();
        if((PA0 == 0)&&(PA1 == 1)&&(PA2 == 0))   left();
        if((PA0 == 1)&&(PA1 ==0)&&(PA2 ==1))     left();               
        if(((PA0 == 1)&&(PA1 ==1)&&(PA2 ==0))||
                 ((PA0 == 1)&&(PA1 ==0)&&(PA2 ==0)))   left();
        if(((PA0 == 0)&&(PA1 ==1)&&(PA2 ==1))||
                 ((PA0 == 0)&&(PA1 ==0)&&(PA2 ==1)))   right();
        if((PA0 == 0)&&(PA1 == 0)&&(PA1 == 0))   right();       
}



int main()
{
       
        GPIO_Configuration();//
        TIM_Configuration();//
        while(1)
        {               
                GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5);
                GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6);
        }
}
       

本想让小车利用红外传感器避障的,但小车执行
while(1)
        {               
                GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5);
                GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6);
        }
是哪出问题了,


此帖出自stm32/stm8论坛

最新回复

执行 while(1)         {                                GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5);                 GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6);         }   应该出现什么结果,实际出现什么。  详情 回复 发表于 2017-10-9 11:45
点赞 关注
 

回复
举报

2774

帖子

8

TA的资源

版主

沙发
 
这种传感器极易坏,先看看传感器有没有坏
此帖出自stm32/stm8论坛
 
 

回复

5

帖子

1

TA的资源

一粒金砂(初级)

板凳
 
没有坏,正常工作,
此帖出自stm32/stm8论坛
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

4
 
执行
while(1)
        {               
                GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5);
                GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6);
        }   应该出现什么结果,实际出现什么。
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表