OpenEdv-开源电子网

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

STM32堆栈有多大?能扩充么

[复制链接]

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
发表于 2016-10-11 12:40:43 | 显示全部楼层 |阅读模式
1金钱

最佳答案

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

在启动文件里改即可,IAR工程在设置的linker里设置。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

288

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
金钱
1212
注册时间
2011-4-9
在线时间
97 小时
发表于 2016-10-11 12:40:44 | 显示全部楼层
在启动文件里改即可,IAR工程在设置的linker里设置。
回复

使用道具 举报

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
 楼主| 发表于 2016-10-11 13:12:20 | 显示全部楼层
山峰雪狼 发表于 2016-10-11 13:05
在启动文件里改即可,IAR工程在设置的linker里设置。

[mw_shl_code=c,true]Stack_Size      EQU     0x00000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
这个么?

; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x00000200               

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit
[/mw_shl_code]
回复

使用道具 举报

28

主题

288

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
金钱
1212
注册时间
2011-4-9
在线时间
97 小时
发表于 2016-10-11 13:15:08 | 显示全部楼层
是的,直接改EQU后面的就行。
回复

使用道具 举报

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
 楼主| 发表于 2016-10-11 13:35:40 | 显示全部楼层
山峰雪狼 发表于 2016-10-11 13:15
是的,直接改EQU后面的就行。

唉,还是没有解决掉我的问题
回复

使用道具 举报

28

主题

288

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1212
金钱
1212
注册时间
2011-4-9
在线时间
97 小时
发表于 2016-10-11 16:52:10 | 显示全部楼层
你确定你的问题是由于堆栈过小的原因吗?
回复

使用道具 举报

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
 楼主| 发表于 2016-10-11 21:20:23 | 显示全部楼层
山峰雪狼 发表于 2016-10-11 16:52
你确定你的问题是由于堆栈过小的原因吗?

我也说不清了,好像是,我是用emwin加ucos写的一个录音功能,修改实验例程的代码,我用emwin的listbox生成录音文件列表显示在LCD上,我改的代码是点击选项播放对应的录音,会进入播放录音的函数,函数内容是一个死循环DMA发送数据到wm8978播放,正常是播放完一个文件就会退出死循环,但是我用emwin点击另外一个录音文件,会造成之前那个死循环没有退出,又进入播放录音函数的死循环里,就会卡死不能正常播放了。
回复

使用道具 举报

41

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2016-6-12
在线时间
61 小时
 楼主| 发表于 2016-10-11 21:36:18 | 显示全部楼层
本帖最后由 LVZHENHAI 于 2016-10-11 21:37 编辑
山峰雪狼 发表于 2016-10-11 16:52
你确定你的问题是由于堆栈过小的原因吗?

找到问题了。是我在放音模式下又进入录音模式就就卡死,怎么解决?
[mw_shl_code=c,true]void recoder_enter_rec_mode(void)            //这是录音模式的函数
{
        WM8978_ADDA_Cfg(0,1);                //&#191;a&#198;&#244;ADC
        WM8978_Input_Cfg(1,1,0);        //&#191;a&#198;&#244;ê&#228;è&#235;í¨μà(MIC&LINE IN)
        WM8978_Output_Cfg(0,1);                //&#191;a&#198;&#244;BYPASSê&#228;3&#246;
        WM8978_MIC_Gain(46);                //MIC&#212;&#246;ò&#230;éè&#214;&#195;
        
        WM8978_I2S_Cfg(2,0);                //·éà&#251;&#198;&#214;±ê×&#188;,16&#206;&#187;êy&#190;Y3¤&#182;è
        I2S2_Init(I2S_Standard_Phillips,I2S_Mode_MasterTx,I2S_CPOL_Low,I2S_DataFormat_16b);                        //·éà&#251;&#198;&#214;±ê×&#188;,&#214;÷&#187;ú·¢&#203;í,ê±&#214;óμíμ&#231;&#198;&#189;óDD§,16&#206;&#187;&#214;&#161;3¤&#182;è
        I2S2ext_Init(I2S_Standard_Phillips,I2S_Mode_SlaveRx,I2S_CPOL_Low,I2S_DataFormat_16b);                //·éà&#251;&#198;&#214;±ê×&#188;,′ó&#187;ú&#189;óê&#213;,ê±&#214;óμíμ&#231;&#198;&#189;óDD§,16&#206;&#187;&#214;&#161;3¤&#182;è        
        I2S2_SampleRate_Set(16000);        //éè&#214;&#195;2é&#209;ù&#194;ê
         I2S2_TX_DMA_Init((u8*)&i2splaybuf[0],(u8*)&i2splaybuf[1],1);                 //&#197;&#228;&#214;&#195;TX DMA
        DMA1_Stream4->CR&=~(1<<4);        //1&#216;±&#213;′&#171;ê&#228;íê3é&#214;D&#182;&#207;(&#213;aà&#239;2&#187;ó&#195;&#214;D&#182;&#207;&#203;íêy&#190;Y)
        I2S2ext_RX_DMA_Init(i2srecbuf1,i2srecbuf2,I2S_RX_DMA_BUF_SIZE/2);         //&#197;&#228;&#214;&#195;RX DMA
          i2s_rx_callback=rec_i2s_dma_rx_callback;//&#187;&#216;μ÷oˉêy&#214;&#184;wav_i2s_dma_callback
         I2S_Play_Start();        //&#191;aê&#188;I2Sêy&#190;Y·¢&#203;í(&#214;÷&#187;ú)
        I2S_Rec_Start();         //&#191;aê&#188;I2Sêy&#190;Y&#189;óê&#213;(′ó&#187;ú)
//        recoder_remindmsg_show(0);
}  
//&#189;&#248;è&#235CM ·&#197;ò&#244;&#196;£ê&#189;                  
void recoder_enter_play_mode(void)              //这是放音模式的函数
{
        WM8978_ADDA_Cfg(1,0);                //&#191;a&#198;&#244;DAC
        WM8978_Input_Cfg(0,0,0);        //1&#216;±&#213;ê&#228;è&#235;í¨μà(MIC&LINE IN)
        WM8978_Output_Cfg(1,0);                //&#191;a&#198;&#244;DACê&#228;3&#246;
        WM8978_MIC_Gain(0);                        //MIC&#212;&#246;ò&#230;éè&#214;&#195;&#206;a0
        I2S_Play_Stop();                        //í£&#214;1ê±&#214;ó·¢&#203;í
        I2S_Rec_Stop();                         //í£&#214;1&#194;&#188;ò&#244;
//        recoder_remindmsg_show(1);
}[/mw_shl_code]
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 21:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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