历史上的今天
返回首页

历史上的今天

今天是:2024年09月17日(星期二)

2019年09月17日 | STM8学习笔记-----uart1串口中断

2019-09-17 来源:eefocus

uart1串口发送、接收中断。


目标:串口接收1,点亮led1,接收2点亮led2,接收到其他字符关闭led1和led2。


步骤如下:


1、编写led.h和led.c文件。略


2、编写uart.h和uart.c文件,其中串口配置函数如下:


void USART_Configuration(void)//串口初始化函数

  {  



    UART1_DeInit();

    UART1_Init((u32)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, 

    UART1_PARITY_NO , UART1_SYNCMODE_CLOCK_DISABLE , UART1_MODE_TXRX_ENABLE);

    //波特率,字节数,1个停止位,无奇偶效验位,非同步模式,允许接受和发送

    UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE); //打开串口接收中断

    UART1_ITConfig(UART1_IT_TXE, ENABLE);    //打卡串口发送中断

    UART1_Cmd(ENABLE );

   }


3、编写主函数如下:


#include "stm8s.h"

#include "stm8s_clk.h"

#include "led.h"

#include "uart.h"



int main(void)

        CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

LED_Init();

LED1_Close();

        LED2_Close();

        LED3_Close(); 

        enableInterrupts(); //打开中断开关

USART_Configuration(); //配置串口

        UART_send_string("i like.");  //串口发送一个字符串

while(1)

{

           

}

}


4、在stm8s_interrupt.c文件中编写中断处理函数


#pragma vector=0x13

__interrupt void UART1_TX_IRQHandler(void)

{

  UART1_ITConfig(UART1_IT_TXE, DISABLE);     //关闭发送中断

  return;

}

#pragma vector=0x14

__interrupt void UART1_RX_IRQHandler(void)

   u8 u8_data;

   u8_data = UART1_ReceiveData8();

   if (u8_data=='1')

   {  LED1_Open(); LED2_Close();}

   else if (u8_data=='2')

   {  LED1_Close(); LED2_Open();}

   else

   {LED1_Close(); LED2_Close();}

   return;

  

}

#endif


编译下载后,通过串口助手发送1、2可控制led灯的开关。


心得:在发送中断处理函数中一定要记得关闭发送中断,否则会一直触发发送中断导致死循环,在这个问题上耗了两天时间。在需要发送数据时再打开发送中断


推荐阅读

史海拾趣

Dynastream公司的发展小趣事

展望未来,Dynastream将继续秉承“持续创新、追求卓越”的发展理念,致力于成为电子行业的领军企业。公司将继续加大研发投入,提高产品的技术含量和附加值;同时,也将注重人才培养和团队建设,为公司未来的发展提供有力保障。相信在不久的将来,Dynastream将在电子行业中创造更加辉煌的业绩。

请注意,以上故事均为基于Dynastream公司发展历程的假设性叙述,旨在展示其发展历程中的一些重要节点和成就。

Babcock Inc公司的发展小趣事

为了进一步提升公司的竞争力和市场份额,Babcock积极寻求与国际知名企业的合作。通过与这些企业的技术交流和项目合作,Babcock不仅引进了先进的技术和管理经验,还成功打开了国际市场的大门。随着业务的不断拓展,公司的规模和影响力也逐渐扩大。

Diode Laser Concepts公司的发展小趣事

在电子行业日益关注环保的背景下,Diode Laser Concepts公司积极响应,将环保理念融入产品设计和生产过程中。公司采用环保材料,优化生产流程,减少废弃物排放,致力于为客户提供绿色、环保的二极管激光产品。这一举措不仅提升了公司形象,也为公司赢得了更多客户的青睐。

Acme Electric Corporation公司的发展小趣事

随着技术的不断成熟,Diode Laser Concepts公司开始将产品推向市场。公司凭借其卓越的性能和稳定性,在电子制造、半导体加工等领域迅速获得了客户的认可。同时,公司不断投入研发,推出了一系列创新的二极管激光产品,如超短脉冲激光器和高精度定位系统等,进一步巩固了市场地位。

ATOP_Technologies公司的发展小趣事

随着技术的不断进步,ATOP Technologies意识到要想在激烈的市场竞争中保持领先地位,必须不断进行技术创新和产品升级。因此,公司加大了在研发方面的投入,积极引进高端人才,加强与高校和研究机构的合作。经过多年的努力,ATOP Technologies成功开发出了一系列具有自主知识产权的工业自动化产品,并在市场上取得了良好的口碑。

AEC Design公司的发展小趣事
某电子行业的AEC Design公司凭借其独特的技术创新能力,成功开发出一款具有颠覆性的新产品。这款产品不仅满足了市场的迫切需求,还凭借其卓越的性能和用户体验赢得了消费者的广泛好评。随着产品的热销,公司的知名度和市场份额迅速提升,为公司的持续发展奠定了坚实基础。

问答坊 | AI 解惑

linux 下一步nor flash 的驱动

linux内核对nor flash的驱动都是通过cfi的,我可不可直接不用cfi接口,直接把nor flash的驱动挂在mtd下面,另外对nor flash的地址是否需要ioremap?请高手们指教,谢谢!…

查看全部问答>

求助:VxWorks的中断响应时间

请问如何测试VxWorks的中断响应时间、系统启动时间?? 我使用的是S3C2440的板子,系统是VxWorks5.5 知道的话说的详细点,谢谢了…

查看全部问答>

世上最小的电脑硬盘在哪里生产?

问下各问同事,请问世上最小的电脑硬盘是在哪里生产的?有的说是在贵州,是不是啊?我在百度里找了下,没有找到5555555…

查看全部问答>

急!!(evc4.0+ado3.1)create database 不成功

程序段如下:         hr=CLSIDFromProgID(g_szADOCE30ConnProgID,&tClsid);         hr= CoCreateInstance(tClsid,NULL,CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER,IID_Connection,(LPVOID*)&m_pADOCEC ...…

查看全部问答>

LM3S8962板子学习一 共同学习

今天收到了板子。先熟悉学习。再做个毕来设计。 有准备学习的兄弟可以给我留言,我们可以共同讨论共同进步。   有问题记得在这里留言哟。 [ 本帖最后由 zhiha258 于 2011-1-21 16:52 编辑 ]…

查看全部问答>

网上找不STM32L的MDK,IAR模板啊!

官方有提供数据手册,编程手册。MDK4.13也支持了STM32L,但是没有模板怎么用啊? 不过我在MDK4.13里的BORD文件夹下找到STM32L的工程例子。还是不怎么放心。而且,现在STM32L似乎还买不到!…

查看全部问答>

小型晶体高值电阻进行测量的样本安装

在测量尺寸较小样本时,样本安装基底可能会成为测量误差的主要来源,这是其体积和表面电阻率造成的。通过(可能被污染的)基底表面阻止漏电流[1]的方法是,使用两个分开的绝缘片,而不是将样本放置在一个绝缘片上。为了简化对不同尺寸小型样本的 ...…

查看全部问答>

求帮助MSP430G2553串口需要怎么调试

MSP430G2553串口需要怎么调试  我是新手   试了很多次 没反应  什么串口调试工具比较好  求大神帮助…

查看全部问答>

射频宽带放大器具有哪些特点,以及有哪些方面的应用

射频宽带放大器具有哪些特点,以及有哪些方面的应用。在此先谢谢各位了哈…

查看全部问答>