历史上的今天

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

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

发布者:开国古泉 来源: eefocus关键字:STM8  uart1  串口中断 手机看文章 扫描二维码
随时随地手机看文章

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灯的开关。


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


关键字:STM8  uart1  串口中断 引用地址:STM8学习笔记-----uart1串口中断

上一篇:UART0串口编程(三):中断方式的串口编程;用中断编写发送
下一篇:STM8学习笔记(一) 建立第一个工程

推荐阅读

13 年来,一支荷兰研究团队都在努力打造可自治的飞行机器人。在果蝇的启发下,他们终于推出了动作相当灵敏的 DelFly Nimble 。 除了多轴盘旋,它甚至可以极速翻跟头。最新一代的 DelFly,看起来很像是一只果蝇了。2005 年以来,在荷兰代尔夫特理工大学的微型飞行器(MAV)实验室,就一直在积极 开发 能够复制果蝇运动方式的 DelFly 项目。通过...
全球电子元器件与开发服务分销商e络盟宣布通过其工程师在线社区 e络盟社区(安富利旗下社区之一)与安森美半导体及Hackster社区 联合举办ThinkON设计挑战赛,以激励开发人员针对日常问题设计创新解决方案。该挑战赛面向广大e络盟和 Hackster社区成员,并鼓励他们使用安森美半导体RSL10 传感器开发套件(RSL10-SENSE-GEVK)设计最具创意的解决方案。示...
高性能传感器解决方案供应商艾迈斯半导体(ams AG,瑞士股票交易所股票代码:AMS)今日推出业界首款将环境光感测、接近检测和光源闪烁检测功能集成于单个模块并针对智能手机的OLED屏下放置优化的光学传感器---TMD3719。 作为在手机行业光学传感器领域耕耘十多年的领先传感器供应商,艾迈斯半导体凭借其在光学传感器设计方面的技术创新和专业知识开发出TMD...
ARM 处理器有 FIQ和 IRQ 两级外部中断,它们都是由对电平敏感的低电平(LOW)信号激活进入处理器的。为了产生中断,CPSR 中的相应禁用位必须清零。快速中断请求(Fast Interrupt Request,FIQ),IRQ全称为Interrupt Request,即是“中断请求”的意思。FIQ 的优先级比 IRQ高,具体表现如下:(1)当发生多个中断时,首先处理 FIQ。(2)处理 FIQ...

史海拾趣

问答坊 | AI 解惑

汽车管理系统2002

汽车管理系统2002…

查看全部问答∨

测温电路???用热敏电阻

跪求关于 用热敏电阻设计的测温电路LCD显示PROTEUS仿真…

查看全部问答∨

驱动无法生成dll?

{be8ed5a8-f3d5-4f7f-84c8-84498bf447c7}…

查看全部问答∨

求助:LPC236x与DM9161网络通信不正常,DM9161无法初始化

小弟正调试LPC236x的EMAC控制器部分,但是在初始化DM9161AEP的时候出现一个问题,配置为“自动协商”的时候,总是无法成功,读BMSR寄存器的时候读出来的永远都是默认值0x00007849,可以确认写PHY及读PHY是没有问题,因为向BMCR写入复位命令0x800000 ...…

查看全部问答∨

DirectDraw加载位图的问题

                        ddrval = DirectDrawCreate(NULL, &g_pDD, NULL);                         ddrval = g_p ...…

查看全部问答∨

LM3S 8962

电话:15928776296 邮箱:1005450581@qq.com 地址:四川省成都市郫县团结四川师范大学成都学院电子程系工业与民用1班 姓名:赵健雄   我是嵌入的学习者,只有通过做一个东西,才能学到更多,只有做得更好,更强大 ,才会成长得更快。…

查看全部问答∨

STMicroelectronicsAttacksNewMarketsforSTM32Family

http://www.st.com/stonline/stappl/cms/press/news/year2009/p2372.htmNew microcontrollers combine USB OTG, Ethernet, CAN2.0Binterfaces, and audio-class I2S interfaces, brin ...…

查看全部问答∨

问一个Iap写flash的问题

我在用stm32 IAP 更新flash的时候 看到 最少是写半个字 但是我发现 编译完生成的bin文件 有单数字节 怎么处理着最后一个字节呢?…

查看全部问答∨

真是硬件有问题吗?

     我使用st公司的三合一板和一个触摸屏进行串口通信,通信方式为中断接收、查询发送,现在通信的接收和发送都可以进行了,由触摸屏观察到的传输数据都正确,但主程序却不能读取接收中断收到的数据,这几天连续发了几个 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved