小编Pau*_*and的帖子

在 atmega4809 上使用 USART1 发送多个字符会导致发送 0xFF

解决方案:

\n

事实证明它与 USART 没有任何关系。问题出在 Makefile 中。我重复使用了长期以来一直用于 atmega328p 和 atmega2560 的 Makefile。但是在将 elf 转换为 hex 文件时,此 Makefile 不包含 .rodata 部分。我想这部分从来没有用于“旧的”atmega 部件。在十六进制文件中包含 .rodata 部分后,一切都按 atmega4809 的预期工作。

\n

Makefile 之前的部分:

\n
$(OUT).hex: $(OUT).elf\n    rm -f $(OUT).hex $(OUT).eep.hex\n    $(OBJCOPY) -j .text -j .data -O ihex $(OUT).elf $(OUT).hex\n    $(SIZE) $(OUT).hex\n
Run Code Online (Sandbox Code Playgroud)\n

之后的 Makefile 部分:

\n
$(OUT).hex: $(OUT).elf\n    rm -f $(OUT).hex $(OUT).eep.hex\n    $(OBJCOPY) -j .text -j .data -j .rodata -O ihex $(OUT).elf $(OUT).hex\n    $(SIZE) $(OUT).hex\n
Run Code Online (Sandbox Code Playgroud)\n

原问题:

\n

以下代码的结果是:

\n

在此输入图像描述

\n
$(OUT).hex: $(OUT).elf\n    rm -f …
Run Code Online (Sandbox Code Playgroud)

c embedded avr avr-gcc usart

4
推荐指数
1
解决办法
171
查看次数

标签 统计

avr ×1

avr-gcc ×1

c ×1

embedded ×1

usart ×1