常驻嘉宾
- 积分
- 4946
- 威望
- 2641
- 贡献
- 1439
- 兑换币
- 1337
- 注册时间
- 2014-8-31
- 在线时间
- 433 小时
- 毕业学校
- 河海大学
|
1贡献
采集陀螺仪AD显示至虚拟示波器,只有到200+的值而已。我觉得是我对各种数据类型和串口发送的函数还不够了解。我用的是野火的旧库,示波器用的是山外的多功能调试助手,希望大家能指点指点。void main()
{
...........省略之前琐碎
while(1)
{
var=0; //将采集的加速度值清零重新采集
gyro=0; //将采集的陀螺仪值清零重新采集
for(i=0;i<20;i++)
{
var=var+ad_once (ADC1,SE7a,ADC_8bit); //在ADC1_SE6a上采样二十次8位精度加速度计
gyro=gyro+ad_once (ADC1,SE6a,ADC_8bit); //在ADC1_SE7a上采样二十次8位精度陀螺仪
}
var=var/20; //AD值取20次取平均值
gyro=gyro/20;
vcan_sendware((uint8_t *)&var,(uint8_t *)&gyro,sizeof(var));
}
}
void vcan_sendware(uint8 *addr1,uint8 *addr2 , uint32 waresize) //发送一次数据(双通道)
{
#define CMD_WARE 3
uint8 cmdf[2] = {CMD_WARE, ~CMD_WARE}; //串口调试 使用的前命令
uint8 cmdr[2] = {~CMD_WARE, CMD_WARE}; //串口调试 使用的后命令
uart_sendN(UART1,cmdf,sizeof(cmdf)); //先发送前命令
uart_sendN(UART1,addr1,8); //发送数据1
time_delay_ms(10);
uart_sendN(UART1,addr2,8); //发送数据2
uart_sendN(UART1,cmdr,sizeof(cmdr)); //发送后命令
}
|
|