This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Tiva Launchpad:在不使用 TivaWare 的情况下使用 UART 在接收时触发中断

Guru**** 2252850 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/603688/tiva-launchpad-triggering-an-interrupt-on-receive-with-uart-without-using-tivaware

我尝试进行此操作、以便在不使用 TivaWare 的情况下通过 TivaLaunchpad 上的 UART 接收数据时触发中断。

-我已经在中断处理程序中设置了断点以验证中断是否被触发、软件从未在此断点处停止。 (下面的代码)

我尝试实现忙等待接收只是为了确保我的代码的其余部分没有任何错误(例如 UART 设置...)。 忙等待循环中的断点在右行停止、并确认我收到了正确的信息

-问题碰巧是我如何为 UART 设置中断

-这是 UART 安装代码。 UART_Init()方法中的"第三段"会将其设置为用于中断。 这是我最有可能出错的部分。

````μ A
void UART_Init (void){

    //为 UART 0启用 UART 和 GPIO 回廊
    sysctl->RCGCUART |=(1<0);
    sysctl->RCGCGPIO |=(1<0);
    
    //禁用 UART
    UART0->CTL &=~(1<0);
    //设置波特率
    UART0->IBRD = 104;
    UART0->FBRD = 11;
    //配置 LCRH 寄存器
    UART0->LCRH=0x00000070;
    
    //配置中断
    UART0->ICR |=(1<<4);
    UART0->IM |=(1<<4);
    对于 UART0_Handler、//优先级为4 (IRQ = 5)
    NVIC_setpriority (UART0_IRQn、5);
    //为 UART 0启用中断
    NVIC_EnableIRQ (UART0_IRQn);

    //重新启用 UART0
    UART0->CTL =(1<<0)|(1<8)|(1<9);
    
    //GPIOA
    GPIOA->DEN |=(1<<0)|(1<1);
    GPIOA->AFSEL |=(1<<1)|(1<0);
    GPIOA->PCTL =(1<0)|(1<4);
    GPIOA->AMSEL &=~((1)|(1<1));


````μ A

-这是该中断的 ISR:
````μ A
Int A;
void UART0_Handler (void){
    
    UART0->ICR |=(1<<4);
//随机代码行设置断点以验证是否正在执行
    A = 4;
    
````μ A

-这是主要功能:

我启用`testCharacter = UART_InChar ();`行以激活忙等待。
````μ A
int main (空)

    Setup();
    
    while (1){
//激活线路以启用忙等待
        //testCharacter = UART_InChar ();
````μ A

和忙等待例程:
````μ A
unsigned char UART_Inchar (void){
    while ((UART0->FR&0x0010)!= 0);
    返回(unsigned char)(UART0->DR&0xFF);
````μ A

-使用 Keil uVision 4.
我已经在网上搜索了解决方案、但只发现了与 TivaWare 相关的问题、我不熟悉这一点、更喜欢避免这种问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Karim Nseir"]... 只发现了与 TivaWare 相关的问题、我不熟悉该问题、更喜欢避开该问题

    然而、"回避"是否会使您的"帮助者"付出更多的时间、努力和细节?

    您的"直接注册"代码样式要求您列出的每个注册表都先"访问"并深入检查、先是您、然后是"关注协助的所有人员!"    真的-由于您的"偏好"(顺便说一下)、您对"他人"(甚至是"乐于助人"的其他人)施加了更高的工作量-您不是吗?

    及时完成项目对于技术公司的营销成功至关重要。   因此、大多数此类公司"更喜欢避免 DRM 代码样式。"

    您可能会注意到(许多)供应商建议使用 API -原因如下所述...    代码示例-包含在 API 中-完成您的任务-因此证明是非常优先的!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Karim Nseir"]

    我尝试进行此操作、以便在不使用 TivaWare 的情况下通过 TivaLaunchpad 上的 UART 接收数据时触发中断。

    [/报价]

    我是 CB1、这一自我限制没有任何用处。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这种限制是否可以(除了)"自我强加?" (即对于学生必须(有些)高效的必要性几乎没有任何认可或赞赏的讲师!)    

    没有任何东西阻止共同使用 API (和)登记册审查-这一事实(方便)被那些谴责他们的指控的人避免,即"失业"。

    必须指出的是,决不会利用这种"强烈"的偏好,试图解释和/或证明这种偏好是合理的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我有自己的理由、没有任何事情会迫使您或任何其他人帮忙。

    或者进行非常非主题的评论...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="KMNMN">我正在尝试制作... 在 TivaLaunchpad 上运行。[/quot]

    赞同我的其他同事:不要尝试这样做。 这毫无意义。

    您说您的不熟悉 TivaWare、但熟悉它只需几个小时、而尝试绕过它将需要很多小时、并且仍然使您的项目容易出现许多难以修复的错误。

    建议:

    -下载并安装 TivaWare

    -在已安装的文件上找到/docs 文件夹,然后打开 Driverlib 用户指南-它是一个大小几乎为5Mb 的文件。

    转至 UART 章节、找到配置 UART 及其中断所需的功能。

    这将比任何其他选择都更容易!

    布鲁诺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="KMN"]或进行非常非主题的注释...

    您可能会很好地解释您认为"什么"、"不在话题?"    您可能注意到(现在)其他两位也赞同我的指导-似乎该主题已经得到了很好的处理!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    简单:我问有人是否可以帮助指出我的代码中的错误、以便在 UART 接收时触发中断。
    我从未就 TivaWare 是否是一种好的替代方案征求过建议或意见。

    此外、您似乎正在给我一个道德(再次主动)课程、这里"您的"直接注册"代码风格要求您列出的每个注册表都"访问"、并且首先经过您的深入检查、然后"所有关心帮助的人!" 真的-由于您的"偏好"(顺便说一下)、您对"他人"(甚至是"乐于助人"其他人)施加了更高的工作量-您不是吗?"
    这是我从未要求过的。

    这是一个论坛、用户可以根据需要选择提供帮助、也可以选择不提供帮助。 您的观点无关紧要、您的积极不受赞赏。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Bruno、我认为您是对的、我只是想使用这种技术可以让我获得更多深入的知识、我将学习如何对更多的 cortex MCU (而不仅仅是 TI)进行编程

    不过、我会给 TivaWare 一个快照。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="KMNMN"]我只是想使用此技术可以让我获得更多深入的知识,并且我将学习如何对更多的 cortex MCU (除 TI 之外)进行编程[/quot]

    其他 Cortex 微控制器上的外设与 TI Cortex 微控制器上的外设几乎没有什么共同点。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    KMN、欢迎您的光临!

    请记住、其他 cortex MCU 也会提供类似的库。 考虑一下:了解某个函数 UARTCharPUT()并不是非常重要的,但有用的是知道"有一个特定函数可以将字节放入 UART 传输端口或等待空间可用"。

    在新平台上查找等效驱动程序 API 比找出一组寄存器更快。 为了让您的决策更加简单、请考虑一下完全不同平台上的新项目、例如 MSP430。。。 同样、您只需了解哪个函数会将数据发送到 UART、而只需查看新数据表的寄存器章节即可!

    至于与我们的另一位同事的"战斗",请允许我在这里扔一些冰,缓解紧张,不能否认 CB1给了你一个有效和有经验的意见。 他的写作风格就是这样——一种风格——在那里没有任何愤怒! 让我们大家记住、无论读者需要什么重点、都可以阅读文本、这并不一定是作者所指的语气。

    宁静!

    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    虽然海报布鲁诺的写作好意受到了赞赏、但写作风格(即使有意见)源于"伟大的技术 BIZ 成功"。

    此处的每张海报-在请求帮助时-最好是"销售他们的请求"。 对每个响应者强制使用"海报偏好"、严重限制了这种姿态。   (这是事实-可以通过过去的过帐审查轻松证明)

    因此-意图-而不是"激进"是直接的-并为索取海报的利益而铸造。   (据指出,"由于最初发布的"限制性过强","没有收到答复,也没有预料到"。)    而且-这种"过度限制"的理由从未尝试过-因此"同情"被推至零...

    "海报问题/问题"并非始终是最深思熟虑/考虑周到的问题。  那些有更多的论坛、"血、汗、眼泪"的人是否(几乎)有"义务"来建议应用"硬舵"(将海报引导到卓越的课程)以及更快、更轻松和更好的结果?    如果这是"我的罪"-我相信我可以"活在...

    还请注意、此线程可能是"别人读取"-并且从"DRM"到 API 的"温和"方向(远离)可能传播...