历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2020年01月07日 | STM8学习笔记---uart1串口中断

2020-01-07 来源: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灯的开关。


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

推荐阅读

史海拾趣

Evans Capacitor Company公司的发展小趣事

面对数字化浪潮的冲击,ECC决定进行数字化转型以提升竞争力。公司引入了先进的生产设备和管理系统,实现了生产过程的自动化和智能化。同时,ECC还建立了大数据分析平台,对市场需求、客户需求等数据进行深入分析,为公司的决策提供有力支持。数字化转型使得ECC在市场竞争中更加灵活和高效。

宁波晨翔电子(CONNFLY)公司的发展小趣事

在市场竞争日益激烈的环境下,晨翔电子始终坚持产品创新,不断推出具有市场竞争力的新产品。同时,公司还注重品牌建设,通过提升产品质量、优化服务流程、加强市场营销等方式,不断提高品牌知名度和美誉度。这一时期的努力,使得晨翔电子在电子连接器行业树立了良好的品牌形象。

Avery Dennison公司的发展小趣事

1990年,Avery Adhesives与Dennison Manufacturing合并,成立了Avery Dennison公司。这一合并不仅增强了公司的实力,也为其全球扩张提供了有力支持。此后,Avery Dennison通过在欧洲建立工厂、收购其他公司等方式,不断拓展其业务版图。如今,公司的业务已经遍及50多个国家,成为全球领先的标签与包装材料解决方案提供商。

Connection One公司的发展小趣事

在电子行业的初期,Connection One公司凭借其创始人对半导体技术的深刻理解,成功研发出一款具有划时代意义的芯片。这款芯片不仅性能卓越,而且功耗极低,立即在市场上引起了轰动。公司因此迅速积累了第一笔资金,为后续的研发和扩展打下了坚实基础。

Fractus公司的发展小趣事

为了加速技术的商业化进程,Fractus积极寻求与全球领先企业的合作。自2000年以来,公司陆续与多家知名手机厂商、电信运营商以及设备制造商建立了战略合作关系。这些合作不仅为Fractus带来了稳定的收入来源,也促进了其技术的广泛应用和持续改进。同时,Fractus还通过签订全球许可协议和建立战略伙伴关系,进一步拓展了其业务范围和市场影响力。

Datasensor公司的发展小趣事

为了进一步扩大市场份额和增强技术实力,DATASENSOR公司积极进行收购和扩张。2004年,公司成功收购INFRA和SPECIALVIDEO公司,这两家公司在工业自动化领域拥有丰富的经验和先进的技术,为DATASENSOR公司带来了更多的市场机会和技术优势。此外,公司还在法国、德国、英国和西班牙等国家和地区设立了子公司,实现了全球化的战略布局。

问答坊 | AI 解惑

迷茫和缺乏激情者必读的故事

今天晚上在qq上和一位久违的朋友聊了会儿,聊了聊他的近况和未来打算,私企工薪族,有一套贷款的房在还着,经济压力倒也不大,就是对未来有些感慨和迷茫,请我给指点迷津。我先让他描述下他对自己15年后状态的设想(不考虑任何外界因素和现实束缚, ...…

查看全部问答>

JB P0.1,OUT2想问下,这是对端口锁存器还是引脚信号判断

JB P0.1,OUT2想问下,这是对端口锁存器还是引脚信号判断…

查看全部问答>

一起弄个lpc1000的固件库?

没固件库太不方便了而示例中的库写得让人看着痛苦,用着痛苦。能不能一起来改造示例中的库,添加新的库,发到网上?…

查看全部问答>

LM3S系列ARM元件库

LM3S系列ARM Protel元件库,希望对大家画原理图和PCB有帮助…

查看全部问答>

看看STM8的Option界面

完全脚本解析的,可谓一劳永逸GROUPBOX    98, 14, 96, 90, "看门狗相关"CHECKBOX   104, 33, 60, 11, LSI_EN, "允许使用LSI"CHECKBOX   ...…

查看全部问答>

急问串口的问题

我用的LF2407A的DSP 要它跟PC进行SCI串口通信   写了一个接收程序  用中断方式  当从PC发过来一个字符后,SCIRXBUF中有发过来的数据,可是按照手册上说的这个时候RXRDY标志应该置1,可是没有 而IFR中的相应标志位置 ...…

查看全部问答>

求cadence allegro 16.3

  谁有cadence allegro 16.3的安装文件。或者网站也行。发个链接什么给我一个。16.2的也可以。。万分感激 [ 本帖最后由 votex威 于 2011-10-11 21:34 编辑 ]…

查看全部问答>

新技术将锂电池储电量提高十倍

消息来自《先进能源材料》原文研究报告手机电池带电超过一周,每次充电只需15分钟。美国西北大学的研究人员让我们离这个梦想又 进了一步。据美国物理学家组织网11月15日(北京时间)报道,该校的工程师研制出一种针对锂离子电池的电极,允许电池保 ...…

查看全部问答>

iar的在线汇编,怎么读取一个局部变量的值?

如题,某段代码需要用汇编读取一个局部变量的值,应该怎么写?例如有一个char c,怎么把c的值度到A寄存器里面?有一个uint16_t wd,怎么把wd的值读到X寄存器里面?…

查看全部问答>

【晒心得】Ez430-Chronos-433无线手表试用小记

最近实在是忙,各种忙,而且网络也不给力。眼睁睁的看着论坛上TI的促销活动搞得轰轰烈烈,竟然直到TI促销活动结束的前一天才把订单搞定。话说TI的效率那是没得说。下单一周就接到了联邦快递快递员问路的电话,奉劝以后在国外往国内邮寄物品的童鞋们 ...…

查看全部问答>