我的问题:
串口不能收到0xFF和0x00 ,请问这是为什么?若要收到0xFF和0x00 ,请问要怎样做?
问题现象:
芯片型号:AT32F403ACGU7;
支持包版本:0.0.9;
系统版本:4.1.0;
串口版本:V1;
(程序功能是发送接收到的数据,但如下图所示,单片机收不到0x00和0xFF)
(目前已知串口能正常发送0xFF和0x00,因为尝试在程序中写死发送的数据后,电脑端能正常收到0x00和0xFF,所以可以确定串口是收不到0x00和0xFF。)
我的代码:
#include <rtthread.h>
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#include <rtdevice.h>
#include "drv_common.h"
#include <rtdef.h>
#include "drivers/serial.h"
rt_device_t Uart1_dev;//定义一个设备对象/指向设备结构体的指针,用来接收查找到的对象。
struct serial_configure u1_configure = RT_SERIAL_CONFIG_DEFAULT;//定义串口配置结构体并初始化为系统默认配置
static rt_err_t rx_callback(rt_device_t dev,rt_size_t size)//实现串口接收中断回调函数
{
rt_uint64_t dat; //定义一变量,用于接收串口的数据
rt_device_read(Uart1_dev, 0, &dat, 8); //将从串口读取的数据保存到变量中
rt_device_write(Uart1_dev, 0, &dat, 8); //将变量中的数据从串口发出
return RT_EOK;
}
int main(void)
{
rt_pin_mode(GET_PIN(A,9), PIN_MODE_OUTPUT );
rt_pin_mode(GET_PIN(A,10), PIN_MODE_OUTPUT );
Uart1_dev = rt_device_find("uart1");//查找名称为uart1的设备
rt_device_close(Uart1_dev);
rt_device_set_rx_indicate(
Uart1_dev,
rx_callback
);//设置串口的中断接收回调函数
rt_device_control(
Uart1_dev,
RT_DEVICE_CTRL_CONFIG,
(void*)&u1_configure
);
rt_device_open(Uart1_dev,RT_DEVICE_FLAG_INT_RX);//将串口以读写并且中断接收模式开启。
while(1)
{
rt_thread_mdelay(20);
}
return 0;
}
试了一下,发现问题与“串口设备和控制台都用相同的串口”有关,会有冲突。但是如果我就是想要在程序中不使用控制台应该如何实现?`
更多回帖