历史上的今天
返回首页

历史上的今天

今天是:2024年11月26日(星期二)

正在发生

2018年11月26日 | TQ2440裸奔程序:串口UART打印printf测试程序

2018-11-26 来源:eefocus

  //=========================================


  // NAME: main.c


  // DESC: TQ2440串口UART打印printf测试程序


  //=========================================


  

  #include "def.h"


  #include "option.h"


  #include "2440addr.h"


  #include


  #include


  static volatile int uart_port = 0;


  void uart_init(int pclk,int buad,int ch)


  {


  //UART初始化:端口使能、功能设定、波特率、设置数据格式


  rGPHCON = (rGPHCON & ~(0xfff<<4)) | (0xaaa<<4);//端口RX[0:2]、TX[0:2]功能


  rGPHUP = rGPHUP | (0x7<<1); //端口GPH[1:3]禁止上拉


  rUFCON0 = 0x0; //禁止FIFO


  rUFCON1 = 0x0; //禁止FIFO


  rUFCON2 = 0x0; //禁止FIFO


  rUMCON0 = 0x0; //禁止AFC


  rUMCON1 = 0x0; //禁止AFC


  //Normal:No parity:One stop:8-bits 中断响应 UART clock: PCLK


  rULCON0 = (rULCON0 & ~0xff) | ((0x0<<6)|(0x0<<3)|(0x0<<2)|(0x3));


  rUCON0 = (rUCON0 & ~0x3ff) | ((0x1<<9)|(0x1<<6)|(0x1<<2)|(0x1));


  rUBRDIV0 = ((int)(pclk/16./buad+0.5)-1);


  rULCON1 = (rULCON1 & ~0xff) | ((0x0<<6)|(0x0<<3)|(0x0<<2)|(0x3));


  rUCON1 = (rUCON1 & ~0x3ff) | ((0x1<<9)|(0x1<<6)|(0x1<<2)|(0x1));


  rUBRDIV1 = ((int)(pclk/16./buad+0.5)-1);


  rULCON2 = (rULCON2 & ~0xff) | ((0x0<<6)|(0x0<<3)|(0x0<<2)|(0x3));


  rUCON2 = (rUCON2 & ~0x3ff) | ((0x1<<9)|(0x1<<6)|(0x1<<2)|(0x1));


  rUBRDIV2 = ((int)(pclk/16./buad+0.5)-1);


  uart_port = ch; //设置串口端口号


  }


  void uart_send_byte(int data)


  {


  if(0 == uart_port)


  {


  if(data == 'n')


  {


  while(!(rUTRSTAT0 & 0x2));


  rUTXH0 = 'n';


  }


  while(!(rUTRSTAT0 & 0x2));


  rUTXH0 = data;


  }


  else if(1 == uart_port)


  {


  if(data == 'n')


  {


  while(!(rUTRSTAT1 & 0x2));


  rUTXH1 = 'n';


  }


  while(!(rUTRSTAT1 & 0x2));


  rUTXH1 = data;


  }


  else if(2 == uart_port)


  {


  if(data == 'n')


  {


  while(!(rUTRSTAT2 & 0x2));


  rUTXH2 = 'n';


  }


  while(!(rUTRSTAT2 & 0x2));


  rUTXH2 = data;


  }


  }


  void uart_send_string(char *string)


  {


  while(*string)


  {


  uart_send_byte(*string++);


  }


  }


  void uart_printf(char *fmt,...)


  {


  va_list ap;


  char string[256];


  va_start(ap,fmt);


  vsprintf(string,fmt,ap);


  uart_send_string(string);


  va_end(ap);


  }


  void Main(void)


  {


  int plck_val = 50000000;


  int buad_val = 115200;


  int ch_val = 0;


  uart_init(plck_val,buad_val,ch_val);


  uart_printf("PCLK is %d,buad is %d,uart_port is %d n",plck_val,buad_val,ch_val);


  while(1);


  }

推荐阅读

史海拾趣

长工微电子公司的发展小趣事

长工微电子的发展得到了行业内外的高度认可。自成立以来,公司荣获了多项荣誉,包括广东省科技型中小企业、松山湖集成电路设计企业、国家高新技术企业、最具潜力中国模拟IC设计公司、中国集成电路创新创业大赛总决赛第二名等。这些荣誉不仅彰显了公司的实力,也为公司的发展注入了强大的动力。

API Technologies公司的发展小趣事

API Technologies一直注重技术创新和研发投入。公司不断引进先进的生产设备和技术人才,加大对新产品、新技术的研发力度。通过不断的技术创新,API Technologies成功推出了一系列具有自主知识产权的高性能产品,不仅提升了公司的核心竞争力,也为公司的持续发展注入了新的动力。

Advanced Pressure Technology公司的发展小趣事

随着销售量的持续增长,APT公司很快便超出了其初始设施的产能。为了满足市场需求,公司于1992年迁至加利福尼亚州纳帕市的一座占地36,000平方英尺的工厂,并配备了2,000平方英尺的100级洁净室。新工厂的启用为APT公司提供了更大的发展空间,也进一步提升了其产品质量和产能。同时,APT公司始终致力于技术创新,不断推出适应市场需求的新产品,进一步巩固了其在气体输送领域的领先地位。

Bud Industries公司的发展小趣事

随着销售量的持续增长,APT公司很快便超出了其初始设施的产能。为了满足市场需求,公司于1992年迁至加利福尼亚州纳帕市的一座占地36,000平方英尺的工厂,并配备了2,000平方英尺的100级洁净室。新工厂的启用为APT公司提供了更大的发展空间,也进一步提升了其产品质量和产能。同时,APT公司始终致力于技术创新,不断推出适应市场需求的新产品,进一步巩固了其在气体输送领域的领先地位。

Daykin Electric Corp公司的发展小趣事

在1924年,大金工业株式会社成功合成了碳氟化合物,并在随后的18年里,这项技术逐渐成熟并开始批量生产。这一突破性的技术不仅为大金在化学领域奠定了坚实的基础,也为公司后续在家用空调市场的进军提供了技术支持。

Excel Cell Electronic Co Ltd公司的发展小趣事

品质是ECE公司的生命线。公司始终坚持“品质至上”的原则,从原材料采购到生产流程控制,再到产品检验和售后服务,都严格按照国际标准执行。为了提升品质管理水平,ECE公司引进了先进的品质管理系统,加强了对生产过程的监控和评估。同时,公司还定期对员工进行品质管理培训,提高员工的质量意识和技能水平。这些措施使ECE公司的产品质量得到了显著提升,赢得了客户的广泛赞誉。

问答坊 | AI 解惑

GSM基站的优化建设[推荐]

引用《移动在线》 GSM数字移动通信发展非常迅速,从早期规划的大区制,到后来的小区制,直到现在的微蜂窝、微微蜂窝,相对应的天线从早期架设在屋面铁塔上,到后来天线降到屋面上,直到现在要把天线设置在屋面下的外墙侧面上。所有的这些变化都说 ...…

查看全部问答>

印制电路板(转)PS:谁还有PCB的有关知识,劳驾补充学习下~

印制电路板,又称印刷电路板,印刷线路板,英文简称PCB或PWB,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的提供者。由于它是采用电子印刷术制作的,故被称为“印刷”电路板。 历史 印制电路板的发明者是奥地利人保罗·爱斯 ...…

查看全部问答>

LM3S 系列单片机休眠与深度休眠应用笔记(二)

1.4 深度睡眠模式设置步骤 处理通过调用WFI 指令即可进入睡眠模式,但要进入深度睡眠实现最低的功耗需要正确配置,其步骤如下: 1. 使能ACG 自动时钟门控。这样睡眠模式和深度睡眠模式的外设时钟可以单独控制。 2. 配置寄存器DCGC0、 DCGC1 和DC ...…

查看全部问答>

烧写完WINCE5.0后,显示屏不停的开关,启动不了

    新买的博创公司的270A开发板,用的是pxa270芯片,我按照它上面的介绍烧写WINCE5.0后,发现显示屏不停的开关,并没有出现像他们说的烧写完后自动运行.下面是超级终端出现的代码,各位帮忙解答一下,我对这是个绝对的菜 FlashWrite: dwLengt ...…

查看全部问答>

高分求一源码

哪位哥们有sirf atlasIII的BSP呀?,发一份给我好吗?我的QQ是648433648,邮箱:sunboyljp@163.com,不弟不胜感谢!…

查看全部问答>

51单片机的全局变量在主程序中输入值改变后,在中断中却没有改变

  我的主程序中,在AD转换后赋值一全局变量,在输入值改变后,它是随着改变的,在串口中断中发送给上位机,中断发出的值为什么不随输入的改变而改变呢?请有经验的人给以指点.非常感谢!!…

查看全部问答>

wince怎么编译这么慢

我用WINCE60的platform builder去编译一个IMAGE,每次都很慢,。。。。…

查看全部问答>

求字模提取软件

大家有好用的字模提取软件吗?我手里有几个不过功能不太全想求一个:功能全的,能设置字体的等等…

查看全部问答>

求教数据存储问题

MSP430F449中我想把一个整形的数A存入某地方 掉电也不丢失! 作为以后程序运行的参数。 应该是放在FLASH里面吧?或者建议是在哪儿? 怎么写和读? 应该读写各一句话就能搞定的吧?不是例子里面那么复杂!! 求给个例子或者指个方向 谢谢 ...…

查看全部问答>

请问广州哪里有零售漆包线、绝缘纸和绝缘漆的地方??

本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 请问广州哪里有零售漆包线、绝缘纸和绝缘漆的地方?? 昨天下午走了一下午,传说中有这些东西的解放中,都没看见有卖忘各位朋友指出哪里有得买  …

查看全部问答>