历史上的今天
返回首页

历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2018年09月06日 | STM3216位IO口操作的一些教训

2018-09-06 来源:eefocus

最近在用TFT屏的时候走啦不少弯路,因为TFT屏都是16位的,所以大部分的都是采用一组IO口对应16个数据位刚好并口传输数据,最近因为IO口紧缺,所以想要改成串口,但是发现串口刷新屏幕太慢所以最后改成8位的并口,但是STM32操作IO口的寄存器是16位的。也就是说用并口的话一起传输数据进去虽然只用8位但是操作还是16位一起操作,虽然有8位没用到但是还是在传输数据进去的时候被一起操作,会把不用的8位的值一起覆盖。

 #define DATAOUT(x) GPIOB->ODR=x; //数据输出

如上当调用宏的时候整个B端口一起被操作。


方法1: ODR配置法,可以直接使用 GPIO->ODR = value << N;给对应的IO口进行输出操作。
但是此时在硬件上要保证:
1.  该功能口(如GPIOA)上的其余的IO口不作为普通的IO输出口使用
2.  行列之外的GPIO口,要么是普通的IO输入口,要么是功能口。功能口就是UART、USB、PWM、ADC等,对GPIO的ODR进行操作时,不会对功能口产生影响。
也就是说比如现在选择B端口的高8位,那么8--15IO口被选择用来驱动TFT,但是0-7IO口不能在用着普通输出IO口,但是可以设置为输入,或者UART,usb,PWM,ADC等功能。
方法2
可以用位操作的方式单独对IO口进行操作,但是这样操作数据刷新速度很慢。
void WriteData(u8 data)
{
   //分别操作与液晶连接的IO口,顺序是由高位到低位
    GPIO_WriteBit(GPIO号, Pin号,(data & 0x80) >> 7 ); 
    GPIO_WriteBit(GPIO号, Pin号,(data & 0x40) >> 6 ); 
    GPIO_WriteBit(GPIO号, Pin号,(data & 0x20) >> 5 ); 
    GPIO_WriteBit(GPIO号, Pin号,(data & 0x10) >> 4 ); 
    GPIO_WriteBit(GPIO号, Pin号,(data & 0x08) >> 3 ) ; 
    GPIO_WriteBit(GPIO号, Pin号,(data & 0x04) >> 2 ); 
    GPIO_WriteBit(GPIO号, Pin号,(data & 0x02) >> 1 ); 
    GPIO_WriteBit(GPIO号, Pin号,data & 0x01);
 }
使用这种方式就不会影响到底8位,但是这样刷新速度很慢。


推荐阅读

史海拾趣

Ferraz Shawmut(Mersen)公司的发展小趣事

2007年,Ferraz Shawmut收购了美国的General Electric公司的功率熔断器部门。这一收购不仅增强了公司在功率熔断器领域的实力,也进一步巩固了其在电气保护领域的领先地位。通过整合双方的技术和资源,Ferraz Shawmut推出了更多高性能、高品质的电气保护产品。

Eska公司的发展小趣事

除了造纸业务外,Eska公司还专注于消防手套的研发与制造。50多年前,Eska就开始研发消防手套,并一直将安全性放在首位。公司严格遵循最大安全性、敏感度、耐火、切割保护、防热和防伤害等标准,确保消防手套在各种环境下都能为消防员提供可靠的保护。Eska的消防手套因其卓越的性能和质量,深受世界和欧洲消防竞技大赛冠军及参赛者的信任和喜爱。

爱特姆(ATOM)公司的发展小趣事

爱特姆在国内市场取得一定成绩后,开始积极拓展国际市场。通过与欧洲、美国等国家的知名企业建立合作关系,爱特姆的产品逐渐打入国际市场,并赢得了良好的口碑。同时,公司还积极参加国际电子展会,与全球同行交流学习,不断提升自身的国际竞争力。

Elite Semiconductor Products Inc公司的发展小趣事

随着全球对环保和可持续发展的关注度不断提高,Elite也积极响应这一趋势。公司注重环保理念在生产过程中的贯彻实施,采用环保材料和节能技术,减少生产过程中的污染排放。同时,Elite还积极参与环保公益活动,推动环保理念的普及和实践。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

博众电气(BZCN)公司的发展小趣事

博众电气深知人才是企业发展的核心力量。因此,公司高度重视人才培养和团队建设。通过引进优秀人才、建立完善的培训体系、营造良好的企业文化等措施,博众电气成功打造了一支高素质、专业化的团队。这支团队不仅为公司的发展提供了有力的人才保障,还为公司不断创新和进步注入了源源不断的动力。

这五个故事只是博众电气发展起来的冰山一角。在电子行业的激烈竞争中,博众电气凭借技术突破、质量管理体系建设、环保理念、国际化战略以及人才培养与团队建设等举措,不断壮大自身实力,逐步成为行业内的佼佼者。未来,博众电气将继续秉持创新、质量、环保、国际化和人才的理念,不断追求卓越,为实现更加辉煌的成就而努力拼搏。

Engelking Elektronik GmbH公司的发展小趣事

Engelking Elektronik一直将品质管理作为公司的核心竞争力之一。公司建立了完善的质量管理体系,从原材料采购到产品制造、测试和包装等各个环节都进行严格的质量控制。此外,公司还定期邀请第三方机构进行质量审核和评估,确保产品符合国际标准和客户要求。通过持续改进和优化生产流程,Engelking Elektronik的产品质量得到了客户的高度认可和信赖。

问答坊 | AI 解惑

1602液晶的问题

请教各位:用8253计数器得到的计数如何用1602液晶显示出来?程序应该怎样实现啊?多谢各位!!…

查看全部问答>

【Quartus告警信息】HDL设计中对目标数的设定

VerilogHDL assignment warning at <location>: truncated value with size <number> to match size of target (<number>原因:在HDL设计中对目标的位数进行了设定,如:reg[4:0] a;而默认为32位,将位数裁定到合适的大小措施:如果结果正确 ...…

查看全部问答>

Wince系统大于40M!!!

    请教给位大仙,我已经把wince系统扩展,可以下载并运行40M以内的NK。     然而当NK超过40M之后,依照同样的方式仍然可以下载NK到NANDFLASH中,但是系统启动的过程中停住,不明白原因,希望大仙们指教。     是 ...…

查看全部问答>

请问 有没有人做过WINCE.NET 控制伺服电机的。

我想开发一个WINCE.NET下能控制伺服电机的应用软件,我有一块PC上用的PCI 4轴伺服控制卡(研华的)。用什么方法能在WINCE.NET 下用起来。有没有在WINCE下专用的伺服控制卡。望各位前辈回答小辈。谢谢了。…

查看全部问答>

vxworks+vmware(老问题再求救)

host: os:win2k+sp4 network adapter:Realtek RTL8139(A)-based PCI Fast Ethernet Adapter tornado 2.2 and vxworks 5.5 (TDK-14621-ZC-01) BSPs Drivers (TDK-14621-ZC-01) RamDiskNT v1.5.0 AMD pcnet x86 END Driver for VxWorks(v ...…

查看全部问答>

世界500强急聘嵌入式软件项目经理

符合以下大多数条件即可(薪水十分不错,工作地点:深圳) 联系方式:msn:chenhuanwanted@hotmail.com Essential Duties & Responsibilities: •        Administration and management of the SW development team, ...…

查看全部问答>

ADI 关于PCB布局布线指南

很经典的资料,有语音的PPT…

查看全部问答>

关于F149异步串口程序

大家好,我用F149做异步串口传送程序,用U1传送口,传送一系列数组,希望大家帮我看一下程序是不是正确。 为什么我在IAR中加入了,UCOS不能生成文件呢?程序如下: #include <msp430x14x.h> #define ANUM 11 static char TAX[ANUM]={0x ...…

查看全部问答>

FPGA叠加技术重新定义: 2.5D向左 3D向右

    作者:赵思潇   来源:EEWOLRD        “梦想的产品已经开始发货了。”赛灵思全球高级副总裁,亚太区执行总裁汤立人先生在发布会上激动地宣布,“我们在6年前开始规划这样一款产品,3 ...…

查看全部问答>