STM32C8T6 四驱循迹小车代码示例 - 简单实现
#include "stm32f10x.h"\n\n#define LEFT_FORWARD_GPIO_PIN\tGPIO_Pin_0\n#define LEFT_BACKWARD_GPIO_PIN\tGPIO_Pin_1\n#define RIGHT_FORWARD_GPIO_PIN\tGPIO_Pin_2\n#define RIGHT_BACKWARD_GPIO_PIN\tGPIO_Pin_3\n\nvoid GPIO_Configuration(void)\n{\n\tGPIO_InitTypeDef GPIO_InitStructure;\n\t\n\tRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);\n\t\n\tGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\n\tGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\n\t\n\tGPIO_InitStructure.GPIO_Pin = LEFT_FORWARD_GPIO_PIN;\n\tGPIO_Init(GPIOA, &GPIO_InitStructure);\n\t\n\tGPIO_InitStructure.GPIO_Pin = LEFT_BACKWARD_GPIO_PIN;\n\tGPIO_Init(GPIOA, &GPIO_InitStructure);\n\t\n\tGPIO_InitStructure.GPIO_Pin = RIGHT_FORWARD_GPIO_PIN;\n\tGPIO_Init(GPIOA, &GPIO_InitStructure);\n\t\n\tGPIO_InitStructure.GPIO_Pin = RIGHT_BACKWARD_GPIO_PIN;\n\tGPIO_Init(GPIOA, &GPIO_InitStructure);\n}\n\nvoid Car_Forward(void)\n{\n\tGPIO_SetBits(GPIOA, LEFT_FORWARD_GPIO_PIN);\n\tGPIO_SetBits(GPIOA, RIGHT_FORWARD_GPIO_PIN);\n\t\n\tGPIO_ResetBits(GPIOA, LEFT_BACKWARD_GPIO_PIN);\n\tGPIO_ResetBits(GPIOA, RIGHT_BACKWARD_GPIO_PIN);\n}\n\nvoid Car_Backward(void)\n{\n\tGPIO_ResetBits(GPIOA, LEFT_FORWARD_GPIO_PIN);\n\tGPIO_ResetBits(GPIOA, RIGHT_FORWARD_GPIO_PIN);\n\t\n\tGPIO_SetBits(GPIOA, LEFT_BACKWARD_GPIO_PIN);\n\tGPIO_SetBits(GPIOA, RIGHT_BACKWARD_GPIO_PIN);\n}\n\nvoid Car_Turn_Left(void)\n{\n\tGPIO_ResetBits(GPIOA, LEFT_FORWARD_GPIO_PIN);\n\tGPIO_SetBits(GPIOA, RIGHT_FORWARD_GPIO_PIN);\n\t\n\tGPIO_SetBits(GPIOA, LEFT_BACKWARD_GPIO_PIN);\n\tGPIO_ResetBits(GPIOA, RIGHT_BACKWARD_GPIO_PIN);\n}\n\nvoid Car_Turn_Right(void)\n{\n\tGPIO_SetBits(GPIOA, LEFT_FORWARD_GPIO_PIN);\n\tGPIO_ResetBits(GPIOA, RIGHT_FORWARD_GPIO_PIN);\n\t\n\tGPIO_ResetBits(GPIOA, LEFT_BACKWARD_GPIO_PIN);\n\tGPIO_SetBits(GPIOA, RIGHT_BACKWARD_GPIO_PIN);\n}\n\nvoid Car_Stop(void)\n{\n\tGPIO_ResetBits(GPIOA, LEFT_FORWARD_GPIO_PIN);\n\tGPIO_ResetBits(GPIOA, RIGHT_FORWARD_GPIO_PIN);\n\t\n\tGPIO_ResetBits(GPIOA, LEFT_BACKWARD_GPIO_PIN);\n\tGPIO_ResetBits(GPIOA, RIGHT_BACKWARD_GPIO_PIN);\n}\n\nint main(void)\n{\n\tGPIO_Configuration();\n\t\n\twhile (1)\n\t{\n\t // 在这里编写循迹代码\n\t}\n}\n\n在 main 函数中的 while(1) 循环中编写循迹代码。根据循迹传感器的信号来调用相应的函数实现小车的动作,例如调用 Car_Forward 函数让小车向前行驶,调用 Car_Turn_Left 函数让小车向左转等。具体的循迹算法和传感器的接口需要根据实际情况进行修改。
原文地址: https://www.cveoy.top/t/topic/p4lZ 著作权归作者所有。请勿转载和采集!