昨天刚拿到F103指南者这块板子,初学者想要做一个程序,是一个外部雷达模块通过异步串行接口输入位置信息, 然后经过判断触发不同的相应功能(蜂鸣器、LED)。位置信息格式如下:
0xff,0xff,0xff,0x**,0x**,0x00,0x00,0x00
前三组 0xff 是数据头,接下来的 0x**是 16 位距离信息的高 8位,第二个 0x**是距离信息的低 8 位。共 16 位的二进制数据表示目标的距离,单位是 cm。接下来的三组 0x00 是数据尾。串口采用通讯格式为 1 位启始位,8 位数据位,1 为停止位,无奇偶校验。
然后我根据手册和教程的Usart1触发LED灯的程序更改了一下,主程序如下:
#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_usart.h"
#include "./beep/bsp_beep.h"
void Delay(__IO u32 nCount);
uint16_t ucTemp1;
int main(void)
{
int i=0;
uint16_t a,b;
while(1)
{
ucTemp1=USART_ReceiveData(DEBUG_USARTx);
if(ucTemp1==0xff)
{
i++;
}
if(i==3)
{
a=(ucTemp1<< 8)&0xFF00;
}
if(i==4)
{
b=(ucTemp1&0xFF)|a;
if(0x64<b&&b<0x2BC)
{
BEEP( ON );
Delay(0x0FFFFF);
LED_RGBOFF;
}
else
{
BEEP( OFF );
Delay(0x0FFFFF);
LED_RED;
}
i=0;
}
}
}
void Delay(__IO uint32_t nCount) //延时函数
{
for(; nCount != 0; nCount--);}没有报错,但为什么最后运行起来没反应。。希望有大神能帮我看下。一点头绪也没有。 |