#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <ioctl.h>
#include <apbuart.h>
#include <rtems.h>
#include <drvmgr/drvmgr.h>
#include <unistd.h>
#define size 1024
#define APBUART_databits 8
int writetoport(int fd, char *b, size_t count)
{
if(!write(fd, &b[0], sizeof(count)))
{
//printLastError();
return -1;
}
return 1;
}
int main()
{
char a[size] = {'h','e','l','l','o'};
int fd;
fd = open("/dev/apbuart2", O_WRONLY );
ioctl(fd, APBUART_SET_BAUDRATE, 9600);
ioctl(fd, APBUART_START, NULL);
ioctl(fd, APBUART_STOP, 1);
ioctl(fd, APBUART_databits, 8);
writetoport(fd, &a[size], sizeof(a));
return 0;
}
我正在研究 Aeroflex Gaisler(带有 leon2 处理器的 RTEMS)。尝试通过 UART 接口发送字符。但我无法发送角色。下面是代码行。
#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <ioctl.h>
#include <apbuart.h>
#include <rtems.h>
#include <drvmgr/drvmgr.h>
#include <unistd.h>
#define size 1024
#define APBUART_databits 8
int writetoport(int fd, char *b, size_t count)
{
if(!write(fd, &b[0], sizeof(count)))
{
//printLastError();
return -1;
}
return 1;
}
int main()
{
char a[size] = {'h','e','l','l','o'};
int fd;
fd = open("/dev/apbuart2", O_WRONLY );
ioctl(fd, APBUART_SET_BAUDRATE, 9600);
ioctl(fd, APBUART_START, NULL);
ioctl(fd, APBUART_STOP, 1);
ioctl(fd, APBUART_databits, 8);
writetoport(fd, &a[size], sizeof(a));
return 0;
}
我根据回复更改了我的代码,然后它也不起作用。