Enregistrer, pour faciliter l' avenir ~ lire les
éléments principaux:
1) utilisés pour expliquer le langage C,
2) Registre des adresses interprétation de mappage de noms.
Informations officielles: "le Manuel STM32 chinois V10 Référence" Chapitre 8 générales et aux fonctions de multiplexage IO (GPIO et afio)
1. Langage commun C
1.1 Opération: opération Six bits Opérateur
1) au niveau du bit: &
Exemple: 1011 & 0010 = 0010
2) au niveau du bit ou: |
Exemple: 1011 | 0010 1011 =
3) ou XOR: ^.
Exemple: 1011 ^ 0010 1001 =
4) Invert: -
Exemple: - 1011 = 0100
5) à gauche: <<
Exemple : 0110 << 1 = 1100 est
6) vers la droite: >>
Exemple: 1 = 0110 >> 0011
7) une combinaison de: au niveau du bit et après la mission: & =
GPIOA->CRL&=0XFFFFFF0F; //将第4-7位清0
GPIOA->CRL|=0X00000040; //设置相应位的值,不改变其他位的值
1.2 image définir des macros
définissent le préprocesseur de langage C pour la définition macro, peut améliorer la lisibilité du code source pour faciliter la programmation.
Format commun:
chaîne d'identification #define
identificateur défini comme un nom de macro. Chaîne peut être une expression constante, chaîne de format.
exemple:
#define SYSCLK_FREQ_72MHz 72000000
72000000 SYSCLK_FREQ_72MHz valeur d'identifiant de définition.
1.3 ifdef compilation conditionnelle
processus de développement du programme de micro - contrôleur, se heurtent souvent à une situation où certaines conditions sont remplies pour un ensemble d'instructions à compiler, et lorsque les conditions ne sont pas remplies un autre groupe de déclarations est compilé. La forme la plus commune de commande conditionnelle de compilation:
identificateur #ifdef
bloc 1.
#Else
bloc 2
#endif
Exemple:
#ifdef STM32F10X_HD
//大容量芯片需要的一些变量定义
#end
1.4 variables extern déclarée
avant le langage C peut être placé dans la variable ou la fonction extern pour indiquer des variables ou des fonctions définies dans d' autres fichiers, recherchez des conseils aux rencontres du compilateur définies dans d' autres modules dans cette variable et la fonction. la variable peut être déclarée extern pour de nombreuses fois, mais une seule fois défini .
1.5 type d'alias typedef
définit un type d'alias, plutôt qu'une simple substitution de macro. Type de pointeur peut être utilisé comme une déclaration selon laquelle une pluralité d'objets.
unsigned char uint8_t typedef;
typedef unsigned int court uint16_t;
typedef unsigned int uint32_t;
typedef unsigned uint64_t la __int64;
1,6 structure: type de configuration
nom de la structure struct {
liste des membres 1;
variable membre 2;
. . .
} Liste Nom de la variable,
vous pouvez définir des variables au moment structure indiquée peut également être défini a affirmé plus tard que la méthode est: les
variables de structure nom de la structure struct liste;
effet: le même type peut être un tableau, vous pouvez utiliser différents types de structures de tissus.
Structure évolutive.
exemple:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
Statiques 1.7
variables locales statiques déclarées dans la zone de stockage statique.
Il est à la fin de l'appel de fonction, ne sera pas libérée, la valeur restera toujours.
Ainsi , déclarée variable locale statique, avec fonction mémoire.
2. Nom de MDK dans l'analyse de mappage d'adresses de registre du
concept: pour MCU, toute la configuration sous - jacente, fin-tous les registres de configuration .
opération STM32 :
GPIOA-> ODR = 0x00000000,
le problème: la valeur est 0x00000000 comment enregistrer l' attribution d'adresses ODR GPIOA de? Ce GPIOA-> ODR nous écrivons ces lignes, est de savoir comment GPIOA cartographier l'adresse de registre ODR up? Je comprends ce tableau peut comprendre ci - dessous.
Connaissances :
1) L' apprentissage du langage C fonctions couramment utilisées;
2) En savoir l' adresse de registre de mappage de noms, reportez - vous l' expérience d' apprentissage STM32 cinq: GPIO expérience - basé sur l'opération de bits .