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.

[参考译文] EK-TM4C123GXL:当我执行多个 UART 时、我的代码运行速度非常慢

Guru**** 2455560 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/640863/ek-tm4c123gxl-my-code-runs-very-slow-when-i-implement-multiple-uarts

器件型号:EK-TM4C123GXL

大家好、我基本上是使用引脚 A0、A1上的 UART0通过串行监视器监控数据、然后初始化引脚 PC4、PC5上的 UART1以将数据发送到 A6模块、一切正常。  
出于某些原因、我需要另一个 UART、因此我在引脚 PD6、PD7上初始化了 UART2。 问题是我的 UC 似乎接收信息、但没有发送、所以我解锁了端口、它开始发送数据、但发送数据需要2分钟等很长时间、我不明白这背后的原因。  

这些是我的代码的重要块  

int main (void){
int i、j;unsigned char b、N;char 字符;char end_c[2]={0x1a、'\0'};
unsigned char at_Response[100];unsigned char test[5]="hello";

UART_Init();//初始化 UART
UART_init1 ();//初始化 UART1
UART_Init2 ();//初始化 UART2

while (1)

这是我的代码

和 init 函数如下所示:  

void UART_Init (void){
//作为实验11的一部分,修改此程序以使用 UART0而不是 UART1
//从 PC5、PC4切换到 PA1、PA0
SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART0;//激活 UART0
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOA;//激活端口 A
UART0_CTL_R &&~UART_CTL_UARTEN;//禁用 UART
UART0_IBRD_R = 43;// IBRD = int (80、000、000 /(16 * 115200))= int (43.402778)
UART0_FBRD_R = 26;// FBRD =舍入(0.402778 * 64)= 26
UART0_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
UART0_CTL_R |= UART_CTL_UARTEN;//启用 UART
GPIO_PORta_AFSEL_R |= 0x03;//在 PA1、PA0上启用 alt funt
GPIO_PORta_den_R |= 0x03;//在 PA1、PA0上启用数字 I/O
//将 PA1、PA0配置为 UART0
GPIO_Porta_PCTL_R =(GPIO_Porta_PCTL_R&0xFFFFFF00)+0x00000011;
GPIO_PORta_AMSEL_R &=~0x03;//禁用 PA1、PA0上的模拟功能


void UART_init1 (void){
SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART1;//激活 UART1
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOC;//激活端口 C
UART1_CTL_R &=~UART_CTL_UARTEN;//禁用 UART
UART1_IBRD_R = 520;// 80、000、000/(16 * 115、200))= 43.40278
UART1_FBRD_R = 53;//6-bbit 小数、舍入(0.40278 * 64)= 26
UART1_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
UART1_CTL_R |= UART_CTL_UARTEN;//启用 UART
GPIO_PORTC_AFSEL_R |= 0x30;//在 PC5-4上启用 alt funt
GPIO_PORTC_DEN_R |= 0x30;//在 PC5-4上启用数字 I/O
//将 PC5-4配置为 UART1
GPIO_PORTC_PCTL_R =(GPIO_PORTC_PCTL_R&0xFF00FFFF)+0x00220000;
GPIO_PORTC_AMSEL_R &=~0x30;//禁用 PC5-4上的模拟功能

void UART_Init2 (void){
volatile unsigned long delay;
//作为实验11的一部分,修改此程序以使用 UART0而不是 UART1
//从 PC5、PC4切换到 PA1、PA0

SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART2;//激活 UART2
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOD;//激活端口 D
延迟= SYSCTL_RCGC2_R;//允许时钟启动的时间
GPIO_PORTD_LOCK_R = 0x4C4F434B;// 2)解锁 GPIO 端口 D
GPIO_PORTD_CR_R = 0x80;//允许更改 PD7
UART2_CTL_R &=~UART_CTL_UARTEN;//禁用 UART
UART2_IBRD_R = 520;// IBRD = int (80、000、000 /(16 * 115200))= int (43.402778)
UART2_FBRD_R = 53;// 8位字长(无奇偶校验位、一个停止位、FIFO)
UART2_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
UART2_CTL_R |= UART_CTL_UARTEN;//启用 UART
GPIO_PORTD_AFSEL_R |= 0xC0;//在 PD6、PD7上启用 alt funt
GPIO_PORTD_DEN_R |= 0xC0;//在 PD6、PD7上启用数字 I/O
//将 PD7、PD6配置为 UART2
GPIO_PORTD_PCTL_R =(GPIO_PORTD_PCTL_R&0x00FFFFFF)+ 0x11000000;
GPIO_PORTD_AMSEL_R &=~0xC0;//禁用 PA1、PA0上的模拟功能

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

    [引用 user5175619"]。 问题是我的 UC 似乎接收信息、但没有发送、所以我解锁了端口、它开始发送数据、但发送数据需要2分钟的时间、[/报价]

    为什么这是一段很长的时间(大量信息缺失)?

    [引用 user="user5175619"]这些是我的代码的重要块 

    或不是。

    [引用 user5175619]void UART_Init (void){
    //作为实验11的一部分,修改此程序以使用 UART0而不是 UART1
    //从 PC5、PC4切换到 PA1、PA0
    SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART0;//激活 UART0
    SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOA;//激活端口 A
    UART0_CTL_R &&~UART_CTL_UARTEN;//禁用 UART
    UART0_IBRD_R = 43;// IBRD = int (80、000、000 /(16 * 115200))= int (43.402778)
    UART0_FBRD_R = 26;// FBRD =舍入(0.402778 * 64)= 26
    UART0_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
    UART0_CTL_R |= UART_CTL_UARTEN;//启用 UART
    GPIO_PORta_AFSEL_R |= 0x03;//在 PA1、PA0上启用 alt funt
    GPIO_PORta_den_R |= 0x03;//在 PA1、PA0上启用数字 I/O
    //将 PA1、PA0配置为 UART0
    GPIO_Porta_PCTL_R =(GPIO_Porta_PCTL_R&0xFFFFFF00)+0x00000011;
    GPIO_PORta_AMSEL_R &=~0x03;//禁用 PA1、PA0上的模拟功能
    }[/报价]

    这就是所有 DRM。 使用 TIVAWare。 您更有可能获得帮助并获得有效的结果。

    也可使用过去的代码( 图标)。 只需直接粘贴代码就会丢失所有格式、使代码更难读取。

    user5175619 说:
    volatile unsigned long delay;

    这是不必要的。 只要

    user5175619 说:
    SYSCTL_RCGC2_R[/quot]被声明为易失性、就会如此

    (空) SYSCTL_RCGC2_R;

    执行与

    user5175619 说:
    delay = SYSCTL_RCGC2_R 相同的功能;//留出时间让时钟启动
    ,不需要额外的堆栈空间。 如果未将 SYSCTL_RCGC2_R 声明为易失性、则存在错误。

    Robert

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

    回答第一个问题:时间太长,因为当我用 uart1替换 uart2时,它的工作时间不到一秒,或者以毫秒为单位,也许问题是,如果 fifo 已满或没有,检查标志时,代码需要很长时间, 如果未完全填充、则应发送数据。 对于 UART0和 UART1、这是相同的算法、但对于 UART2、它不起作用

    void UART_OutChar2 (无符号字符数据){
    while (((UART2_FR_R&UART_FR_TXFF)!= 0);
    UART2_DR_R =数据;




    1 -抱歉、DRM 意味着什么? Tivaware 您是指驱动程序库? 如果确定可以使用、但我有截止日期、我使用的是 Jonathan Valvano 的启动文件、并根据我在实习期间学习的课程塑造世界。
    2-我有易失性的东西,但这不是问题,我仍然有超过30K 的可用堆栈,但我会考虑它
    3 -您的意思是什么( )请向我解释。
    我仍然不知道为什么 UART 2不起作用、现在我没有解决方案了

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

    [引用 user5175619"]回答您的第一个问题:时间太长,因为当我用 uart1替换 uart2时,它可以在不到一秒的时间内工作,或者以毫秒为单位,

    什么时间过长?您是如何测量的?

    user5175619 说:
    很抱歉,DRM 意味着什么?

    直接寄存器操作

    [引用 user5175619"]如果可以肯定,我可以使用它,但我有截止日期,我使用的是 Jonathan Valvano 的启动文件,并塑造世界,因为我在实习期间学习了课程。 [/报价]

    乔纳森带领你去了。 如果您使用 DRM、则必须首先重新发明 TIVAWare。

    [引用 user5175619]2-I 遇到了易失性问题、但这仍然不是问题

    我没想到它是这样的、只是代码不是特别清晰。

    [引用 user5175619]3-您的意思是什么( )请向我解释。[/引述]

    高级编辑框右上角的图标。 它是一个显示窗口的图标 一个示例。 单击该按钮、然后在弹出窗口中单击以通过代码。 大多数情况下、将 提供行号和语法突出显示。 即使它没有保留代码中的空白区域、也可以至少读取它。

    [报价用户="user5175619"]我仍然不知道为什么 UART 2不起作用,现在我没有解决方案[/报价]

    我想说、如果您切换到 TIVAWare、它会立即工作、如果不工作、您至少会有一些代码、其他人会愿意提供一些评论和建议。

    Robert

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

    看来,"塑造世界"可能更好地描述"塑造一条"佩戴良好"的小径(此处)!"    (此处-由于 他们(强制)拒绝了"经试验/测试/经证实/有效的 API "、因此参加无经验课程的学员(数量巨大)几乎肯定会降落!

    为什么教授没有"协助"的任务?    (是他的“方向”就是这里的土地(如此之多)——不是吗?)    他的到来/协助/过时的理由-- 将会大大"塑造世界"--难道不是吗?

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

    感谢您的帮助,我已经看到了 TIVAWare 的许多版本,主要是使用 UART、CAN、计时器、I/O 数字引脚、可能是中断和 ADC,所以我需要在该链接 http://www.ti.com/tool/SW-TM4C 中使用哪个版本 ? 我猜是第二个吗?
    如果你可以通过给我说明如何在 Windows 上安装它或者如何在我自己确定之前使用这些函数来节省我的时间,我知道我应该搜索,但我的截止日期非常近,我正在尝试

    回答您的问题“如何测量时间”:我使用 UART1将数据发送到 A6模块,并使用 UART0监视数据,因此当我发送数据时,我在串行监视器上接收回波和响应, 我基本上需要3个 UART 来通过 Modbus 从3个器件获取数据、以便可以通过 A6模块上传数据。
    因此、基本而言、我需要配置 uart0、1、2、3、4和5

    我有一个非常重要的问题:对于嵌入式软件工程师来说,使用 Tivaware 等库是否合适? 我认为我应该能够从头开始高效地设计我的代码、因为我使用多个品牌的微控制器。 顺便说一下、当我设计 UART 时、我进行了一些更改、使其适合我的项目、除非我启用了中断 UART、否则常规阻断和非阻断 UART 对我来说将不是一件好事。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我是第一次实习的初学者、我在这个项目上工作了2个月、所以我不知道、我认为即使在他的初始档案 uart2中也应该工作、但我无法使它工作。
    我会给他一个问题、以确保我计划这么做、但我在这里认为他们有相同的 Tiva C 编码方法
    如果可以、请提供帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感受你的痛苦-真的-罗伯特和我都做了...

    您能否"逃离"该特定 UART -使用另一个 UART -并报告同一情况(过度延迟)是否仍然存在?   罗伯特或我(曾经)遇到过"这样的问题!"、这是值得怀疑的。   

    而且-由于强制使用"DRM"-他(和我)的响应都被延迟了-不必要地变得更加复杂-因此将变得更加困难、并且需要更长时间-以及什么?    (我们希望提供帮助、但过时的"使用中"(DRM)方法实际上会阻止我们(和供应商)的帮助...    

    真的-已经收集了什么"对硬件的深入了解"(所谓的 DRM 使用理由)?    (和-如果(部分)很少-通过简单阅读详细的 MCU 手册-外设章节、可以更详细地了解这种情况-并且速度更快!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    其他 UART 根本不起作用:/我需要确保我的初始化函数没有任何问题,这样我就可以再猜一下了
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user5175619]感谢您的帮助,我已经看到了许多版本的 TIVAWare,主要是我将使用 UART、CAN、计时器、I/O 数字引脚、可能是中断和 ADC,所以我需要在 http://www.ti.com/tool/SW-TM4C 链接中使用哪个版本 ? 我猜是第二个吗? [/报价]

    对我来说是这样的。 我认为第一个组合了其余部分。 但是、应该让其他人确认。

    [引用 user5175619"]回答您的问题如何测量时间:我使用 UART1将数据发送到 A6模块,使用 UART0监视数据,因此当我发送数据时,我会在串行监视器上接收回显和响应,

    好的、如果我正确理解、您也可能需要一些事情来很好地测量您的日常工作的时间。 最好在发送引脚时切换引脚、并将引脚切换与"示波器(或逻辑分析仪)上显示的位流进行比较

    [引用 user5175619]我有一个非常重要的问题:对于嵌入式软件工程师,使用 Tivaware 等库是否合适? 我认为我应该能够从头开始高效地设计我的代码、因为我使用了多个品牌的微控制器。

    十年前、我会以非常不同的方式回答、我也对 TIVAWare 持怀疑态度。 事实上,我在使用它时有些不安。 可用的库要么太高的抽象级别、不够灵活、因此它们只能以特定的方式解决特定类型的问题、要么是硬件上如此小的外壳(例如每个位的函数) 它们没有太多用途。 此外,他们是婴儿车,没有得到很好的支持。

    TIVAWare 已达到正确的抽象级别。 它隐藏了不相关的详细级别(例如、确保在重要的位置正确管理访问顺序)、而不会强制您使用特定的访问模式(如果对您的问题不有用、它不会强制您使用 DMA)。 如果库不支持特定类型的使用、它还允许您在需要时和需要时添加 DRM 代码、写入器尚未假定他们知道硬件的所有可能使用方式。

    我了解其他现代 ARM 微型库具有类似的特性。 因此、在库之间进行迁移不应比在不同供应商的直接寄存器实现之间进行迁移更困难、而且可能更容易、因为外部细节可能仍被抽象化。

    也就是说、TIVAWare 没有问题。 我已要求 TI 承担多项任务(无类型安全、过分依赖32位 INT 等) 但与 DRM 相比、它仍然是效率和质量的提高。

    [引用 user5175619"]除非启用了中断 UART,否则常规阻止和非阻止 UART 对我来说将不是一件好事。

    这里的库是完全不可知的。 与 DRM 方法相比、它实际上完全不关心您使用的模型。 这是它的优势之一。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert 建议使用"GPIO 引脚切换"作为记录 UART 传输(以及可能的接收)的出色(&更简单)方法、这是一种"更安全、更实用/直接的方法"-以确认您的"延迟描述"证明是"真实"而非"虚拟"问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、请引导我按照什么来源将库安装到 Keil 编译器 asap 中、以及如何学习如何以最快的方式使用库? 非常感谢您的参与
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、我现在想知道 DRM 方法、我是一个壁画、我有一个需要良好内存优化的大型项目、我现在不想使用库。 此外、我可以在将来使用库、但现在我想构建基础知识。
    是否有 UART2初始化的图示? 如果您没有尝试、请您或任何人是否可以尝试使用 DRM 对其进行初始化、并确保它是否起作用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您(继续)"粘附"(可能)"错误的希望/梦想"(以某种方式)-" DRM 将引导您进入承诺的土地! (该功能现已扩展至"良好的内存优化"。)

    您、"不想使用"API -供应商 Robert 或我"想使用 DRM 仍然是一个令人怀疑的问题!"    (我们(部分)对"速度、易用性、效率"的关注-"DRM"未提供这些关注)

    为什么"推动 DRM "的人不会被推入服务中?    是不是他/她造成您(DRM 发布)不幸的原因?

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

    [报价用户="user5175619"]很抱歉,但我现在想知道 DRM 方法,

    这不是一件坏事、如果有更快的替代方案、在面临最后期限时也不是一件令人沉醉的事情。

    [引用 user5175619"]我是一个壁画,我有一个大项目[/引用]

    避免 DRM 的一个很好的理由

    [引用 user5175619"]我有一个需要良好内存优化的大型项目[/引用]

    这不能成为避免使用 TIVAWare 而支持 DRM 的原因

    您将在 TIVAWare 中使用的所有内容、否则您必须自行编写。 编写代码时、即使在保持质量的同时也不会占用太多的空间(即使牺牲了质量、也很可能不会这样做)、这是非常不可能的。 永久 RAM 占用量接近于零。 如果您选择使用基于 ROM 的函数(通过映射前缀)、则闪存占用空间可能会非常小、即使您没有使用、我也希望占用空间接近您编写的内容、并且可能会更少。 尽管您在具有大量存储器的微控制器上有一个短期项目、但您遇到的任何存储器问题都不会受到 TIVAWare 的显著影响、您自己的设计选择将会产生影响。

    [引用 user5175619"]此外,我可以在将来使用库,但现在我想构建基础知识。

    未完成您的项目?

    [引用 user5175619]UART2初始化的任何图示? [/报价]

    TIVAWare 提供了一些示例。

    [引用 user5175619"]如果您没有尝试,您或任何人可以尝试使用 DRM 对其进行初始化,并确保它是否起作用?

    不。 有几个人发现有必要添加 DRM 以增强 TIVAWare API (我可以想到可能需要它的一两个区域)、但我认为这里没有人定期使用它、尤其是初始化。

    Robert

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

    请注意、海报具有(某人的) Kool-Aid 的"深度挖掘"、并将(优秀)状态附加到"DRM"(即使不知道其含义、定义或(可能)后果!)

    还是-海报 Kool-Aid 的"净化器"应该证明这种" DRM 方向!"    值得注意的是,他/她“很少在这里见到”(“这么多”在岸上洗涤,去毛虫)-虽然破解的志愿人员投入时间/精力,“利用事实/理由”作为最好的消毒剂,一种经证实的、令人厌恶的-毫无道理的“消隐!”

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我实际上在他的论坛上发布了一个问题、但没有人查看或回答、我不知道他为什么不回答。
    这不是关于他、而是关于嵌入式行业、我知道在 Valeo、Mentor Graphics 和其他公司工作的人、他们从未使用过使用 DRM 的库、而且它的工作非常完美。 我只想知道 UART2 DRM 初始化部分、它类似于5行编码、或者至少是它不起作用的原因。

    今天、我浏览了 TIVAWare 数据表、我已经稍微了解了一些情况、但相信我所在位置的某个人、因为我真的不能(我希望我能这样做)、我永远不想依赖这个。

    我不是拒绝,我只是务实,知道我现在需要什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    作为一个嵌入了(大部分)他生活中的"内/外"的人、也是"了解行业中的人"的人、我注意到(任何)"速度、简化、增强"设计和/或项目进度"是(很多)首选。

    在特定情况下-此处/现在-除非 API 未能"满足高度特定的器件要求和/或性能级别"否则 API 已被标识为(到目前为止)"所选代码工具!"    作者:"供应商、有经验的用户和初学者/学生!"     

    与此形成鲜明对比的是、"DRM/ASM"证明"远远没有完美地工作"-而是"容易出错"-延迟-和"不可破解的天数"(通常只是几个小时)!    而且-尽管您有"希望/希望"-您的体验(项目几乎完全混乱)已经完全证实了众所周知的" DRM 的陷阱!"

    有人指出,你作了发言(即"因为我真的不能"--但从来没有继续"解释或证明"这一发言。   这使得他人难以掌握——特别是接受“你是如何得出这样的结论的”。

    在实际应用方面-您已经"崩溃/烧毁- 在这里冲上岸"(您的 DRM 同行也有如此多)-但(仍然)拒绝已知、安全、快速/受保护的 API 路径/港口。   该 API"拒绝"是否可以用任何"方式/方法"描述为"实用"?

    在这里对您做出回应的人、"希望您/类似的人取得成功!"    这是通过"Considered logic & the "财富 of nast user SUCCESS "-通过 API 实现"-通过"wish / Hope "和其他(无法解释/可疑)结论证明的最好方法...

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

    [引用 user5175619"]关于嵌入式行业,[/引用]

    没有嵌入式行业这样的东西。 嵌入式工作涵盖各种处理器(从4位掩膜 ROM 到多处理器要求)。

    [引用 user5175619"]我认识在 Valeo、Mentor Graphics 和其他公司工作的人员,他们从未使用过使用 DRM 的库,而且它运行得非常完美。

    我知道有人专门在集会上工作、有人在其他人在集会上工作。 两者都是相当狭窄的壁龛。

    对于使用 DRM 的 Mentor、我会问哪些处理器。 这仍然是处理某些 处理器的唯一真正方法、因为没有与 TIVAWare 等效的方法、必须执行需要执行的操作。 但是、在 TIVAWare 这样的应用中、重新发明 的过程似乎乏味、容易出错且愚蠢。

    [引用 user5175619"]我只想知道 UART2 DRM 初始化部分,它类似于5行编码,或者至少是它不起作用的原因。

    您可以随时复制 TIVAWare、但它似乎毫无意义。

    [引用 user5175619]今天 我浏览了 TIVAWare 数据表、我已经稍微了解了情况、但相信我所在位置的某个人、我永远不想依赖这一点、因为我真的不能(我希望我能这样做)。 [/报价]

    提醒我那些不想使用 C 语言的人、因为"他们不想依赖编译器"。 您没有提出任何理由来说明您为何不能依赖它。 尤其是作为一名学生、在很短的期限内完成学习。 为什么要花额外的时间来重现制造商提供的现成和测试的产品以及得到良好支持的产品?

    [引用 user5175619"],我现在非常实用,知道我需要什么。

    您说您必须在短时间内完成一个大型项目。 相反、我感到震惊的是、实际的方法是获取与致谢搭配使用的现有接口代码、并继续处理您的工作。

    [报价用户="user5175619"]我只想知道 UART2 DRM 初始化部分,它类似于5行编码[/报价]

    如果没有检查和备注、我估计您至少会被关闭2倍、可能更多。 这将是容易出错的代码。 您是否设置了 TDD 框架来对其进行测试?

    Robert

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

    [引用 USER="CB1_MOBILE]'作为一个让(大部分)生活在"内/周围"的人嵌入了-并且"了解行业中的人"-我注意到、(任何)"速度、简化、增强"设计和/或项目进度-(很多)是我的首选。 [/报价]

    尤其是在它是免费的情况下。 人们会不会以昂贵的工具而不是免费、高效、受支持、受调试的库? 我不知道有谁会对它进行平衡、一旦向自己保证它确实是广告上的。

    Robert

    请注意、即使特定公司有一个其所有产品都使用的抽象层、将抽象层写入 TIVAWare 而不是寄存器集仍然是一个增益。

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

    [引用用户="Robert Adsett"]

    用户5175619
    我只想知道 UART2 DRM 初始化部分、它类似于5行编码

    [/报价]

    有关工作效率(以及调试库值得使用的原因)的附加说明。 代码的软报价率为每天8到16 SLOC (代码源行) 1。 有些人做得更少、有些人做得更多。 学生项目可能会更"高效"、因为他们不生产产品、而是生产粗样机。 由于您在短时间内生成大型项目、您可能希望在估计要放入 DRM 初始化的工作量时考虑这一点(如果您目前接近该估计的低端、我会感到惊讶)。

    现在、您可能认为这一估计过于悲观、因此 SEI (卡内基梅隆大学软件工程研究所)研究了大量项目并发布了报告2。 他们的结果很有趣。

    • 每个 KESLOC 1.5个月的实时软件
    • 每个 KESLOC 1.3个月的工程软件
    • 每个 KESLOC 1.3个月的特派团支助软件
    • 自动化信息系统 ,每个 KESLOC 1.1个月

    KESLOC (千等效代码源行),月为人/月。 我怀疑您的项目将属于他们标记为工程软件的范围。 现在、这会因项目规模和组织而异。 他们有一些图表来展示这一点。

    根据 KESLOC、更低的人月数更好。

    请注意、这些是对数/对数图、还应注意最佳和最差绩效者之间的差异。

    因此、即使这种数据的来源(在很大程度上是必要的)是政府合同、您认为您可以进行比较的程度如何? SEI 对其来源和方法非常开放、并对他们选择所做数据集的原因及其对结论的影响进行评论。

    Robert

    1 - https://betterembsw.blogspot.ca/2010/05/only-10-lines-of-code-per-day-really.html

    2 - https://resources.sei.cmu.edu/asset_files/WhitePaper/2015_019_001_453264.pdf