打印
[AT32F421]

AT32F421C8T7 使用gcc编译的问题

[复制链接]
2897|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
book1024|  楼主 | 2021-8-12 08:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 book1024 于 2021-8-16 11:25 编辑

调用函数: void USART_Init(USART_Type* USARTx, USART_InitType* USART_InitStruct),初始化串时,执行到语句:tmpreg = ((uint64_t)apbclock * 1000 / 16 / USART_InitStruct->USART_BaudRate);,之后程序就死掉了。

MCU: AT32F421C8T7
编译器:arm-none-eabi-gcc
调试:j-link,swd,arm-none-eabi-gdb

单独测试了一下:
u64 apbclock = 120000000 * 1000;
u32 baud_rate = 11520;
u32 tmpreg = 0;

apbclock /= 16;

tmpreg = apbclock / baud_rate;

执行到语句: apbclock /=16;,之后程序死掉了。

然后临时安装IAR,编译、调试,没有出现这个问题,由于版权原因,后续不能用IAR开发。

使用特权

评论回复
沙发
daichaodai| | 2021-8-13 20:38 | 只看该作者
u64 apbclock,32位MCU支持64位数据变量?

使用特权

评论回复
板凳
book1024|  楼主 | 2021-8-14 17:36 | 只看该作者
daichaodai 发表于 2021-8-13 20:38
u64 apbclock,32位MCU支持64位数据变量?

应该是由编译器进行转换处理的,这个是AT32库里面串口初始化函数中的代码。

用IAR编译,运行没出现错误,用arm-none-eabi-gcc编译运行这条语句会死掉。

使用特权

评论回复
地板
muyichuan2012| | 2021-8-15 23:01 | 只看该作者
有一个at32 eclipse gcc应用文档   ,可以参考参考。

使用特权

评论回复
评论
book1024 2021-8-16 11:24 回复TA
好的,谢谢 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

10

帖子

0

粉丝