OpenEdv-开源电子网

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

为什么程序不能进入主函数

[复制链接]

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2644
金钱
2644
注册时间
2017-4-4
在线时间
347 小时
发表于 2017-4-15 16:37:13 | 显示全部楼层 |阅读模式
10金钱
编写程序的时候,给程序移植了SPI,w25qxx程序,然后程序仿真每次就在 LDR     R0, =SystemInit这个位置,
如果给程序中中有关w25qxx的程序注释掉,就能正常运行。   请大神解答!!!!!
好心累,试了一天了。


QQ图片20170415163343.png

最佳答案

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

已经解决了,特地过来说一下,原因就是我在正点原子的程序上改的,但是我移植了别的程序的system中的usart程序,这个程序中用的是 int fputc(int ch, FILE *f) { if(ch =='\n') { USART_SendData(USART1, 0x0D); while (!(USART1->SR & USART_FLAG_TXE)); USART_SendData(USART1, 0x0A); while (!(USART1->SR & USART_FLAG_TXE)); } ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2644
金钱
2644
注册时间
2017-4-4
在线时间
347 小时
 楼主| 发表于 2017-4-15 16:37:14 | 显示全部楼层
已经解决了,特地过来说一下,原因就是我在正点原子的程序上改的,但是我移植了别的程序的system中的usart程序,这个程序中用的是
int fputc(int ch, FILE *f)
{
        if(ch =='\n')  
        {  
            USART_SendData(USART1, 0x0D);  
            while (!(USART1->SR & USART_FLAG_TXE));
            USART_SendData(USART1, 0x0A);  
            while (!(USART1->SR & USART_FLAG_TXE));  
        }  
        else  
        {  
            USART_SendData(USART1, (unsigned char)ch);  
            while (!(USART1->SR & USART_FLAG_TXE));   
        }  
        return ch;
}


这样一段代码,而原子哥上边用的是
#if 1
#pragma import(__use_no_semihosting)            
//±ê×¼¿aDèòaμÄÖ§3Öoˉêy                 
struct __FILE
{
        int handle;

};

FILE __stdout;      
//¶¨òå_sys_exit()òÔ±üÃaê1óðëÖ÷»úģ꽠   这个乱码大家可以在源程序看一下,虽然不理解,但是感觉这一句很有用
_sys_exit(int x)
{
        x = x;
}
//ÖØ¶¨òåfputcoˉêy
int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//Ñ-»··¢Ëí,Ö±μ½·¢Ëííê±Ï   
    USART1->DR = (u8) ch;      
        return ch;
}
#endif
这样一段代码。
结果就是进入了半主机模式,而不能用微库,所以就导致了上边的错误。

关于半主机 模式的相关知识,大家可以参考这个。
http://www.openedv.com/posts/list/12566.htm
http://www.stmcu.org/module/forum/thread-598294-1-1.html
很谢谢大家!!!!!!
回复

使用道具 举报

6

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1581
金钱
1581
注册时间
2016-7-2
在线时间
277 小时
发表于 2017-4-15 16:38:23 | 显示全部楼层
初始化失败了吧
回复

使用道具 举报

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2644
金钱
2644
注册时间
2017-4-4
在线时间
347 小时
 楼主| 发表于 2017-4-15 16:42:47 | 显示全部楼层

什么意思,该怎么做呀?  
如果给W25QXX_Init();注释 掉,我的程序就能运行了呀,为什么?
回复

使用道具 举报

6

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1581
金钱
1581
注册时间
2016-7-2
在线时间
277 小时
发表于 2017-4-15 16:46:42 | 显示全部楼层
jinx 发表于 2017-4-15 16:42
什么意思,该怎么做呀?  
如果给W25QXX_Init();注释 掉,我的程序就能运行了呀,为什么?

原子这儿就有这方面的资料,例程也有,了解一下吧
回复

使用道具 举报

6

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1581
金钱
1581
注册时间
2016-7-2
在线时间
277 小时
发表于 2017-4-15 16:48:14 | 显示全部楼层
SPI例程,用的W25Q64
回复

使用道具 举报

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2644
金钱
2644
注册时间
2017-4-4
在线时间
347 小时
 楼主| 发表于 2017-4-15 17:12:52 | 显示全部楼层
迪拜大呲花 发表于 2017-4-15 16:46
原子这儿就有这方面的资料,例程也有,了解一下吧

我就是移植的这个开发板带的资料。
回复

使用道具 举报

0

主题

174

帖子

0

精华

高级会员

Rank: 4

积分
725
金钱
725
注册时间
2016-1-9
在线时间
64 小时
发表于 2017-4-15 22:13:16 | 显示全部楼层
去看看SystemInit 这个函数有什么问题;
也可以直接把150-152 这3句代码删掉试试
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-4-6
在线时间
8 小时
发表于 2017-4-16 05:54:55 来自手机 | 显示全部楼层
你看看项目的配置
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-22 03:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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