标题:
PIXY视觉追踪程序
[打印本页]
作者:
湘江旧迹秋心
时间:
2019-6-29 11:29
标题:
PIXY视觉追踪程序
pixy视觉追踪模块,使用串口通信,只需在主程序调用即可。
源程序如下:
#include "pixy/pixy.h"
uint16_t a,b,c,d,e;
uint8_t Raw_Data[40];//原始数据大包,为解串准备
uint8_t counter;//计数用
void usart2_init(u32 baudRate)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);
//UART2 GPIO TX配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
//UART2 GPIO RX配置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &GPIO_InitStructure);
//UART 数据格式配置
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;
USART_InitStructure.USART_BaudRate = baudRate;
USART_Init(USART2, &USART_InitStructure);
//中断配置
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_Cmd(USART2, ENABLE); //使能串口
USART_ClearFlag(USART2, USART_FLAG_TC);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启相关中断
//Usart NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;//串口2中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//抢占优先级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority =0; //子优先级0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、
}
void USART2_IRQHandler(void) //Pixy_Uart_ReadData
{
int i;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //等待读取数据寄存器DR
{
USART_ClearITPendingBit(USART2,USART_IT_RXNE);
Raw_Data[counter] = USART_ReceiveData(USART2);
counter++;
if(counter == 40)
{
counter=0; //重新回数组头
for(i=0;i<40;i++) //计算更新一次坐标
{
if((Raw_Data[i] == 0x55)&&(Raw_Data[i+1] == 0xaa)&&(Raw_Data[i+2] == 0x55)&&(Raw_Data[i+3] == 0xaa))
{
a= Raw_Data[i+6] + Raw_Data[i+7]*256; // a 颜色代号
b= Raw_Data[i+8] + Raw_Data[i+9]*256; // b X坐标
c= Raw_Data[i+10] + Raw_Data[i+11]*256; // c Y坐标
d= Raw_Data[i+12] + Raw_Data[i+13]*256; // d width
e= Raw_Data[i+14] + Raw_Data[i+15]*256; // e height
break; // 跳出for循环
}
}
}
}
}
复制代码
所有资料51hei提供下载:
pixy.zip
(1.67 KB, 下载次数: 13)
2019-6-29 11:29 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1