① IAR 中 defined symbols 有什麼用
在這里我們可以進行宏定義,這里宏定義只對當前的節點編譯時起作用,有些#ifdef ***,便會執行。
② IAR中多行的宏定義怎麼寫
這個是編程語言(C語言)語法相關的知識。
IAR系列教程:
http://blog.csdn.net/column/details/13696.html
③ 如何讓IAR編譯器自動移除庫里不用的函數以節省FLASH
需要用avr studio重新建立工程,並進行一些改編才可以模擬,因為編譯器不一樣,一個是IAR一個是avr-GCC。
具體說來區別主要體現在中斷的寫法上,還有iar的庫里的頭文件中有一些位操作的宏gcc的庫里並沒有。建議你搜索關鍵字:「AVR IAR GCC 區別」
④ IAR for STM8 的 編譯器 對Printf 的格式輸出不支持嗎
1: 一定一定要在主程序中加入 STDIO.H
2:putchar()要重新定義
3:串口波特率 115200 8 NO 1形式
4: 編譯器library 選型中 選擇FULL
5:如果實驗以上還是不行,還有一個方法就是自己來寫printf函數!
以下是網上摘抄的的printf函數,經過測試,完全可以用!
#include "stm8s.h"
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>//itoa()......庫中沒有
#include <string.h> //memset()
#include <math.h>
#include <ctype.h>
#define TRUE 1
#define FALSE 0
//#include <memory.h>
#define MAXBUF 15
#define DEFAULT_PRECI 3 //符點型默認精度
/*
由於不同的編譯器 putcha 和 getchar 形參和返回值略有不同。
因此此處採用宏定義的方式區別。
_RAISONANCE_ 和 _COSMIC_ 這2個宏是由編譯器自動添加的預編譯宏
*/
#ifdef _RAISONANCE_
#define PUTCHAR_PROTOTYPE int putchar (char c)
#define GETCHAR_PROTOTYPE int getchar (void)
#elif defined (_COSMIC_)
#define PUTCHAR_PROTOTYPE char putchar (char c)
#define GETCHAR_PROTOTYPE char getchar (void)
#else /* _IAR_ */
#define PUTCHAR_PROTOTYPE int putchar (int c)
#define GETCHAR_PROTOTYPE int getchar (void)
#endif /* _RAISONANCE_ */
⑤ iar 中設置stm32f072宏有什麼意義
去stm32的.h頭文件里看
需要定義哪個就定義哪個
#if
!defined
(STM32F4XX)
&&
!defined
(STM32F40XX)
&&
!defined
(STM32F427X)
/*
#define
STM32F40XX
*/
/*!<
STM32F40xx/41xx
Devices
*/
/*
#define
STM32F427X
*/
/*!<
STM32F427x/437x
Devices*/
#endif
#if
!defined
(USE_STDPERIPH_DRIVER)
/*#define
USE_STDPERIPH_DRIVER
*/
#endif
/*
USE_STDPERIPH_DRIVER
*/
這個是stm32的
stm32f4xx.h文件中的定義項,根據不同的晶元去定義不同的宏就可以了
⑥ 關於使用IAR Embedded Workbench開發時,在頭文件中遇到的宏定義看不懂,有哪位大蝦幫忙解決一下
ON()是 進入中斷,
{uint8_t sreg = SREG; __disable_interrupt()是關閉所有其他中斷,保護期間的程序不被打斷。
當 ENTER_CRITICAL_REGION() 和 LEAVE_CRITICAL_REGION() 之間的程序完成之後,執行 SREG = sreg;}便可以允許其他中斷了。
因為有的程序不能被中斷破壞。
⑦ 請教IAR中的一條宏定義語句
第一條語句ENTER_CRITICAL_REGION()是 進入中斷,
{uint8_t sreg = SREG; __disable_interrupt()是關閉所有其他中斷,保護期間的程序不被打斷。
當 ENTER_CRITICAL_REGION() 和 LEAVE_CRITICAL_REGION() 之間的程序完成之後,執行 SREG = sreg;}便可以允許其他中斷了。
因為有的程序不能被中斷破壞。
⑧ IAR 一直顯示 Warning[Pe223]: function "gpio_initial" declared implicitly
這個問題是因為宏USE_STDPERIPH_DRIVER沒有打開,Options->C/C++ Compiler的Preprocessor頁的Defined symbols中加上USE_STDPERIPH_DRIVER ,就不會再有這個告警、錯誤。
USE_STDPERIPH_DRIVER又是定義在哪裡,干什麼用?
USE_STDPERIPH_DRIVER定義在stm32f10x.h中
#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD)
/* #define STM32F10X_LD */ /*!< STM32 Low density devices */
/* #define STM32F10X_MD */ /*!< STM32 Medium density devices */
#define STM32F10X_HD /*!< STM32 High density devices */
#endif
把這個宏打開,也是解決連接出錯的一種方法。
那它到底和assert_param有什麼關系呢?我們繼續查找這個文件中的USE_STDPERIPH_DRIVER,發現
#ifdef USE_STDPERIPH_DRIVER
#include "stm32f10x_conf.h"
#endif
而stm32f10x_conf.h中就定義了assert_param。