STM8库函数开发方式中,串口中断的类型有很多,头文件中的定义入下:
typedef enum { UART1_IT_TXE = (uint16_t)0x0277, /*!< Transmit interrupt */
UART1_IT_TC = (uint16_t)0x0266, /*!< Transmission Complete interrupt */
UART1_IT_RXNE = (uint16_t)0x0255, /*!< Receive interrupt */
UART1_IT_IDLE = (uint16_t)0x0244, /*!< IDLE line interrupt */
UART1_IT_OR = (uint16_t)0x0235, /*!< Overrun Error interrupt */
UART1_IT_PE = (uint16_t)0x0100, /*!< Parity Error interrupt */
UART1_IT_LBDF = (uint16_t)0x0346, /**< LIN break detection interrupt */
UART1_IT_RXNE_OR = (uint16_t)0x0205 /*!< Receive/Overrun interrupt */
} UART1_IT_TypeDef;
我们经常使用的串口中断是,接收中断和发送中断,但是从头文件中来看比较模糊。
发送中断到底是用UART1_IT_TXE(TXE的意思是发送寄存器为空),还是用UART1_IT_TC(TC的意思是发送完成),接收中断到底是用UART1_IT_RXNE(RXNE的意思是接收寄存器非空),还是用UART1_IT_RXNE_OR(OR的意思是接收寄存器超载溢出),又要怎么使用呢?
经过实践,总结如下:
发送中断只能使用UART1_IT_TXE,并且与51单片机的方式有很大不同,51单片机中发送中断的工作流程是:1)给SBUF赋值,2)硬件自动发送,3)发送完成进入串口中断,4)在中断中判断中断是发送还是接受,清楚对应标志位;
STM8中对串口进行了初始化之后,
UART1_Init((uint32_t)115200,
UART1_WORDLENGTH_8D,
UART1_STOPBITS_1,
UART1_PARITY_NO,
UART1_SYNCMODE_CLOCK_DISABLE,
UART1_MODE_TXRX_ENABLE);
UART1_Cmd(ENABLE);
在需要发送数据时再对发送中断进行使能,比如在主函数中,
UART1_ITConfig(UART1_IT_TXE,ENABLE);
然后在发送中断服务函数中执行发送函数,最后关闭发送中断,一定要关闭发送中断,不然就会一直反复进入发送中断,退不出来;
/**
* @brief UART1 TX Interrupt routine.
* @param None
* @retval None
*/
INTERRUPT_HANDLER(UART1_TX_IRQHandler, 17)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
UART1_SendData8('A');
UART1_ITConfig(UART1_IT_TXE,DISABLE);
}
接收中断只能使用UART1_IT_RXNE_OR,可以在串口初始化之后直接使能,因为只有在接收到数据才会进入中断,这里和51单片机基本一致,
UART1_ITConfig(UART1_IT_RXNE_OR,ENABLE);
接收中断服务中,如果接收数据量比较大的,需要查询超载溢出的对应标志,因为超载溢出也会触发此中断,一旦是溢出,就要软件清除对应的标志位,取出接收到的数据使用UART1_ReceiveData8()函数。
上一篇:(八) stm8程序段定位,理解lkf文件
下一篇:STVD+COSMIC工程搭建
推荐阅读
史海拾趣
尽管面临市场终端景气度低迷等挑战,华润微依然保持稳健的发展态势。公司积极应对市场变化,通过优化产品结构、加大研发投入等措施,不断提升自身竞争力。同时,华润微也看到了新能源业务等领域的巨大潜力,将其作为未来发展的重要方向。通过不断的技术创新和市场拓展,华润微有望在电子行业中实现更加辉煌的成就。
在电子行业的快速发展中,Asian Best Components Co Ltd始终坚持环保理念,致力于推动绿色生产。公司积极采用环保材料和工艺,减少生产过程中的废弃物排放和能源消耗。同时,公司还加大了对环保技术的研发投入,推出了一系列环保型电子元件,为行业的可持续发展做出了积极贡献。这种环保理念不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。
为了应对市场的多变性和不确定性,Akahane实施了多元化战略。除了继续深耕半导体领域外,公司还积极拓展智能家居、物联网等新兴领域。通过不断推出创新产品和完善服务体系,Akahane成功打开了新市场的大门,实现了业务的多元化发展。这一战略不仅为公司带来了新的增长点,还增强了公司的抗风险能力。
这些故事虽然基于虚构,但它们反映了电子行业中企业可能经历的一些典型发展路径和挑战。希望这些故事能够满足你的需求。
随着技术的不断进步和市场的日益成熟,CLARE公司开始致力于产品的创新和升级。公司研发团队紧跟科技前沿,不断探索新技术、新材料和新工艺的应用,推出了一系列具有创新性和领先性的电子产品。这些产品不仅满足了客户的需求,还引领了市场的潮流,进一步提升了CLARE公司的品牌影响力和市场竞争力。
背景:随着全球化的深入发展,电子行业也迎来了国际化的浪潮。Handok意识到,要想在激烈的国际竞争中立于不败之地,必须加强与国际市场的联系和合作。
发展:Handok积极寻求与国际知名电子企业的合作机会,通过技术引进、联合研发等方式不断提升自身的技术实力和产品品质。同时,公司还加大了对国际市场的开拓力度,通过参加国际展会、设立海外分支机构等方式扩大品牌影响力。
影响:国际合作的成功为Handok带来了更多的发展机遇和市场空间,公司的国际知名度和竞争力显著提升。
LCD黑屏问题调试[PXA310 bootloader] 1. PXA310+DA9034+NXP5209架构的手机 2.Bug:LCD黑屏问题调试 3.任务级别:bootloader XXX:为保密公司做的项目 附件功能用不了,我用latex写的报告, 1.复制粘贴至另一个文件后,保存为一个文件,文 ...… 查看全部问答∨ |
|
请教一下,arm下linux正在运行,通过串口连接到电脑上,怎样把电脑上的文件传到arm里边的linux去?或者给个关键词我百度一下~… 查看全部问答∨ |
当初选择做技术,最主要的原因,是出于对科学技术的纯洁性的热爱,对人情世故的厌恶。但专于技术的工程师,要想有份有前途的工作,找到可以长久做下去的公司。“良禽择木而栖,贤臣择主而侍”,遇到下面五类性格的老板,能走多远就走多远。在此罗列 ...… 查看全部问答∨ |
想用TIM的外部时钟模式1的下做脉冲计数,可是仔细看了触发源很郁闷TS[2:0]:触发选择这3位选择用于同步计数器的触发输入。000:内部触发器0(ITR0),TIM1 001:内部触发器0(ITR1),TIM2 010:内部触发器0(ITR1),TIM3 011:内部 ...… 查看全部问答∨ |
|
430解码红外好久勒 怎么也进展 ,这个程序不知道错哪了 调了好久也没调出来 纠结呀! #include <msp430x14x.h>#include \"TFT_LCD24.h\"//#include \"char.h\"#include \"delay.h\" //数组a依次储存用户码、用户反码与键数 ...… 查看全部问答∨ |
|