完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#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Òç³ö»ò¸üР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();//GPIOÒý½Å³õʼ»¯ TIM_Configuration();//¶¨Ê±Æ÷³õʼ»¯ while(1) { GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_5); GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6); } } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【Altium小课专题 第107篇】原理图中批量修改位号或网络标号属性值字体的大小?
10756 浏览 1 评论
【Altium小课专题 第103篇】原理图同一网络颜色进行了设置,但是无法进行显示是什么原因?
7873 浏览 0 评论
【Altium小课专题 第094篇】如何从PCB中直接生成PCB库呢?
8051 浏览 0 评论
【Altium小课专题 第071篇】什么是层次式电路设计?它的优点有哪些?
6872 浏览 0 评论
【Altium小课专题 第068篇】原理图的模板如何进行编辑信息更改?
13010 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 20:21 , Processed in 0.487686 second(s), Total 75, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号