历史上的今天
返回首页

历史上的今天

今天是:2025年01月22日(星期三)

正在发生

2020年01月22日 | STM8 模拟串口程序

2020-01-22 来源:eefocus

1、接收


默认串口的数据格式为 一位起始位+8位数据位+停止位,由于起始位为低电平,停止位为高电平。因此,RX线要使能外部中断,中断方式为下降沿中断。只需要在中断程序中使能定时器,并且要在main函数之前对定时器进行初始化,设置定时器的预装值,这里设置的预装值就是设置串口的波特率,另外还要使能定时器的更新中断,在定时器的中断处理程序中,按位接收串口发送过来的数据。当接收到停止位时,失能定时器,然后对定时器进行清零处理


下面是外部中断处理函数:


INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3)

{

    if(EXTI_GetExtIntSensitivity(EXTI_PORT_GPIOA)==EXTI_SENSITIVITY_FALL_LOW 

        && emuart_struct.statu==EMUART_WAIT)

    {

        GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT); //关闭PA.3中断 

        emuart_struct.statu=EMUART_RECV;        

        TIM2_Cmd(ENABLE); //Delay(0X1FF); //启动定时器        

    }

}


2、发送


原理同接收一样,在发送函数中使能定时器,并且将RX口线拉低。在定时器更新中断处理函数中按位发送数据,当数据发送完毕后将RX线拉高,并且失能定时器,然后对定时器进行清零处理。


下面是定时器中断处理函数:


INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)

 { 

   static unsigned char recvdata=0;

   unsigned char bitemp=0;

   unsigned char readbit;

   if(TIM2_GetITStatus(TIM2_IT_UPDATE)==SET)

   {

        TIM2_ClearITPendingBit(TIM2_IT_UPDATE);

      

        if(emuart_struct.statu==EMUART_RECV)            //读取数据

        {

            emuart_struct.bitRecved++; 

            if(emuart_struct.bitRecved>=1 && emuart_struct.bitRecved<=8) 

            {

                if(GPIO_ReadInputPin(GPIOA, GPIO_PIN_3) == 0X08)

                {

                    readbit=(unsigned char)(1<<(emuart_struct.bitRecved-1));

                }

                else

                {

                    readbit=(unsigned char)(0<<(emuart_struct.bitRecved-1));

                }                 

                recvdata|=readbit;                                                 

            }

            else if(emuart_struct.bitRecved==9)

            {            

                emuart_struct.bitRecved=0;

                emuart_struct.recvData=recvdata;

                emuart_struct.isRead=ISNOTREAD;

                emuart_struct.statu=EMUART_WAIT;

                recvdata=0;

                TIM2_Cmd(DISABLE);                      //关闭定时器              

                TIM2->CNTRH=0;//TIM2->ARRH;             //定时器清零                            

                TIM2->CNTRL=0;//TIM2->ARRL;

                GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_FL_IT);       //打开外部中断

            }

         }

 

         else if(emuart_struct.statu==EMUART_SEND)       //发送数据

         {        

            emuart_struct.bitSended++;

            if(emuart_struct.bitSended>=1 && emuart_struct.bitSended<=8)         

            {       

                 bitemp=(emuart_struct.sendData>>(emuart_struct.bitSended-1))&0x01;

                 if(bitemp==1)

                 {

                     GPIO_WriteHigh(GPIOB, GPIO_PIN_4);

                 }

                 else if(bitemp==0)

                 {

                     GPIO_WriteLow(GPIOB, GPIO_PIN_4);

                 }        

            }

            else if(emuart_struct.bitSended==9)         //发送或接收数据完毕

            {

                emuart_struct.bitSended=0;

                GPIO_WriteHigh(GPIOB,GPIO_PIN_4);

                emuart_struct.statu=EMUART_WAIT;

                emuart_struct.isSend=ISEND;

                TIM2_Cmd(DISABLE);   //关闭定时器  

                TIM2->CNTRH=0;       //定时器清零                            

                TIM2->CNTRL=0;                      

            } 

         }   

    }

 }


推荐阅读

史海拾趣

Heimann Optoelectronics Gmbh公司的发展小趣事

2018年,Hei Inc Optoelectronic Division抓住行业整合的机遇,成功并购了一家在光电子材料领域具有领先地位的企业。这次并购不仅使公司获得了先进的光电子材料生产技术,还极大地丰富了公司的产品线。通过整合双方资源和技术优势,公司在光电子器件的研发和生产上实现了质的飞跃。并购后的Hei Inc Optoelectronic Division不仅在市场上占据了更大的份额,还进一步提升了自身的技术实力和品牌影响力。

Eagle Plastic Devices公司的发展小趣事

随着全球环保意识的不断提高,Eagle Plastic Devices公司也开始将环保理念融入产品研发和生产过程中。公司采用环保材料、改进生产工艺、降低能耗和排放等措施,努力降低产品对环境的影响。同时,公司还积极参与环保公益活动,倡导绿色消费和可持续发展。这些举措不仅提升了公司的品牌形象,也为公司带来了更多的市场机遇。

EPCOS/TDK公司的发展小趣事

作为全球领先的电子元器件制造商之一,EPCOS在通信领域取得了显著的突破。其电容器、电感器等产品在通信系统中发挥着关键作用,为各种通信设备提供了稳定的电源和信号处理方案。EPCOS不断投入研发资源,致力于开发适应新一代通信技术需求的高性能电子元器件。这些创新产品不仅提高了通信系统的性能和可靠性,也推动了整个通信行业的进步。

以上是关于EPCOS/TDK公司发展起来的5个相关故事。这些故事不仅展示了公司在技术创新、市场拓展等方面的成就,也体现了其在电子行业中的重要地位和影响力。

Diplohmatic A/S公司的发展小趣事

随着技术创新的成功,Diplohmatic A/S公司开始寻求国际市场的拓展。公司派遣了一支由经验丰富的销售和技术人员组成的团队,前往欧洲和亚洲的主要市场进行考察和洽谈。通过深入了解当地市场需求和竞争态势,公司制定了一系列有针对性的市场策略,并与多家国际知名企业建立了合作关系。这些合作不仅为公司带来了更多的订单,也提升了其品牌在国际市场的知名度。

驰芯微(CHIPWISE)公司的发展小趣事

在发展过程中,驰芯微公司成功完成了多轮融资,为公司的发展提供了强有力的资金支持。这些资金主要用于车规级传感和控制类芯片的系列化业务以及新能源电池管理系统汽车电子系统一站式车规级芯片套片解决方案的研发和推广。未来,驰芯微将继续加大在技术研发和产品创新方面的投入力度,致力于成为国际领先的汽车电子芯片供应商。同时,公司还将积极拓展海外市场,提升品牌知名度和影响力。

以上五个故事框架分别围绕驰芯微公司的初创历程、技术突破、面对“芯片限制”的机遇与挑战、与明然科技的合作以及融资与未来规划等方面进行了描述。这些故事展示了驰芯微在电子行业中的发展历程和取得的成就,同时也揭示了公司未来的发展方向和目标。

EHC(ELECTRONICHARDWARE)公司的发展小趣事

EHC公司自创立之初就专注于电子硬件的技术创新。在竞争激烈的电子市场中,EHC公司凭借其独特的设计理念和先进的生产工艺,成功推出了一系列高性能、高可靠性的电子产品。这些产品不仅满足了消费者对高品质电子产品的需求,也为EHC公司赢得了良好的市场口碑。随着技术的不断进步,EHC公司不断推出创新产品,逐步巩固了其在行业中的领先地位。

问答坊 | AI 解惑

audio processing中文版

Matlab进行音频处理的材料,很不错的,希望大家喜欢…

查看全部问答>

pcb布线技巧

本帖最后由 paulhyde 于 2014-9-15 09:18 编辑 很好的资料啊  …

查看全部问答>

运营人,进来学写工作总结(精彩漫画)

转帖给各位(南方报业网),向编写工作总结的筒子们道声辛苦了。              年年岁岁月月,考考评评选选。    又到了年终,又到了写年终工作总结的日子。         黎明来临前总是黑暗 ...…

查看全部问答>

如何判断U盘或者文件夹是否存在?

我现在有这么个需求:在wince下,写一个程序,去检测U盘是否插上了。 我发现这种检测U盘是否已经插上了比较困难,因为这不是个实时检测。 当点击我的程序之后,如果用户没有插U盘,就提醒用户插U盘。所以,会去检测U盘是否插上了。 考虑这种检 ...…

查看全部问答>

??FAT32文件系统的扩展名长度问题!!!

FAT32文件系统中的文件扩展名只定义了三个字节的空间 那么四个字节以上的扩展名它是怎么处理的? 比如RMVB格式的 谢谢 …

查看全部问答>

RS232-串口USB的数问题

仿真时,我笔记本上的USB口最小为com11,而Keil中的com为1-8,com11能驱动,将com11改为com3(不知以前做什么用的),就是驱动不了,为什么?要怎么做呢?…

查看全部问答>

基于GSM报警器设计

大家好!我是一个刚到的新手,是学电子信息的,我喜欢的方向是计算机软件,准备的考研方向也是计算机软件,可是现在大三了,专业课的作业是叫我们实做!基于GSM 报警器设计(无人机房温度测控),现在老师的要求是要求我们设计一块试验用的STM ...…

查看全部问答>

急求:vxworks下实现2个千兆网卡的百兆连接

各位大大,现在我有2个一样的主板,网卡芯片是82574L,现在要实现百兆连接,我只接了四根线,   然后2个主板互相PING确不通,可是每个对别的PC进行PING就没问题,想问问个位,怎么解决,   是驱动问题吗?还是哪里需要做改动。 &nbs ...…

查看全部问答>

高手帮帮忙,LM系列的

我今天尝试了一下从我自己写的工程1跳转到工程2,但是失败了。工程1位于flash的0x00000000~0x00002fff,打算用来做我们自己的bootloader,工程2分配到flash的0x00003000~0x0003ffff。我能否在工程1里控制指针直接跳到工程2上开始运行?…

查看全部问答>

Vishay推出用于无线充电的新款接收线圈

Vishay推出用于无线充电的新款接收线圈 新器件采用铁粉并符合WPC标准,具有高磁导屏蔽和大于70%的效率 宾夕法尼亚、MALVERN — 2012 年 7 月13 日 — 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,推出新款采用铁粉材料,符合 ...…

查看全部问答>