STM32 學習之不定長陣列的定義

2021-09-03 07:38:12 字數 937 閱讀 8965

通常情況下,keil、iar 在定義陣列的時候,都是需要指定陣列的長度,但是我們大多數情況下是不知道我們輸入的資料可能會有多長。

所以為了盡可能的包含所有的情況,通常的做法就是在定義陣列的時候,將陣列的長度定義的非常長。結果就會導致多數情況下,大量的記憶體空間被浪費了。

其實在c99新增的標準中是有關於這個的定義的,而且keil和iar 也是支援的。

下面我們來看看具體的實現方法:

一、在keil 中的設定方法

在keil4.7編譯配置管理的c/c++選項卡中misc control中填寫 --c99(或者 --gnu 此方法還未測試)

如圖

在linker選項卡中刪除misc control中的資料

在keil5編譯配置管理的c/c++選項卡中選中 c99 mode

在linker選項卡中刪除misc control中的資料

如圖

這樣的話,編譯就能不報錯,通過了…

二、在iar 中的設定方法

在options->c/c++ compiler的c dialect 選中 allow vla即可。

如圖

ok! 經過以上的設定,就可以不考慮陣列長度的問題了!哈哈哈~~

STM32空閒中斷 DMA解決接收不定長資料問題

串列埠的中斷型別 define usart it pe uint16 t 0x0028 define usart it txe uint16 t 0x0727 define usart it tc uint16 t 0x0626 define usart it rxne uint16 t 0x052...

STM32空閒中斷 DMA解決接收不定長資料問題

串列埠的中斷型別 cpp view plain copy define usart it pe uint16 t 0x0028 define usart it txe uint16 t 0x0727 define usart it tc uint16 t 0x0626 define usart it...

stm32 串列埠接受不定長資料方法(3種)

方法1 串列埠接受資料,定時器來判斷超時是否接受資料完成。方法2 dma接受 idle中斷 實現思路 採用stm32f103的串列埠1,並配置成空閒中斷idle模式且使能dma接收,並同時設定接收緩衝區和初始化dma。那麼初始化完成之後,當外部給微控制器傳送資料的時候,假設這幀資料長度是200個位元...