久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

立即注冊(cè) 登錄
返回首頁(yè)

uid:240879的個(gè)人空間

日志

基于STM32的智能計(jì)步監(jiān)測(cè)及顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

已有 2218 次閱讀2017-10-19 11:35

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_flash.h"
#include "stm32f10x_exti.h"
#include "stm32f10x_rcc.h"
#include "systick.h"
#include "stdio.h"
#include "misc.h"

#define infra1 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7);
#define infra2 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8);

#define tube1 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0);
#define tube2 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1);
#define tube3 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2);
#define tube4 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_3);
                

TIM_OCInitTypeDef  TIM1_OCInitStructure;

extern FlagStatus  Status;

extern u16 TIM1Compare1[3] = {0,0x3FFF,0x1FFF};
extern u16 TIM1Compare2[3] = {0x7FFF,0x3FFF,0x1FFF};
extern u16 TIM1Compare3[3] = {0,0x3FFF,0x1FFF};
extern u16 TIM1Compare4[3] = {0x7FFF,0x3FFF,0x1FFF};
extern u16 tubecnt;
extern u16 flag;
extern int add;

void GPIO_Configuration(void);
void TIM_Configuration(void);
void tim2_Configuration(void);
void exti_Configuration(void);
void nvic_Configuration(void);

void zhi1(void);
void zhi2(void);
void zhi3(void);
void zuoxiao(void);
void zuoda(void);
void youxiao(void);
void youda(void);
void xunji(void);
u16 ceju(void);


int main(void)
{
        
        RCC_Configuration();
        GPIO_Configuration();
        TIM_Configuration();
        delay_init();

        while(1)
        {
         GPIO_ResetBits(GPIOE,GPIO_Pin_15);
         GPIO_ResetBits(GPIOB,GPIO_Pin_11);
        }
                
}
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

/*TIM1  PWM  輸出:A9:CH1/A10:CH2                */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

/*LED顯示:LED5:PE15 / LED6:PB11 / LED7:PE14 / LED8:PB10         */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
                 GPIO_SetBits(GPIOB,GPIO_Pin_10);
                GPIO_SetBits(GPIOB,GPIO_Pin_11);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
                  GPIO_SetBits(GPIOE,GPIO_Pin_14);
                GPIO_SetBits(GPIOE,GPIO_Pin_15);
  
/*紅外管:infra1-> PC7, infra2-> PC8         浮空輸入  */
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);   

/*光電管:tube1-> PC0, tube2-> PC1, tube3-> PC2, tube4-> PC3        浮空輸入*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_2 | GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

/*超聲波:Trig:PB9                Echo:PB8   */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                           
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_ResetBits( GPIOB, GPIO_Pin_9);
   
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;            //PB1接受采集上升沿 PB6低電平
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_ResetBits(GPIOB,GPIO_Pin_8);
}

void TIM_Configuration(void)
{
        TIM_TimeBaseInitTypeDef  TIM1_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM1_OCInitStructure;
        

          TIM_DeInit(TIM1);

          /* Time Base configuration */
          TIM1_TimeBaseStructure.TIM_Prescaler = 0x0; //設(shè)置了用來(lái)作為T(mén)IMx時(shí)鐘頻率除數(shù)的預(yù)分頻值
        TIM1_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;         //選擇了計(jì)數(shù)器模式
         TIM1_TimeBaseStructure.TIM_Period = 0xFFFF;  //設(shè)置了在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期  ARR
        TIM1_TimeBaseStructure.TIM_ClockDivision = 0x0;  //設(shè)置了時(shí)鐘分割
        TIM1_TimeBaseStructure.TIM_RepetitionCounter = 0x0;         //設(shè)置了周期計(jì)數(shù)器值

        TIM_TimeBaseInit(TIM1,&TIM1_TimeBaseStructure);//根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位(5個(gè)參數(shù))
                                                                                                        //TIM1基本計(jì)數(shù)器設(shè)置(設(shè)置PWM頻率) //頻率=TIM1_CLK/(ARR+1)

        /* Channel 1, 2,3 and 4 Configuration in PWM mode */
        TIM1_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 
        TIM1_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
        TIM1_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;                  
        TIM1_OCInitStructure.TIM_Pulse = 0x0; 
        TIM1_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
        TIM1_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;         
        TIM1_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
        TIM1_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
          
        TIM_OC1Init(TIM1,&TIM1_OCInitStructure);          //同TimeBaseStructure        (8個(gè)參數(shù))        //TIM1_OC1模塊設(shè)置(設(shè)置1通道占空比)
        
        TIM1_OCInitStructure.TIM_Pulse = 0x7fff;
        TIM_OC2Init(TIM1,&TIM1_OCInitStructure);         //同TimeBaseStructure
        
        TIM1_OCInitStructure.TIM_Pulse = 0x0;
        TIM_OC3Init(TIM1,&TIM1_OCInitStructure);         //同TimeBaseStructure
        
        TIM1_OCInitStructure.TIM_Pulse = 0x7fff;
        TIM_OC4Init(TIM1,&TIM1_OCInitStructure);         //同TimeBaseStructure        
        
        TIM_Cmd(TIM1,ENABLE);                  //先設(shè)置好了TimeBase、OC、BDTR  使能或者失能TIM1外設(shè)
        
        /* Main Output Enable */
        TIM_CtrlPWMOutputs(TIM1,DISABLE);        //TIM1_CtrlPWMOutputs(ENABLE); 使能或者失能TIM1的主輸出

}

void zhi1(void)                //直走速度1
{
        TIM_SetCompare1(TIM1,TIM1Compare1[0]);
        TIM_SetCompare2(TIM1,TIM1Compare2[0]);
        TIM_SetCompare3(TIM1,TIM1Compare3[0]);
        TIM_SetCompare4(TIM1,TIM1Compare4[0]);
        TIM_CtrlPWMOutputs(TIM1,ENABLE);        
}

void zhi2(void)                //直走速度2(慢)
{
        TIM_SetCompare1(TIM1,TIM1Compare1[0]);
        TIM_SetCompare2(TIM1,TIM1Compare2[1]);
        TIM_SetCompare3(TIM1,TIM1Compare3[0]);
        TIM_SetCompare4(TIM1,TIM1Compare4[1]);
        TIM_CtrlPWMOutputs(TIM1,ENABLE);        
}

void zhi(void)                //直走速度3(很慢)
{
        TIM_SetCompare1(TIM1,TIM1Compare1[0]);
        TIM_SetCompare2(TIM1,TIM1Compare2[2]);
        TIM_SetCompare3(TIM1,TIM1Compare3[0]);
        TIM_SetCompare4(TIM1,TIM1Compare4[2]);
        TIM_CtrlPWMOutputs(TIM1,ENABLE);        
}

void zuoxiao(void)                   //左小轉(zhuǎn)
{
        TIM_SetCompare1(TIM1,TIM1Compare1[0]);
        TIM_SetCompare2(TIM1,TIM1Compare2[1]);
        TIM_SetCompare3(TIM1,TIM1Compare3[0]);
        TIM_SetCompare4(TIM1,TIM1Compare4[0]);
        TIM_CtrlPWMOutputs(TIM1,ENABLE);        
}

void zuoda(void)                   //左大轉(zhuǎn)
{
        TIM_SetCompare1(TIM1,TIM1Compare1[0]);
        TIM_SetCompare2(TIM1,0);
        TIM_SetCompare3(TIM1,TIM1Compare3[0]);
        TIM_SetCompare4(TIM1,TIM1Compare4[0]);
        TIM_CtrlPWMOutputs(TIM1,ENABLE);        
}

void youxiao(void)                   //右小轉(zhuǎn)
{
        TIM_SetCompare1(TIM1,TIM1Compare1[0]);
        TIM_SetCompare2(TIM1,TIM1Compare2[1]);
        TIM_SetCompare3(TIM1,TIM1Compare3[0]);
        TIM_SetCompare4(TIM1,TIM1Compare4[0]);
        TIM_CtrlPWMOutputs(TIM1,ENABLE);        
}

void youda(void)                   //右大轉(zhuǎn)
{
        TIM_SetCompare1(TIM1,TIM1Compare1[0]);
        TIM_SetCompare2(TIM1,0);
        TIM_SetCompare3(TIM1,TIM1Compare3[0]);
        TIM_SetCompare4(TIM1,TIM1Compare4[0]);
        TIM_CtrlPWMOutputs(TIM1,ENABLE);        
}

void xunji(void)                           //循跡
{        
        zhi1();
        if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7)) youxiao();        
        if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8)) zuoxiao();
        if(1)
        {
                tubecnt++;
                zhi1();
                delay_ms(100);
                zuoda();
                delay_ms(100);
        }
                        
}

u16 ceju(void)
{
        u16 juli;
        flag=0;
        GPIO_SetBits( GPIOB, GPIO_Pin_9);
        TIM_Cmd(TIM2,ENABLE);
        while(juli==0);
        juli=add*3.4;;
        flag=0;
        return juli;
}

void tim2_Configuration(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3, ENABLE);

        

……………………

…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………


路過(guò)

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

返回頂部
主站蜘蛛池模板: 伊人精品 | 在线黄色影院 | 国产午夜高清 | 在线观看中文字幕视频 | 日韩中文一区二区三区 | 精品视频在线观看 | 精精国产xxxx视频在线播放7 | 亚洲精品视频在线观看视频 | 成人一区二区三区在线观看 | 成年网站在线观看 | 日韩在线一区二区三区 | 91婷婷韩国欧美一区二区 | 五月天婷婷综合 | 91视频观看| 欧美精品一区三区 | 国产成人福利在线观看 | 成人av一区| 午夜影院在线观看 | 色综合久| 亚洲一区二区三区在线视频 | 中文字幕日韩专区 | 欧美精品福利视频 | 亚洲免费在线观看 | 亚洲 精品 综合 精品 自拍 | 精品国产99 | 国产视频一区在线 | 久久久久久国产精品免费免费男同 | 国产乱码久久久久久一区二区 | 中文日韩在线 | 在线视频 中文字幕 | 亚洲男女激情 | 亚洲欧美日本国产 | 中文字幕第二区 | 91不卡| 九九热在线观看 | 一二三四在线视频观看社区 | 激情黄色在线观看 | 国产成人免费视频网站视频社区 | 国产一区二区美女 | 日韩国产精品一区二区三区 | 成人精品一区二区三区中文字幕 |