【終了】stm 32ファームウェアライブラリアップグレードレコード
3613 ワード
ファームウェアライブラリは3.1から3.5にアップグレードされました.
小さな経験:
1.古いバージョンのライブラリ関数のレジスタ定義はstm 32 f 10 x_map.h,現在バージョンのライブラリ関数(3.1以降)のすべてのレジスタの定義はstm 32 f 10 xである.hの中.
したがってstm 32 f 10 x_を参照する限りmap.hのところはstm 32 f 10 xに変更する.h.
stm32f10x_map.h記録を読むには、ブログ「stm 32 f 10 x_map.h(3.0以降使用しない)記録を読む」を参照してください.
stm32f10x.h読書記録、詳細はブログ「stm 32 f 10 x.h読書記録」を参照.
2.最新版のユーザーズマニュアル:実はファームウェアライブラリにstm 32 f 10 xと呼ばれています.stdperiph_lib_umのCHMファイル.
3.オリジナルのファームウェアライブラリは3.1で、3.5にアップグレードします.しかし、変更後、エラーを報告し、調べてみるとstm 32 f 10 x_gpio.hバージョンはなんと2.0.1で、説明が徹底的に変更されていないため、ヘッダファイルは変更されていないように見え、結果としてkeilは対応するヘッダファイルが見つからず、インストール時のディレクトリファイルを呼び出した.
問題:
1.stm 32ファームウェアライブラリを2.0から3.5にアップグレードします.
自分で新しいプロジェクトを作って、3.5の中で必要なライブラリファイルをプロジェクトディレクトリの下にコピーして、問題をコンパイルします:
現象:
エラーアドレスにkeilインストールディレクトリの下にあるヘッダファイルが表示されます.
理由:
stm32f10x_conf.hに含まれるすべてのヘッダファイルは、独自のエンジニアリングディレクトリに存在する必要がありますが、3.5バージョンのファームウェアライブラリには元のヘッダファイルの一部がなく、keilはKeilインストールディレクトリの下の同名ファイルを呼び出します.
解決策:
stm 32 f 10 x_をconf.hに含まれるすべてのヘッダファイルは、3.5ファームウェアライブラリから自分のエンジニアリングディレクトリにコピーされます.
あるいは工事中に実際にヘッダファイルが必要ない場合はstm 32 f 10 x_conf.hでは対応する#include"......."注釈を落とす.
2.原版3.1、3.5にアップグレードするつもりで、GPIOは間違いを報告します:
現象:..\Source\CPU\IO\io.h(198): error: #20: identifier "GPIOMode_TypeDef"is undefined
原因:io.hはユーザのファイルである、元々は#include,ただしGPIOMode_Type Defは、#include"stm 32 f 10 x_gpio.h"に定義されている.(本来ならstm 32 f 10 x_conf.hで既に#include"stm 32 f 10 x_gpio.h"がオンになっているので、もう単独で#include"stm 32 f 10 x_gpio.h"は必要ありません.しかし、やはりそうです.分かりません.)
解決策:io.hでさらに#include"stm 32 f 10 x_gpio.h"で良いです.
3.
エラー:\Source\CPU\cpu.h(139):error:#20:identifier"bool"is undefined//bool未定義
理由:3.5 boolの定義は削除され、c規格と互換性があるためstdboolに定義を置く.hの中、このファイルはC:My ProgramKeilARMRV 31INCパスの中にあります.
これはstdboolです.hにおけるboolの定義:
解决方法:元はstm 32 fxxxでtype.hにおけるboolの定義(上記ではない)はstm 32 f 10 xに手動で加算.h中.
*********************************************************************************************************************************************************************
その他*************************************************************************************************
ネット上で探しているアップグレードで発生する可能性のある問題:
質問1:
http://wenku.baidu.com/link?url=1YHTQuOVd0RbhO-6uY_TUKPqzj5_Jx4FX8x0Hb-mq4zr2gJ9Yxx7UJ6elu_d1pngWu-W-07OU6nr_3xQMRaDc_7Elc3CsItTp9OfH_lfITO
質問2:
http://bbs.21ic.com/icview-392121-1-1.html
*********************************************************************************************************************************************************************
小さな経験:
1.古いバージョンのライブラリ関数のレジスタ定義はstm 32 f 10 x_map.h,現在バージョンのライブラリ関数(3.1以降)のすべてのレジスタの定義はstm 32 f 10 xである.hの中.
したがってstm 32 f 10 x_を参照する限りmap.hのところはstm 32 f 10 xに変更する.h.
stm32f10x_map.h記録を読むには、ブログ「stm 32 f 10 x_map.h(3.0以降使用しない)記録を読む」を参照してください.
stm32f10x.h読書記録、詳細はブログ「stm 32 f 10 x.h読書記録」を参照.
2.最新版のユーザーズマニュアル:実はファームウェアライブラリにstm 32 f 10 xと呼ばれています.stdperiph_lib_umのCHMファイル.
3.オリジナルのファームウェアライブラリは3.1で、3.5にアップグレードします.しかし、変更後、エラーを報告し、調べてみるとstm 32 f 10 x_gpio.hバージョンはなんと2.0.1で、説明が徹底的に変更されていないため、ヘッダファイルは変更されていないように見え、結果としてkeilは対応するヘッダファイルが見つからず、インストール時のディレクトリファイルを呼び出した.
問題:
1.stm 32ファームウェアライブラリを2.0から3.5にアップグレードします.
自分で新しいプロジェクトを作って、3.5の中で必要なライブラリファイルをプロジェクトディレクトリの下にコピーして、問題をコンパイルします:
C:\Keil\ARM\INC\ST\STM32F10x\stm32f10x_type.h(23): error: #256: invalid redeclaration of type name "s32" (declared at line 487 of "..\CMSIS\stm32f10x.h")
C:\Keil\ARM\INC\ST\STM32F10x\stm32f10x_type.h(27): error: #256: invalid redeclaration of type name "sc32" (declared at line 491 of "..\CMSIS\stm32f10x.h")
...
現象:
エラーアドレスにkeilインストールディレクトリの下にあるヘッダファイルが表示されます.
理由:
stm32f10x_conf.hに含まれるすべてのヘッダファイルは、独自のエンジニアリングディレクトリに存在する必要がありますが、3.5バージョンのファームウェアライブラリには元のヘッダファイルの一部がなく、keilはKeilインストールディレクトリの下の同名ファイルを呼び出します.
解決策:
stm 32 f 10 x_をconf.hに含まれるすべてのヘッダファイルは、3.5ファームウェアライブラリから自分のエンジニアリングディレクトリにコピーされます.
あるいは工事中に実際にヘッダファイルが必要ない場合はstm 32 f 10 x_conf.hでは対応する#include"......."注釈を落とす.
2.原版3.1、3.5にアップグレードするつもりで、GPIOは間違いを報告します:
現象:..\Source\CPU\IO\io.h(198): error: #20: identifier "GPIOMode_TypeDef"is undefined
原因:io.hはユーザのファイルである、元々は#include
解決策:io.hでさらに#include"stm 32 f 10 x_gpio.h"で良いです.
3.
エラー:\Source\CPU\cpu.h(139):error:#20:identifier"bool"is undefined//bool未定義
理由:3.5 boolの定義は削除され、c規格と互換性があるためstdboolに定義を置く.hの中、このファイルはC:My ProgramKeilARMRV 31INCパスの中にあります.
これはstdboolです.hにおけるboolの定義:
/* stdbool.h: ISO/IEC 9899:1999 (C99), section 7.16 */
/* Copyright (C) ARM Ltd., 2002
* All rights reserved
* RCS $Revision: 102466 $
* Checkin $Date: 2006-08-23 11:37:17 +0100 (Wed, 23 Aug 2006) $
* Revising $Author: drodgman $
*/
#ifndef __bool_true_false_are_defined
#define __bool_true_false_are_defined 1
#ifndef __cplusplus /* In C++, 'bool', 'true' and 'false' are keywords */
#define bool _Bool
#define true 1
#define false 0
#endif
#endif /* __bool_true_false_are_defined */
解决方法:元はstm 32 fxxxでtype.hにおけるboolの定義(上記ではない)はstm 32 f 10 xに手動で加算.h中.
*********************************************************************************************************************************************************************
その他*************************************************************************************************
ネット上で探しているアップグレードで発生する可能性のある問題:
質問1:
http://wenku.baidu.com/link?url=1YHTQuOVd0RbhO-6uY_TUKPqzj5_Jx4FX8x0Hb-mq4zr2gJ9Yxx7UJ6elu_d1pngWu-W-07OU6nr_3xQMRaDc_7Elc3CsItTp9OfH_lfITO
質問2:
http://bbs.21ic.com/icview-392121-1-1.html
*********************************************************************************************************************************************************************