OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6662|回复: 6

寄存器版本模板创建不成功。

[复制链接]

2

主题

7

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-7-31
在线时间
2 小时
发表于 2021-7-31 16:09:53 | 显示全部楼层 |阅读模式
1金钱
初学者,已经严格按照视频和收藏操作好多遍了。不能通过编译。很少沮丧。
../SYSTEM/usart/usart.c(40): error: '#pragma import' is an ARM Compiler 5 extension, and is not supported by ARM Compiler 6 [-Warmcc-pragma-import]
#pragma import(__use_no_semihosting)   
        ^
../SYSTEM/usart/usart.c(42): error: redefinition of '__FILE'
struct __FILE
       ^
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h(119): note: previous definition is here
struct __FILE {
       ^


编译时有上述2个错误,还有21个Warnings。

库函数版本创建时没有任何问题。是因为原子的材料好多年没更新了吗?
请问按ARM Compiler6该如何修改?谢谢。

最佳答案

查看完整内容[请看2#楼]

正点原子的工程文件和System文件夹下的文件在升级到Keil5.25以后,如果使用ARM cc compiler v6,工需要做一些修改。 1、删除工程文件中CORE中的core_cm3.c文件。从工程中删除,不是从目录中删除。 2、修改usart.c文件,v6不支持#pragma import(__use_no_semihosting)指令了,所以这段代码不用了:将上一行的#if 1修改为#if 0,这段代码就不会编译了,里面__FILE重复定义的问题也就不存在了。然后将后面注释掉的int fputc()和int ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-5-16
在线时间
8 小时
发表于 2021-7-31 16:09:54 | 显示全部楼层
本帖最后由 oldtoad 于 2021-8-3 20:11 编辑

正点原子的工程文件和System文件夹下的文件在升级到Keil5.25以后,如果使用ARM cc compiler v6,工需要做一些修改。
1、删除工程文件中CORE中的core_cm3.c文件。从工程中删除,不是从目录中删除。
2、修改usart.c文件,v6不支持#pragma import(__use_no_semihosting)指令了,所以这段代码不用了:将上一行的#if 1修改为#if 0,这段代码就不会编译了,里面__FILE重复定义的问题也就不存在了。然后将后面注释掉的int fputc()和int GetKey()函数取消注释,然后在Keil中设置使用microLib库就可以了。这个就是将来调试串口的时候,使用microLib来调试,不用原子的做法绕开使用microLib。设置在Keil里面选魔术棒,在target标签下勾选Use microLib就可以了。
3、修改sys.c文件,最后一个设置栈顶函数修改为:
void MSR_MSP(u32 addr)
{
      __ASM volatile("MSR MSP, r0");
      __ASM volatile("BX r14");
}
4、在main.c文件前面添加#include <stdio.h>,用屏幕输入输出,不加也没关系。
再用6版Keil编译,如果还有错,先用5版编译器编译一次,然后再换成6版编译器,就没有问题了。
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-5-16
在线时间
8 小时
发表于 2021-7-31 18:27:31 | 显示全部楼层
__FILE是重复定义了,改个名字就可以。但是#pragma import不被v6的编译器支持的问题解决不了
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-7-31
在线时间
2 小时
 楼主| 发表于 2021-8-4 21:41:12 | 显示全部楼层
好的。多谢多谢。看了一遍视频。感觉这套教程有些老了。得更新了。基本概念还是讲解很清楚的。决定直接上手STM32CubeIDE了,感觉这才是未来,摸索了一整天,把几个实验都跑通了。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2022-5-1
在线时间
1 小时
发表于 2022-5-1 16:37:27 | 显示全部楼层
oldtoad 发表于 2021-7-31 16:09
正点原子的工程文件和System文件夹下的文件在升级到Keil5.25以后,如果使用ARM cc compiler v6,工需要做一 ...

请问改完之后是否会造成串口通讯不成功?我实验之后发现程序一直无法跑通,USART1无法运行
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2022-5-1
在线时间
1 小时
发表于 2022-5-1 16:39:05 | 显示全部楼层
oldtoad 发表于 2021-7-31 16:09
正点原子的工程文件和System文件夹下的文件在升级到Keil5.25以后,如果使用ARM cc compiler v6,工需要做一 ...

请问这么改完之后是否会造成UART1串口通讯不成功呢?我也是按教程做的,但就是运行不起来
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2022-5-1
在线时间
1 小时
发表于 2022-5-2 15:01:22 | 显示全部楼层
风起鸿庄 发表于 2022-5-1 16:39
请问这么改完之后是否会造成UART1串口通讯不成功呢?我也是按教程做的,但就是运行不起来

明白了,需勾选microlib,后全部编译,现在已经正常
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 08:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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