查看: 5937|回复: 8

[原创] 【我眼中的LPC】UART中断

[复制链接]
  • TA的每日心情
    开心
    2020-1-31 22:07
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    20

    主题

    385

    帖子

    19

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2090
    最后登录
    2020-7-1
    发表于 2016-11-21 21:57:41 | 显示全部楼层 |阅读模式
    团队名称:1209Lab
    学校:济南大学
    开发板:LPC824 Lite


    一、使用UART的中断步骤:
    1.初始化UART0
    2.选择中断源(lpc824的UART有12个中断事件,即12个中断源)
    3.在中断控制器中使能UART0中断
    4.构建中断服务函数UART0_IRQHandler(void),(每个中断对应的服务函数名可在启动文件中找到)


    二、主要涉及到的寄存器
    1.LPC_USART0->INTENSET:
    UART0的中断允许读取和设置寄存器。可以过设置里面的bit来实现对中断事件的选择,bit 0 为RXRDYEN,写1,使能,RXDAT读取寄存器接收到一个字节时产生中断。
    2.NVIC->ISER:
    这是一个中断使能寄存器组,ISER[0]的bit0到bit31分别对应了不同外设的中断,其中bit3代表UART0的中断,对其置1,表示使能。
    3.LPC_USART0->STAT:
    UART的状态寄存器。各种状态可以通过读取里面的bit标志位来了解,bit 0为RXRDY标志位,如果一个字节数据就绪,可以读取了,这个标志位就会硬件置1.

    1. /******************** Copyright(C) 2016, Lab1209 of UJN **********************
    2. * 文件名       :main.c
    3. * 描述         :串口接收中断实验
    4. * 软件平台     :Keil5.14
    5. * 硬件平台     :LPC824
    6. * 作者         :lab1209
    7. * 修改时间     :2016/11/17
    8. * 补充         :单片机接收PC端串口助手的字符,并把字符返回到PC端
    9. ******************************************************************************/
    10. #include "peri_driver.h"

    11. /**************************************************************
    12. ** 名称   : UART_init(void)
    13. ** 描述   : UART初始化      
    14. ** 参数   :   
    15. **                              
    16. ** 返回值 :   无
    17. ***************************************************************/
    18. void UART_init()
    19. {
    20.   LPC_SYSCTL->SYSAHBCLKCTRL |= (1<<7);//使能开关矩阵时钟
    21.         LPC_SWM->PINASSIGN[0] &= 0xffffff04 ; // bit0~7写入0x04,设置 P0.4 为UART0的Txd
    22.   LPC_SWM->PINASSIGN[0] &= 0xffff00ff;  // bit8~15写入0x00,设置 P0.0 为UART0的Rxd        
    23.         LPC_SYSCTL->SYSAHBCLKCTRL &= ~(1<<7);//关闭开关矩阵时钟,降低功耗

    24.         Chip_UART_Init(LPC_USART0);   //使能串口时钟
    25.         Chip_Clock_SetUARTClockDiv(1);//设置UART时钟分频器,1即是主系统时钟不分频
    26.         Chip_UART_ConfigData(LPC_USART0, UART_CFG_DATALEN_8 | UART_CFG_PARITY_NONE | UART_CFG_STOPLEN_1);//8数据位,无奇偶校验,1停止位
    27.         Chip_UART_SetBaud(LPC_USART0, 115200);   //波特率115200
    28.         Chip_UART_Enable(LPC_USART0);     //使能串口
    29. }        

    30. /**************************************************************
    31. ** 名称   : UART0_IRQHandler(void)
    32. ** 描述   : UART0中断服务函数      
    33. ** 参数   :   
    34. **                              
    35. ** 返回值 :   无
    36. ***************************************************************/
    37. /*寄存器操作*/
    38. void UART0_IRQHandler(void)
    39. {
    40.         if(LPC_USART0->STAT & 0x01)
    41.         {
    42.                 LPC_USART0->TXDATA = LPC_USART0->RXDATA;
    43.                
    44.         }
    45. }        
    46. /**************************************************************
    47. ** 名称   : main(void)
    48. ** 描述   : mian函数      
    49. ** 参数   :   
    50. **                              
    51. ** 返回值 :   无
    52. ***************************************************************/
    53. int main(void)
    54. {        
    55.         UART_init();
    56.         
    57.         /*寄存器操作*/
    58.         LPC_USART0->INTENSET = 0x01;   //选择接收寄存器中断源
    59.         NVIC->ISER[0U]=0x08;           //在中断控制器中使能UART的中断
    60.         

    61. }
    复制代码

    库函数操作 UART_isr.zip (219.64 KB, 下载次数: 39)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16702
    最后登录
    1970-1-1
    发表于 2016-11-21 22:04:20 | 显示全部楼层
    直接上寄存器了,厉害
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-31 22:07
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    20

    主题

    385

    帖子

    19

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2090
    最后登录
    2020-7-1
     楼主| 发表于 2016-11-21 22:06:36 | 显示全部楼层
    lkl0305 发表于 2016-11-21 22:04
    直接上寄存器了,厉害

    老哥好活跃啊,每次来都能看到你
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16702
    最后登录
    1970-1-1
    发表于 2016-11-21 23:35:12 | 显示全部楼层
    1209实验室@ujn 发表于 2016-11-21 22:06
    老哥好活跃啊,每次来都能看到你

    就这点爱好啦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-21 08:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    3

    主题

    86

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    242
    最后登录
    2017-4-26
    发表于 2016-11-22 14:13:27 | 显示全部楼层
    赞一个赞一个赞一个赞一个赞一个
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    30

    帖子

    0

    注册会员

    Rank: 2

    积分
    61
    最后登录
    1970-1-1
    发表于 2017-12-11 15:34:57 | 显示全部楼层
    谢谢,分享,正在学习UART模块
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-2-5 17:05
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    28

    主题

    1814

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    5873
    最后登录
    2025-6-26
    发表于 2017-12-12 09:51:11 | 显示全部楼层
    楼主这个头像好帅啊 感谢分享
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    30

    帖子

    0

    注册会员

    Rank: 2

    积分
    61
    最后登录
    1970-1-1
    发表于 2017-12-12 16:07:04 | 显示全部楼层
    楼主能讲讲串口速率的计算吗,LPC824用户手册给的信息,不太理解,另外,计算的速率与理论值也没有对照表。新手有点发憷啊!  谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    15

    帖子

    0

    注册会员

    Rank: 2

    积分
    100
    最后登录
    2018-7-11
    发表于 2018-3-2 00:49:21 | 显示全部楼层
    thomas-411020 发表于 2017-12-12 16:07
    楼主能讲讲串口速率的计算吗,LPC824用户手册给的信息,不太理解,另外,计算的速率与理论值也没有对照表。 ...

    有一个公式,涉及到UART时钟、采样率等一系列参数
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 10:22 , Processed in 0.112212 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表