[C] 1 →→→→→进入此内容的聊天室

来自 1, 2026-04-27, 写在 C, 查看 5 次.
URL http://www.code666.cn/view/19fd1216
  1. #include "stm32f10x.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include "tcs.h"
  5. #include "timer.h"
  6. #include"stdbool.h"
  7. #include "delay.h"
  8.  
  9. #define QTI1_Pin   GPIO_Pin_0
  10. #define QTI2_Pin   GPIO_Pin_1
  11. #define QTI3_Pin   GPIO_Pin_2
  12. #define QTI4_Pin   GPIO_Pin_3
  13. #define QTI15_Pin  GPIO_Pin_15
  14.  
  15.  
  16.  
  17. #define leftservo    GPIO_Pin_6
  18. #define rightservo   GPIO_Pin_7
  19.  
  20. /* -------------------------颜色传感器引脚电平控制定义--------------------------------------*/
  21. #define S0_Write_1()     GPIO_SetBits(GPIOE,GPIO_Pin_4) //写1
  22. #define S0_Write_0()     GPIO_ResetBits(GPIOE,GPIO_Pin_4) //写0
  23. #define S1_Write_1()     GPIO_SetBits(GPIOE,GPIO_Pin_5)
  24. #define S1_Write_0()     GPIO_ResetBits(GPIOE,GPIO_Pin_5)
  25. #define S2_Write_1()     GPIO_SetBits(GPIOE,GPIO_Pin_6)
  26. #define S2_Write_0()     GPIO_ResetBits(GPIOE,GPIO_Pin_6)
  27. #define S3_Write_1()     GPIO_SetBits(GPIOE,GPIO_Pin_8)
  28. #define S3_Write_0()     GPIO_ResetBits(GPIOE,GPIO_Pin_8)
  29. #define LED_Write_1()    GPIO_SetBits(GPIOE,GPIO_Pin_10)
  30. #define LED_Write_0()    GPIO_ResetBits(GPIOE,GPIO_Pin_10)
  31. //OUT 接到PD2
  32.  
  33.  
  34.  /*********读取QTI的电平宏定义*******/
  35. #define PE0_ReadBit()   GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_0)//读PE0上的值
  36. #define PE1_ReadBit()   GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_1)//读PE1上的值
  37. #define PE2_ReadBit()   GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//读PE2上的值
  38. #define PE3_ReadBit()   GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读PE3上的值
  39.  
  40. #define Yellow 3
  41. #define White  1
  42. #define Red    4
  43. #define Black  2
  44. #define Blue   5
  45.  
  46.  
  47. extern int count_tcs230;
  48.  
  49.  
  50. /************************************函数声明************************/
  51. void BlueCarry(void);              //搬蓝色色块到分数区
  52. void BlackCarry(void);             //搬黑色色块到分数区
  53. void YellowCarry(void);            //搬黄色色块到分数区
  54. void WhiteCarry(void);             //搬白色色块到分数区
  55. void RedCarry(void);                //搬红色色块到分数区
  56.  
  57. /*---------------------------------结构变量、宏定义、变量、常量定义------------------------------------------------------------------------------*/
  58. ErrorStatus HSEStartUpStatus;
  59. GPIO_InitTypeDef GPIO_InitStructure;
  60. TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  61. TIM_OCInitTypeDef  TIM_OCInitStructure;
  62. TIM_ICInitTypeDef  TIM_ICInitStructure;
  63. EXTI_InitTypeDef EXTI_InitStructure;
  64. NVIC_InitTypeDef NVIC_InitStructure;
  65. USART_InitTypeDef USART_InitStructure;
  66. USART_ClockInitTypeDef USART_ClockInitStructure;
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. int f_flag=1;
  74. int g_flag=0;
  75. int h_flag=1;
  76. int i_flag=0;
  77.  
  78.  
  79.  
  80. volatile u16 times;
  81. volatile unsigned int time;            
  82.  
  83. char process=0;
  84. char Ahavesome = 1;//A有无色块标志   //比赛时候可以直接将抽到点的标志全部置1
  85. char Bhavesome = 1;//B有无色块标志
  86. char Chavesome = 1;//C有无色块标志
  87. char Dhavesome = 1;//D有无色块标志
  88. char Ehavesome = 1;//E有无色块标志
  89. char Fhavesome = 0;//F有无色块标志
  90. char Ghavesome = 0;//G有无色块标志
  91. char Hhavesome = 0;//H有无色块标志
  92. char Ihavesome = 0;//I有无色块标志
  93.  
  94. char pointsth=0;//在直线上放第几个色块
  95. char findsekuai = 0;// 已经搬运色块的总个数
  96.  
  97. //char pointsth=3;//在直线上放第几个色块
  98. //char findsekuai = 3;// 已经搬运色块的总个数
  99.  
  100.  
  101.  
  102.  
  103. char Idone=0;
  104. char sekuai = 5;//色块的总个数
  105. u16 pcolor[3]={0,0,0};//颜色传感器的比例因子
  106. u16 RGB[3]={0,0,0};
  107. int hadedone = 1;
  108. unsigned char QTIS;//循线的QTI状态
  109.  
  110. unsigned int color =0;//颜色代表值
  111.  
  112. unsigned int distance=0;//超声波测距
  113.  
  114. unsigned int speed=0;//电机速度
  115. unsigned int pulses=0;//脉冲数
  116. bool colorCheck = true;
  117. volatile char i=0,j=0;
  118. unsigned int i1=0;
  119. unsigned int goal=38;     //搬运到目标点计分区的参数   //数值越大表步数约长
  120. unsigned int a=0;        //用来判断搬fg  和hi颜色是  需要修正的方向
  121. int count = 1;                //颜色识别次数计数
  122. int LRp = 12;
  123. int aim = 7;
  124. bool have=true;
  125. /*************************************
  126.   * @brief  Configure peripheral RCC.
  127.   * @param  None
  128.   * @retval None
  129.   ************************************/
  130. void RCC_Configuration(void)
  131. {
  132.         /* 将外设RCC寄存器重设为默认值,即有关寄存器复位,但该函数不改禦CC_CR的HSITRIM[4:0]位,也不重置寄存器RCC_BDCR和寄存器RCC_CSR */
  133.         RCC_DeInit();
  134.         /* 使能外部HSE高速晶振 */
  135.         RCC_HSEConfig(RCC_HSE_ON);
  136.         /* 等待HSE高速晶振稳定,或者在超时的情况下退出 */
  137.         HSEStartUpStatus = RCC_WaitForHSEStartUp();
  138.         /* SUCCESS:HSE晶振稳定且就绪,ERROR:HSE晶振未就绪 */
  139.         if(HSEStartUpStatus == SUCCESS)
  140.         {
  141.                 /* 使能flash预取指令缓冲区。这两句跟RCC没直接关系 */
  142.                 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
  143.                 /* 设置FLASH存储器延时时钟周期数,2是针对高频时钟的,
  144.                 FLASH_Latency_0:0延时周期,FLASH_Latency_1:1延时周期
  145.                 FLASH_Latency_2:2延时周期 */
  146.                 FLASH_SetLatency(FLASH_Latency_2);
  147.                 /* HCLK=SYSCLK 设置高速总线时钟=系统时钟 */
  148.                 RCC_HCLKConfig(RCC_SYSCLK_Div1);
  149.                 /* PCLK1=HCLK/2 设置低速总线1时钟=高速时钟的二分频*/
  150.                 RCC_PCLK1Config(RCC_HCLK_Div2);
  151.                 /* PCLK2=HCLK 设置低速总线2时钟=高速总线时钟 */
  152.                 RCC_PCLK2Config(RCC_HCLK_Div1);
  153.                 /* Set PLL clock output to 72MHz using HSE (8MHz) as entry clock */
  154.                 /* 利用锁相环将HSE外部8MHz晶振9倍频到72MHz */
  155.                 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
  156.                 /* Enable PLL:使能PLL锁相环 */
  157.                 RCC_PLLCmd(ENABLE);
  158.                
  159.                  /* Wait till PLL is ready:等待锁相环输出稳定 */
  160.      /* RCC_FLAG_HSIRDY:HSI晶振就绪,RCC_FLAG_HSERDY:HSE晶振就绪
  161.         RCC_FLAG_PLLRDY:PLL就绪,RCC_FLAG_LSERDY:LSE晶振就绪
  162.         RCC_FLAG_LSIRDY:LSI晶振就绪,RCC_FLAG_PINRST:引脚复位
  163.         RCC_FLAG_PORRST:POR/PDR复位,RCC_FLAG_SFTRST:软件复位
  164.         RCC_FLAG_IWDGRST:IWDG复位,RCC_FLAG_WWDGRST:WWDG复位
  165.         RCC_FLAG_LPWRRST:低功耗复位 */
  166.                 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)      ;
  167.                
  168.                  /* Select PLL as system clock source:将锁相环输出设置为系统时钟 */
  169.      /* RCC_SYSCLKSource_HSI:选择HSI作为系统时钟
  170.         RCC_SYSCLKSource_HSE:选择HSE作为系统时钟
  171.         RCC_SYSCLKSource_PLLCLK:选择PLL作为系统时钟*/
  172.                 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  173.                  /* 等待PLL作为系统时钟标志位置位 */
  174.      /* 0x00:HSI作为系统时钟;0x04:HSE作为系统时钟
  175.         0x08:PLL作为系统时钟 */
  176.                 while(RCC_GetSYSCLKSource() != 0x08);  
  177.         }
  178.        
  179.          /* Enable GPIOA~E and AFIO clocks:使能外围端口总线时钟。注意各外设的隶属情况,不同芯片和开发板的分配不同*/
  180.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|
  181.                                                                                                         RCC_APB2Periph_GPIOB|
  182.                                                                                                         RCC_APB2Periph_GPIOC|
  183.                                                                                                         RCC_APB2Periph_GPIOD|
  184.                                                                                                         RCC_APB2Periph_GPIOE|
  185.                                                                                                         RCC_APB2Periph_AFIO, ENABLE);

回复 1 rss

标题 提交人 语言 时间
Re: 1 1 c 2 天 前.

回复 "1"

这儿你可以回复上面这条便签

captcha