精华内容
下载资源
问答
  • STM32F4 六串口初始化程序
  • MSC121 串口初始化程序

    2010-08-19 16:01:21
    MSC1211 串口初始化程序 ADC 初始化程序
  • 串口初始化程序生成器 能够自动生成C程序 方便快捷
  • STC12C5420AD有多好我不说了,带上串口初始化程序
  • 有没有人用的凌阳单片机啊,求一份UART初始化的程序,我用的领养单片机控制GPRS发短信,但短信老是发不出去,我想着可能是串口初始化失败了,有木有人有程序
  • 串口初始化程序自动生成小工具,绿色免安装版
  • 首先对串口进行初始化 1.引脚设置(初始化对应的GPIO口为TX或RX) 2.数据格式设置(ULCON0,串口线控制器0) 3.工作模式设置(UCON0,串口控制器) 4.波特率设置(UBRDIV0用来存用公式计算出来的整数部分,UDIVSLOT...
    这里用串口来实现从电脑键盘读取数据,显示在中断上面

    首先对串口进行初始化
    1.引脚设置(初始化对应的GPIO口为TX或RX)
    2.数据格式设置(ULCON0,串口线控制器0)
    3.工作模式设置(UCON0,串口控制器)
    4.波特率设置(UBRDIV0用来存用公式计算出来的整数部分,UDIVSLOT0用来存放公式计算出来的小数部分超标得到的数据)
    公式如下
    UBRDIV0=(int)(PCLK/(BAUD*16)-1)

    #define PCLK 66000000 //PCLk是用来供串口用的时钟
    #define BAUD 115200
    void uart_init()
    {
    GPACON|=0x22;
    ULCON0=0x3;
    UCON0=0x5;
    UBRDIV0=(int)(PCLK/(BAUD*16)-1);
    UDIVSLOT0=0x0D5D5;
    }

    进行发送数据的操作
    先判断串口是否在发送数据(即忙检测,UTRSTAT0),如果不是忙,就往UTXH0里写入要发送的数据
    void putc(unsigned char ch)
    {
    while(!(UTRSTAT0&(0b1<<2)));
    UTXH0=ch;
    }

    进行读数据的操作
    与发送类似,先判断忙,若不忙,则从URXH0里面读出数据就可以了
    unsigned char getc()
    {
    unsigned char dat;
    while(!(UTRSTAT0&(0b1<<0)));
    dat=URXH0;
    return dat;
    }

    如果我们要在中断控制台想看到当键盘输入一个字符,屏幕就显示这个字符,可以加上如下代码
    unsigned char getc()
    {
    unsigned char dat;
    while(!(UTRSTAT0&(0b1<<0)));
    dat=URXH0;
    if ((dat==0x0d)||(dat==0x0a))
    {
       putc(0x0d);
       putc(0x0a);
    }      
    else
    putc(dat);
    return dat;
    }

    在这里特别强调,在宏定义里面的千万注意是long,short,还是char,一旦定义出错,检查起来很难会去注意这个地方;
    还有就是在判断不等于0时,千万注意括号的位置,不要多,不要少,我在写这段代码时,就因为while(!(UTRSTAT0&(0b1<<0)))这一句没有把UTRSTAT0&(0b1<<0)这一句括起来,就出现键盘输入一个字符,屏幕出来一大堆的情况,检查了半天也检查不出问题所在吗,最好还是一句一句代码对应厂家给的代码才注意到
    最后附上全部代码
    和main函数代码


    #define GPACON *((volatile unsigned short*)0x7F008000)
    #define ULCON0 *((volatile unsigned long*)0x7F005000)
    #define UCON0  *((volatile unsigned long*)0x7F005004)
    #define UBRDIV0 *((volatile unsigned short*)0x7F005028)
    #define UDIVSLOT0 *((volatile unsigned short*)0x7F00502C)
    #define UTRSTAT0 *((volatile unsigned long*)0x7F005010)
    #define UTXH0 *((volatile unsigned char*)0x7F005020)
    #define URXH0 *((volatile unsigned char*)0x7F005024)

    #define PCLK 66000000
    #define BAUD 115200

    void uart_init()
    {
    GPACON|=0x22;
    ULCON0=0x3;

    UCON0=0x5;
    UBRDIV0=(int)(PCLK/(BAUD*16)-1);
    UDIVSLOT0=0x0D5D5;
    }

    void putc(unsigned char ch)
    {
    while(!(UTRSTAT0&(0b1<<2)));
    UTXH0=ch;
    }

    unsigned char getc()
    {
    unsigned char dat;
    while(!(UTRSTAT0&(0b1<<0)));
    dat=URXH0;
    if ((dat==0x0d)||(dat==0x0a))
    {
       putc(0x0d);
       putc(0x0a);
    }      
    else
    putc(dat);
    return dat;
    }



    **************************************************************************************************************



    unsigned char p[13]="I am iron man";

    void gboot_main()
    {
    int i;
    unsigned char temp[4*1024];
    #ifdef MMU_ON
    mmu_init();
    #endif
    led_off();
    button_init();
    irq_init();
    uart_init();
    putc(0x0a);
    for(i=0;i<13;i++)
    putc(p[i]);
    while(1)
    {
    getc();
    }

    }
    我是iron man粉丝=3=!!

    展开全文
  • 串口初始化C程序

    2014-07-03 11:36:17
    提供一个串口初始化程序,在linux上调试时方便
  • 串口初始化

    千次阅读 2016-04-06 18:07:40
    在开发过程中常用的串口初始化程序,以及封装的字符串发送函数 #include #include #include #include #include #include #include #include static struct termios option_old; /**********************...

    在开发过程中常用的串口,初始化程序,以及封装的字符串发送函数

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <termios.h>
    #include <string.h>
    
    static struct termios option_old;
    
    /************************************************************
     *函数名称:	int uart_init(char *devname)
     *函数功能:	串口初始化程序
     *函数参数:	devname 串口设备文件序号
     *函数返回:	串口设备文件描述符
     ***********************************************************/
    int uart_init(char *devname)
    {
    	int uart_fd;
    	struct termios option_new;
    	
    	uart_fd = open(devname, O_RDWR|O_NDELAY); //O_NDELAY 不阻塞
    	if(uart_fd < 0)
    	{
    		DebugL("open_dev error!");
    		_exit(-1);
    	}
    	tcgetattr(uart_fd, &option_old);		//保存串口属性
    	tcgetattr(uart_fd, &option_new);
    
    	cfsetispeed(&option_new, B115200);		//波特率为115200
    	cfsetospeed(&option_new, B115200);		//波特率为115200
    	/*option_new.c_cflag &= ~CSIZE;			//设置数据位时先关闭历史设置
    	option_new.c_cflag |= CS8;				//数据位为8位
    	option_new.c_cflag &= ~CSTOPB;			//1位停止位
    	option_new.c_cflag &= ~PARENB;			//无奇偶校验位
    	option_new.c_lflag &= ~(ICANON);		//非标准模式
    	// option_new.c_lflag &= ~ECHO;			//关回显,在使用GPRS模组时需关回显
    	option_new.c_lflag |= ECHO;	*/			//开回显
    	
    	/***********能接收0x03的配置***************/
    	option_new.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
    	option_new.c_oflag &= ~OPOST;
    	option_new.c_cflag |= CLOCAL | CREAD;
    	option_new.c_lflag &= ~(ICANON | ECHOE | ISIG);
    	
    	tcsetattr(uart_fd, TCSANOW, &option_new);
    	return uart_fd;
    }
    
    /************************************************************
     *函数名称:	void uart_uninit(int uart_fd)
     *函数功能:	串口反初始化程序
     *函数参数:	uart_fd 串口设备文件描述符
     *函数返回:	无
     ***********************************************************/
    void uart_uninit(int uart_fd)
    {
    	/*还原串口属性*/
    	tcsetattr(uart_fd, TCSANOW, &option_old);
    	
    	/*关闭串口*/
    	close(uart_fd);
    }
    
    /************************************************************
     *函数名称: void uart_send_str(int uart_fd, char *str)
     *函数功能: 串口发送字符串
     *函数参数: uart_fd 串口设备文件描述符
     *			 str:待发送的字符
     *函数返回: 无
     ***********************************************************/
    void uart_send_str(int uart_fd, char *str)
    {
    	int ret;
    	
    	ret = write(uart_fd, str, strlen(str));
    	if(ret < 0)
    	{
    		DebugL("write error!");
    	}
    }
    


    展开全文
  • matlab串口初始化

    2018-04-26 15:24:28
    比较传统,但又有点局限性,适合串口读取,用!个例,方便识别使用,中断程序
  • 这是C2000DSP,TMS320F28027在CCS5.4环境下,的SCI串口通信初始化程序。来自广东工业大学2013届控制5班。
  • //初始化串口 #ifdef __linux__ memset(tmp,0,128); if (commtype==0) sprintf(tmp, "stty , _DEVNAME_,TCP_IP_Start - ProjectNo + SER_Start);//,1200 , "even", 1, 8); else sprintf(tmp, ...
  • 串口驱动程序设计详解---串口初始化(上)

    万次阅读 多人点赞 2016-05-19 23:51:13
    TTY驱动程序架构: 1. TTY概念解析  1.1 /dev/ttySCA0  1.2 /dev/tty1-n  1.3 /dev/console  在linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。  . 串口终端(/dev...

    TTY驱动程序架构:

    1. TTY概念解析

        1.1 /dev/ttySCA0

        1.2 /dev/tty1-n

        1.3 /dev/console

          在linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。

          . 串口终端(/dev/ttyS*)

          串口终端是使用计算机串口连接的终端设备。Linux把每个串行端口都看做是一个字符设备。这些串行端口所对应的设备名称是/dev/ttySAC*;

           .控制台终端(/dev/console)

           在Linux系统中,计算机的输出设备通常被称为控制台终端,这里特指printk信息输出到设备。/dev/console是一个虚拟的设备,它需要映射到真正的tty上,比如通过内核启动参数“console=ttySCA0”就把console映射到了串口0

          . 虚拟终端(、dev/tty*)

          当用户登录时,使用的是虚拟终端。使用Ctcl+Alt[F1 - F6]组合键时,我们就可以切换到tty1、tty2、tty3等上面去。tty*就称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名。

    2. TTY架构分析



    下面来通过一个回溯功能从内核代码来印证上面一张图的tty架构各函数调用关系!

    第一红色箭头对应的函数就是上图中的driver_write()


    上图中第二个红色箭头部分:在该函数处加上一个dump_stack函数保存然后重新编译内核

    通过tftp下载到开发板启动内核会看到串口终端打印出这个函数调用的回溯信息!

    今天电脑难产了!编译内核用了好久,之前几分钟就搞定了!


    开发板启动内核然后dmesg命令查看回溯打印的信息(这里为什么没直接打印到串口要用dmesg和printk打印级别有关)


    这里打印的比较多,仔细看其实都是重复的这里我里面的一段复制粘贴下来:

    [<c049c7c0>] (dump_stack+0x18/0x1c) from [<c0237670>] (s3c24xx_serial_start_tx+0x14/0xb4)
    [<c0237670>] (s3c24xx_serial_start_tx+0x14/0xb4) from [<c023374c>] (uart_start+0x64/0x68)
    [<c023374c>] (uart_start+0x64/0x68) from [<c0234cb4>] (uart_write+0xc0/0xe4)
    [<c0234cb4>] (uart_write+0xc0/0xe4) from [<c021dd84>] (do_output_char+0x16c/0x1d8)
    [<c021dd84>] (do_output_char+0x16c/0x1d8) from [<c021de28>] (process_output+0x38/0x54)
    [<c021de28>] (process_output+0x38/0x54) from [<c021e978>] (n_tty_write+0x204/0x444)
    [<c021e978>] (n_tty_write+0x204/0x444) from [<c021b808>] (tty_write+0x14c/0x244)
    [<c021b808>] (tty_write+0x14c/0x244) from [<c021b958>] (redirected_tty_write+0x58/0x68)
    [<c021b958>] (redirected_tty_write+0x58/0x68) from [<c00e5ca4>] (vfs_write+0xbc/0x150)
    [<c00e5ca4>] (vfs_write+0xbc/0x150) from [<c00e5e14>] (sys_write+0x44/0x74)
    [<c00e5e14>] (sys_write+0x44/0x74) from [<c002fb40>] (ret_fast_syscall+0x0/0x30)

    上面的图显示了每个函数一层一层的调用关系,对照着上面的架构分析图来看是不是?(这里再把架构图贴上来)

    这函数dump_stack()功能好强大!(要是能做成图形化界面直接显示下面的图形结构真是逆天了)

    上面的有个函数n_tty_write函数其实是线路规程里面的write!


    下面先来分析串口初始化:先上图


    内核中2440、6410的串口部分用的都是s3c24xx.. 这个函数,内部实现都差不多,肯定是内核驱动人员偷懒了!

    串口驱动分析之初始化

    总结来说最重要的有四项工作:串口初始化、串口打开、串口读取操作、串口写操作

    内核代码里面最重要和串口相关文件一个是samsung.c,一个是s3c6400.c


    1. 串口驱动程序结构

    看下面的图(下面2. 串口中的重要数据结构那张分析流程图):首先用户空间的write串口写函数找到内核中对应的数据结构


    这里可以看到用户空间的write函数对应的file_operations中的 tty_write,这里还有一些其他的常用函数

    继续对照着下面的图看tty_write对应的应该是线路规程中的tty_ldisc_ops中的函数:


    同样可以从内核代码中找到线路规程的ops数据结构:


    这里总结一下用户空间的write函数会调用系统调用接口的tty-write, 然后tty-write又会调用线路规程里面n_tty_write。

    还是对照着下面的图继续分析,可以看到n_tty_write会调用tty_operations里面的函数,内核代码中n_tty_write函数有点长,这里截了两张图:



    下面来瞅瞅tty_operations结构定义:


    由这个可以看出n_tty_write又对应着这里的uart_write函数!跳来跳去的好麻烦啊!感觉都是套路!

    下面还是继续分析uart_write庐山真面目,同样可以从下面的图中可以看到uart_write又对应着驱动里面写函数:


    这里面有几个重要的数据结构:第二第三个箭头指向的部分:这里可以看到从struct uart_state结构中拿到了port端口号uart_port, 下面再跳到uart_start(tty)函数中瞅瞅:


    继续跳:


    从上图可以看出这个函数又通过port结构跳到ops里面的函数!其实port就是uart_ops数据结构类型!上面的图中可以函数这个数据结构里面有很多的函数指针!然后就可以利用这些函数指针在驱动层来操作硬件了!

    上面要特别注意struct uart_state数据结构,把上面截图中的一行代码扣出来分析:

    struct uart_state *state = tty->driver_data;

    可以看到这个数据结构是从tty的driver_data里面来的,那么这个数据结构又是怎么放到driver_data里面去的呢?这个是uart_open函数里面做的:


    从上面的函数中可以看出从uart_open函数中拿到state 然后将state放入tty的driver_data(void*型)结构中。

    下面继续分析state是如何获得的:


    从sourceInsight中可以看到state是从driver里面uart_state的数据结构中拿到的:



    上面分析了那么多其实总结最重要的几种数据结构的包含关系可以总结如下:

    uart_driver  ------>  uart_state  ------>  uart_port  ------>  uart_ops



    2. 串口驱动中的重要数据结构


    第一步串口调用过程都是以下面这张图来分析的,上一步中所说的下图都是这下面这张图




    3. 初始化分析

    老规矩,从原有的内核源码中开始分析!重复造轮子!

    在SI中打开samsung.c

    module_init(s3c24xx_serial_modinit);
    module_exit(s3c24xx_serial_modexit);

    跳转到模块初始化函数代码部分:


    这里可以看到在模块初始化部分使用了uart_register_driver函数注册了一个串口驱动,下面来看看函数参数的类型:


    结合上面的第一步的分析和第二步的流程图看看是不是清晰多了!(这里分析的其实也是对照着上面的流程图来的)

    下面再来分析s3c6400.c文件中的模块初始化:


    继续跳:


    可以看到这个函数又调用了平台驱动注册函数(上一篇博文有详细讲解),注册平台驱动的时候,平台总线会将平台驱动和我们系统中的平台设备进行一一的匹配,如果有匹配的上的,他就会调用平台驱动的probe函数

    跳来跳去跳到这了:


    下面来细致的分析上面的函数:

    首先看第一个箭头所指的地方,看看这个结构体:


    这个数组存放的全部是uart_port的串口信息。

    然后会调用串口初始化函数:

    <span style="color:#ff0000;">ret = s3c24xx_serial_init_port(ourport, info, dev);</span>


    函数比较长这里做为两张图截了,可以看到这个函数主要是做一些初始化工作!其中比较重要的是上图中红色箭头所指部分,第一个箭头上一行首先是基地址初始化,这里使用的是静态映射(linux在启动的时候就把物理地址和虚拟地址之间的关系映射好了)!拿虚拟地址,拿中断号, 复位fifo



    跳回去继续分析probe函数:


    看看第一个箭头所指向的函数,这个函数主要建立uart_driver和uart_port之间的联系的:

    /**
     *	uart_add_one_port - attach a driver-defined port structure
     *	@drv: pointer to the uart low level driver structure for this port
     *	@uport: uart port structure to use for this port.
     *
     *	This allows the driver to register its own uart_port structure
     *	with the core driver.  The main purpose is to allow the low
     *	level uart drivers to expand uart_port, rather than having yet
     *	more levels of structures.
     */
    int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport)
    {
    	struct uart_state *state;
    	struct tty_port *port;
    	int ret = 0;
    	struct device *tty_dev;
    
    	BUG_ON(in_interrupt());
    
    	if (uport->line >= drv->nr)
    		return -EINVAL;
    
    	state = drv->state + uport->line;
    	port = &state->port;
    
    	mutex_lock(&port_mutex);
    	mutex_lock(&port->mutex);
    	if (state->uart_port) {
    		ret = -EINVAL;
    		goto out;
    	}
    
    	state->uart_port = uport;
    	state->pm_state = -1;
    
    	uport->cons = drv->cons;
    	uport->state = state;
    
    	/*
    	 * If this port is a console, then the spinlock is already
    	 * initialised.
    	 */
    	if (!(uart_console(uport) && (uport->cons->flags & CON_ENABLED))) {
    		spin_lock_init(&uport->lock);
    		lockdep_set_class(&uport->lock, &port_lock_key);
    	}
    
    	uart_configure_port(drv, state, uport);
    
    	/*
    	 * Register the port whether it's detected or not.  This allows
    	 * setserial to be used to alter this ports parameters.
    	 */
    	tty_dev = tty_register_device(drv->tty_driver, uport->line, uport->dev);
    	if (likely(!IS_ERR(tty_dev))) {
    		device_init_wakeup(tty_dev, 1);
    		device_set_wakeup_enable(tty_dev, 0);
    	} else
    		printk(KERN_ERR "Cannot register tty device on line %d\n",
    		       uport->line);
    
    	/*
    	 * Ensure UPF_DEAD is not set.
    	 */
    	uport->flags &= ~UPF_DEAD;
    
     out:
    	mutex_unlock(&port->mutex);
    	mutex_unlock(&port_mutex);
    
    	return ret;
    }

    ret = device_create_file(&dev->dev, &dev_attr_clock_source);//创建属性文件 这个驱动中会用到

    安装驱动我们在/sys/目录下看到的串口相关信息就是这个函数实现的:




    又是尼玛的跳来跳去,好几把套路卧槽!


    这里这个函数暂时就跳到这吧!心累!没完没了的!先顾大局!

    ret = s3c24xx_serial_cpufreq_register(ourport);//动态频率调节函数


    又是套路,这里暂时只要知道和cpu有关就行了,暂时放过!

    下面再来一张串口初始化分析流程图:


    至此为止整个串口初始化流程就分析完了!内核代码还真不是那么简单!

    先注册平台总线驱动,然后平台总线驱动和平台设备相匹配,匹配上了就会调用probe函数,然后probe函数就会执行一些初始化工作!

    下一篇开始着手边分析边撸代码!四步走战略:串口初始化 、打开串口、串口写操作、串口读操作

    展开全文
  • pic单片机串口初始化相关的程序命令,以18f2580单片机为例。
  • 3、初始化程序(以后使用可直接调用此初始化函数)。SYSCLK与BAUDRATE参数修改即可 void UART0_Init (void) { SCON0 = 0x10; // SCON0: 8-bit variable bit rate // level of STOP bit is // 使能RX接收 //...
  • 这个 代码主要是对串口初始化,然后有个中断子程序,每次向串口发送一个数据,串口就会把这个消息通过这个串口再次发送出去。 今天就到这里把,第二天。。。中间断了一天,慢慢把这个习惯养成把。恒。。。 ...
    又放松了一天,看了一整天的电影啊:《2012世界末日》,《异次元骇客》,《社交网络》还有几个有关IT行业的纪录片:《奔跑吧代码|code rush》《java 4-ever》预告,连续看这些比较费脑的电影感觉是很奇妙的,特别是看完《社交网络》之后,感觉马克.扎克伯格真的很帅有木有,思维根本跟不上人家的语速有没有,更别说看电影来练习英语听力了,有些人真的是有着方面的天赋,不得不承认,但是每个人都有自己的撸,自己认真走好自己的撸也是不错的,哈。。。烧了一天脑,看完后有些迷茫,总感觉花费一天一天的时间来看电影不是一个好的生活方式,但是不知道现在应该做一些什么,所以是时候分析一下从这次开学之后自己的状态了。
    首先:这个学期我的目标是什么?
    1找到可以让自己生存下来的并且是有关编程方面的事情做。2确定一下自己到底考不考研究生。2如果确定不考研,在大三学年之后,掌握一门技能,并能依靠这个来支撑自己的基本生活。
    到底是考研还是什么吗?考研的话我现在是不是就应该开始准备了。问题来了:1我想不想考研;2我适合不适合考研;3我对考研了解多少;4我有没有一起考研的朋友;5我考研的话应该考哪个专业的;6考研考哪个学校;7考研的目标是就业还是继续深造;8考研能得到什么。
    1.不想;2.感觉自己不适合,对理论方面不是很感兴趣;3不是很了解,目前的印象是可以得到一个硕士文凭,毕业以后相对本科生来好找工作,且工资刚开始会高一些,但自己算的话,本科毕业找工作工作三年可以积累不少经验,之后考研可能会比较好,而且在今天看完《code rush》以后感觉IT行业确实是吃青春饭的,能早些积累经验还是早些积累把,退休以后没事还是可以继续高研究的吗,现在就是想早些实现经济独立,25岁之后可以出国去转一转;4如果考研的话我会选择考计算机软件方面的研究生,目前是没有找到志趣相投的伙伴;5计算机软件;6浙大,西北;7就业;8文凭,对自己的认识会高一些,认识到一些非常棒的朋友。
    现在分析完了,自己是不考研了,感觉好了不少。明天开始code,基本上好看的电影都看了一遍,感觉脑子都不够用了,一天涨涨的,若爆了,哈哈。。。
    下面把今天写的code贴上(…………)
    
    #include "reg51.h"
    
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    void Usart() interrupt 4
    {
        u8 ReceiveData;
    
        ReceiveData=SBUF;
        RI=0;
        SBUF=ReceiveData;
        while(!TI); //
        TI=0;   
    }
    
    void UsartInit()
    {
        TMOD|=0X20;
        PCON|=0X80;
        SCON=0X50;//
        TH1=0XF3;
        TL1=0XF3;
        TR1=1;
        EA=1;
        ES=1;
        TR1=1;  
    }
    
    void main()
    {
        UsartInit();
        while(1);
    }

    这个 代码主要是对串口的初始化,然后有个中断子程序,每次向串口发送一个数据,串口就会把这个消息通过这个串口再次发送出去。
    今天就到这里把,第二天。。。中间断了一天,慢慢把这个习惯养成把。恒。。。

    转载于:https://www.cnblogs.com/StivenYang/p/8441338.html

    展开全文
  • rt-thread中的串口初始化过程

    千次阅读 2019-10-12 15:51:44
    上了嵌入式操作系统的程序结构复杂,所以串口初始化的过程也不如裸机程序直观明了,在需要根据实际情况修改串口时,就会存在找不到相关程序位置的现象,所以接下来,对rt-thread中的串口初始化过程进行一下梳理。...
  • 2、串口设备文件的初始化 3、串口设备文件的读写 4、串口设备文件的控制 2.串口驱动中重要的数据结构 首先分析一下串口读写的流程 当用户读写串口设备文件的时候,就会调用到usart_write函数(图中没有),...
  • 串口初始化捉虫记

    2018-02-06 22:24:41
    第一篇博客,记录一个找到BUG结果BUG变功能的悲惨的故事. 最近在做一个单片机的小项目,使用STM8的单片机,用到串口收发数据....原先程序在main.c里面对串口进行初始化,串口初始化为 void UART_Init() {
  • 串口初始化配置

    千次阅读 2016-08-22 14:34:12
    在基于AT91的嵌入式linux中接收串口数据时,发现对于接收的数据经常出现接收不完整的现象。...于是仔细看了程序中关于串口配置这一块的程序, [cpp] view plain copy int se
  • S3C6410串口可以中作在三种模式:中断,轮询,DMA;按是否使用FIFO又分为两类。 UART模块使用的IO参见下图,具体的IO配置参考 【OK6410裸机程序】点亮LED 1. 轮询模式,使用FIFO /***...
  • 串口初始化程序如下所示: 1#define UART_BPS 115200 //串口通信波特率 2U0LCR=0x83; //DLAB=1,允许设置波特率 3Fdiv=(Fpclk/16)/UART_BPS; //设置波特率 4U0DLM=Fdiv/256; //除数的高8位 5U0DLL=Fdiv%256;
  • 内容包括硬件初始化(汇编),时钟、内存、mmu、串口、led初始化(c语言),代码搬移是从垫脚石搬移到内存,不含从nandflash搬移到内存,功能:点亮led,使用printf+scanf函数调用串口程序打印输出。
  • 原生的串口串口二、初始化结构体解1.USART初始化结构体2.同步时钟初始化结构体3.编程时需要用到的固件库函数三、串口点灯代码实现1.USART .C文件2.USART.H文件3.MAIN.C四、串口收发程序代码实现1.USART .C文件2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,426
精华内容 570
关键字:

串口初始化程序