Programming With STM32: Getting Started With the Nucleo Board and C/C++ - eBook PDF instant download
Programming With STM32: Getting Started With the Nucleo Board and C/C++ - eBook PDF instant download
https://ebookluna.com/download/programming-with-stm32-getting-
started-with-the-nucleo-board-and-c-c-ebook-pdf/
ebookluna.com
https://ebookluna.com/download/programming-arduino-getting-started-
with-sketches-tab-ebook-pdf/
ebookluna.com
https://ebookluna.com/download/programming-the-photon-getting-started-
with-the-internet-of-things-ebook-pdf/
ebookluna.com
https://ebookluna.com/download/programming-the-raspberry-pi-third-
edition-getting-started-with-python-ebook-pdf/
ebookluna.com
Programming Arduino: Getting Started with Sketches 3rd
Edition Simon Monk - eBook PDF
https://ebookluna.com/download/programming-arduino-getting-started-
with-sketches-ebook-pdf/
ebookluna.com
https://ebookluna.com/download/programming-the-photon-getting-started-
with-the-internet-of-things-tab-ebook-pdf/
ebookluna.com
https://ebookluna.com/product/ebook-pdf-programming-problem-solving-
and-abstraction-with-c/
ebookluna.com
https://ebookluna.com/download/readings-from-programming-with-c-ebook-
pdf-2/
ebookluna.com
https://ebookluna.com/download/readings-from-programming-with-c-ebook-
pdf/
ebookluna.com
Copyright © 2018 by McGraw-Hill Education. All rights reserved. Except as
permitted under the United States Copyright Act of 1976, no part of this
publication may be reproduced or distributed in any form or by any means, or
stored in a database or retrieval system, without the prior written permission of
the publisher.
ISBN: 978-1-26-003132-4
MHID: 1-26-003132-2
The material in this eBook also appears in the print version of this title: ISBN:
978-1-26-003131-7, MHID: 1-26-003131-4.
All trademarks are trademarks of their respective owners. Rather than put a
trademark symbol after every occurrence of a trademarked name, we use names
in an editorial fashion only, and to the benefit of the trademark owner, with no
intention of infringement of the trademark. Where such designations appear in
this book, they have been printed with initial caps.
This is a copyrighted work and McGraw-Hill Education and its licensors reserve
all rights in and to the work. Use of this work is subject to these terms. Except as
permitted under the Copyright Act of 1976 and the right to store and retrieve one
copy of the work, you may not decompile, disassemble, reverse engineer,
reproduce, modify, create derivative works based upon, transmit, distribute,
disseminate, sell, publish or sublicense the work or any part of it without
McGraw-Hill Education’s prior consent. You may use the work for your own
noncommercial and personal use; any other use of the work is strictly prohibited.
Your right to use the work may be terminated if you fail to comply with these
terms.
Peter enjoys cooking, fine wine, traveling, and spending quality time with his
family. His wife is my daughter, Shauna, and their child is my two-year-old
granddaughter, Evangeline.
Peter and I have spent many hours discussing many topics ranging from ancient
Greek artifacts to the latest technologies impacting modern society. I always
look forward to those interesting and challenging discussions.
CONTENTS AT A GLANCE
3 STM32CubeMX Application
6 Interrupts
7 Timers
9 Analog-to-Digital Conversion
Index
CONTENTS
Preface
3 STM32CubeMX Application
Pinout Tab
MCU Alternative Functions
Integrated Peripheral (IP) Tree Pane
Creating an Example Project using CubeMX
The main.c Code Listing
ARM Cortex Microcontroller Software Interface Standard (CMSIS)
CubeMX-Generated C Code
Compiling and Downloading the Project
Downloading the Hex Code
Summary
6 Interrupts
Interrupts
NVIC Specifications
Interrupt Process
External Interrupts
Interrupt Demonstration
Summary
7 Timers
STM Timer Peripherals
STM Timer Configuration
Update Event Calculation
Polled or Non-interrupt Blink LED Timer Demonstration
Test Run
Interrupt-Driven Blink LED Timer Demonstration
Test Run
Multi-rate Interrupt-Driven Blink LED Timer Demonstration
Test Run
Modification to the Multi-rate Program
Test Run
Summary
9 Analog-to-Digital Conversion
ADC Functions
ADC Module with HAL
ADC Conversion Modes
Channels, Groups, and Ranks
ADC Demonstration
ADC Demonstration Software
Summary
Microcomputer vs Microcontroller
I believe at the start of this book that it must make very clear the differences
between a microcomputer and a MCU. The reason for this distinction is very
simple: STM is a company that designs and manufacturers MCUs, not
microcomputers. I think my following definition of a MCU is as good as any
that I have read:
Right away, you can see from the definition that a MCU contains a
microprocessor which is sometimes referred to as a microcomputer. There also
must be both dynamic or volatile memory as well as nonvolatile or static
memory, where the latter holds any programs or scripts necessary to run the
microprocessor. Finally, there are always peripherals added to the design that
allow for the input and output of digital signals. There are often additional
peripherals such as timers, interrupt controllers, serial data ports, and a variety of
others depending upon what requirements the MCU must meet.
I discuss all the principal MCU components below to provide you with a solid
background to understand how a MCU functions. Most of the following
explanations are based on the voluminous amount of information provided by
STM on their microcontrollers. The reason behind STM providing such a large
amount of information is to allow engineers/software developers access to all the
data they need in order to incorporate STM products into original equipment
manufacturer (OEM) designs and products. This approach is fundamentally
different than the approach taken by suppliers of maker style boards and
products, such as the Arduino, Raspberry Pi, BeagleBone, and so forth. In the
case of the latter, board documentation is geared toward how to use a board in a
project. The STM data is extremely specific describing items such as the
nanosecond timing pulses between memory chips and processor buses. This is
exactly the reason why some of the STM MCU datasheets are over 1,100 pages
in length. Fortunately, the datasheet for the primary STM MCU I will be using in
this book is only 138 pages. I will provide later in this chapter the website where
you can download the datasheet.
The boards are named Nucleo-32, Nucleo-64, and Nucleo-144 from left to
right, respectively, as shown in Figure 1-1. The number in each name represents
the number of pins present in the MCU chip. Nucleo-64 is the principal board
used in this book.
Processor
The processor used in Nucleo-32 and Nucleo-64 boards is the ARM Cortex M-4
32-bit processor. It too has a lengthy 278-page user guide available from
infocenter.arm.com/help/topic/com.arm.doc.dui0553a/DUI0553A_cortex_m4_dgug.pdf
The actual processor circuitry is part of the STM MCU because STM has
purchased intellectual property (IP) rights from the ARM Corporation in order to
integrate it into its chips. However, for all practical purposes, the ARM
processor is programmed using the tools and techniques promulgated by the
ARM Corporation to support its processor IP. This distinction is of no
consequence in our case because the software tools to be used for the book
projects have all been carefully crafted and tested to work seamlessly together by
STM. Any license issues have already been resolved without bothering the end
user.
The following list contains some of the important specifications for the
Cortex M-4 processor for interested readers:
• Full-featured ARMv7-M instruction set, optimized for embedded
applications
• Floating point unit (FPU)
• Low-power 32-bit processor
• Memory protection unit (MPU)
• Nested vector interrupt controller (NVIC)
• Trace, breakpoint, and JTAG capabilities
• Advanced Microcontroller Bus Architecture (AMBA)
• Advanced High-Performance Bus (AHB5, AHB-Lite)
There are many more features to the Cortex M-4 processor as the 278-page
user guide would suggest. I would also recommend Joseph Yiu’s book, The
Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors, Third
Edition, to readers who really want to delve into this processor to a great depth.
Figure 1-2 is a block diagram of the Cortex M-4 processor showing all of the
listed items and more.
Figure 1-2 ARM Cortex M-4 block diagram.
Memory
The Cortex M-4 processor uses a Harvard architecture. This means that program
instructions are stored and retrieved from a memory separate and distinct from
the memory that holds data. The other common computer architecture is named
von Neumann in which instructions and data share a common memory. MCUs
have very limited memory and take advantage of the speed-up available by using
concurrent instruction and data access. Additionally, having separate memories
means that the processor is no longer constrained to the same sized data widths.
This means instructions can be fetched and executed in 4-byte chunks or 32 bits,
while data can be simultaneously handled with 1-byte or 8-bit chunks, thus
speeding up the overall throughput to and from the processor and memory.
Another advantage the Harvard architecture has over the von Neumann form is
that instruction prefetches can now be done in parallel with regular instruction
executions, thus further speeding up the overall system performance. Finally,
concurrent instruction and data access eliminates the need for data caches, which
are typically used in von Neumann machines. This further reduces system
complexity and power consumption.
The Nucleo-64 board used in this book is the STM MCU, model number
STM32F302R8. This chip has a 64-KB flash memory and a 16-KB static
random access memory (SRAM). Yes, those are kilobytes, not mega- or
gigabytes. You cannot expect to create any graphical programs that run in this
limited memory space. Microcontroller programs are truly a throwback to the
earliest days of computing where memory was very limited and developers had
to use every available byte to store and execute programs. Having mentioned the
scarce memory resources, you will be able to use a variety of modern-day
graphic-based programs to develop the MCU program, but they will run on a
PC. The compiled and optimized binary code will be downloaded into the MCU
from the PC.
It turns out that 64 KB is plenty of space to run fairly large programs because
the C/C++ cross-compiler used for this book’s projects produces optimize code,
eliminating all but the essential instructions needed for the program. The 16-KB
SRAM size is more than adequate for the dynamic memory requirements to
support a maximum 64-KB sized program. The actual memory is integrated onto
the MCU chip and its type is largely irrelevant for our purposes.
Peripherals
The peripherals are what make the MCU viable for its intended purposes. In my
microcontroller definition I stated, “a set of peripherals consistent with all design
requirements.” This means that microcontrollers typically have different
peripheral configurations depending upon the requirements they are designed to
meet. This is a major reason why STM manufactures such a wide variety of
MCUs. I will focus on the Nucleo-64 microcontroller I mentioned above and
will use its set of peripherals as my discussion points. I will next need to
demonstrate how the Nucleo-64 board is set up in order to fully explain how all
the peripheral features function with this board.
The first item you should note is that the board is actually made of two
sections, the top section being a ST-LINK/V2-1 programmer and the bottom
section is the STM32 MCU. The bottom section is also fitted with two sets of
connectors. One set is compatible with the Arduino shield pin configuration and
other set is the ST Morpho pinout configuration. There are two push buttons, B1
and B2, shown in the figure. B1 is multipurpose, while B2 is the reset push
button. There is also one LED indicated in the figure; however, there are several
others also which are shown in follow-on figures. The programmer section may
be separated from the microcontroller section by snapping the sparse printed
circuit board (PCB) joints, which can be seen in Figure 1-1. I would not
recommend doing so because you would lose all programming capability for the
MCU section. I suppose it was set up in this fashion so you could separate the
sections once there was a working MCU for a specific project and there was no
need for any further programming.
Figure 1-4 is a top view of the Nucleo-64 board with most of the components
clearly annotated.
Remarkably, there are relatively few components on the board. Most of the
space is taken up by connectors, push buttons, configuration jumpers, LEDs, and
the microcontroller chip. This sparse layout reflects the nature of the MCU,
which is to be an embedded device without any of the niceties needed for the
human-computer interface (HCI). HCI is possible with this board by using an
appropriate extension board that plugs into this board
Figure 1-5 shows the bottom side of the Nucleo-64 board.
Not much to see in this figure other than a bunch of 0-ohm resistors that may
be removed if it was desired to disable certain features such as the reset and user
buttons and user LED, or make hardware configuration changes to the ST-LINK
programmer.
Figure 1-6 is much more interesting as it shows the pinouts for all the
connectors on the top of the Nucleo-64 board.
Figure 1-6 Nucleo-64 pinout diagram.
There are two sets of pinouts shown in Figure 1-6, one belonging to the
Arduino and the other to the ST Morpho. Connectors CN5, CN6, CN8, and CN9
belong to the Arduino set. Connectors CN7 and CN10 belong to the Morpho set.
It is important to note that there are no one-to-one relationships between the sets.
The Morpho connectors are two double rows of 38 pins for a total of 76 pins.
The Arduino connectors are single-row connectors totaling 32 pins in all spread
across four connectors.
Arduino Connectors
Tables 1-1 to 1-4, which are from the Nucleo-64 User Guide, detail the Arduino
connectors with cross-references between Arduino pin terms and STM32 pins. I
have provided further clarifications on some of the pin functions following each
table, where I felt it was appropriate.
Other documents randomly have
different content
Español. Et, se remettant un peu, il me fit connaître par tous les
gestes possibles combien il m’était redevable pour sa délivrance.
—«Señor, lui dis-je avec tout l’espagnol que je pus rassembler, nous
parlerons plus tard; maintenant il nous faut combattre. S’il vous
reste quelque force, prenez ce pistolet et ce sabre et vengez-
vous.»—Il les prit avec gratitude, et n’eut pas plutôt ces armes dans
les mains, que, comme si elles lui eussent communiqué une nouvelle
énergie, il se rua sur ses meurtriers avec furie, et en tailla deux en
pièces en un instant; mais il est vrai que tout ceci était si étrange
pour eux, que les pauvres misérables, effrayés du bruit de nos
mousquets, tombaient de pur étonnement et de peur, et étaient
aussi incapables de chercher à s’enfuir que leur chair de résister à
nos balles. Et c’était là juste le cas des cinq sur lesquels Vendredi
avait tiré dans la pirogue; car si trois tombèrent des blessures qu’ils
avaient reçues, deux tombèrent seulement d’effroi.
Je tenais toujours mon fusil à la main sans tirer, voulant garder
mon coup tout prêt, parce que j’avais donné à l’Espagnol mon
pistolet et mon sabre. J’appelai Vendredi et lui ordonnai de courir à
l’arbre d’où nous avions fait feu d’abord, pour rapporter les armes
déchargées que nous avions laissées là; ce qu’il fit avec une grande
célérité. Alors je lui donnai mon mousquet, je m’assis pour recharger
les autres armes, et recommandai à mes hommes de revenir vers
moi quand ils en auraient besoin.
Tandis que j’étais à cette besogne, un rude combat s’engagea
entre l’Espagnol et un des sauvages, qui lui portait des coups avec
un de leurs grands sabres de bois, cette même arme qui devait
servir à lui ôter la vie si je ne l’avais empêché. L’Espagnol était aussi
hardi et aussi brave qu’on puisse l’imaginer: quoique faible, il
combattait déjà cet Indien depuis longtemps et lui avait fait deux
larges blessures à la tête; mais le sauvage, qui était un vaillant et un
robuste compagnon, l’ayant l’étreint dans ses bras, l’avait renversé
et s’efforçait de lui arracher mon sabre des mains. Alors l’Espagnol le
lui abandonna sagement, et, prenant son pistolet à sa ceinture, lui
tira au travers du corps et l’étendit mort sur la place avant que moi,
qui accourais à son secours, j’eusse eu le temps de le joindre.
A peine avais-je mis le pied sur le rocher, que mon œil distingua
parfaitement un navire à l’ancre, à environ deux lieues et demie de
moi, au sud-sud-est, mais seulement à une lieue et demie du rivage.
Par mes observations je reconnus, à n’en pas douter, que le
bâtiment devait être anglais, et l’embarcation une chaloupe anglaise.
Je ne saurais exprimer le trouble où je tombai, bien que la joie de
voir un navire, et un navire que j’avais raison de croire monté par
mes compatriotes, et par conséquent des amis, fût telle que je ne
puis la dépeindre. Cependant des doutes secrets, dont j’ignorais la
source, m’enveloppaient et me commandaient de veiller sur moi. Je
me pris d’abord à considérer quelle affaire un vaisseau anglais
pouvait avoir dans cette partie du monde, puisque ce n’était, ni pour
aller, ni pour revenir, le chemin d’aucun des pays où l’Angleterre a
quelque comptoir. Je savais qu’aucune tempête n’avait pu le faire
dériver de ce côté en état de détresse. S’ils étaient réellement
Anglais, il était donc plus que probable qu’ils ne venaient pas avec
de bons desseins; et il valait mieux pour moi demeurer comme
j’étais que de tomber entre les mains de voleurs et de meurtriers.
Que l’homme ne méprise pas les pressentiments et les
avertissements secrets du danger qui parfois lui sont donnés quand
il ne peut entrevoir la possibilité de son existence réelle. Que de tels
pressentiments et avertissements nous soient donnés, je crois que
peu de gens ayant fait quelque observation des choses puissent le
nier; qu’ils soient les manifestations certaines d’un monde invisible
et du commerce des esprits, on ne saurait non plus le mettre en
doute. Et s’ils semblent tendre à nous avertir du danger, pourquoi ne
supposerions-nous pas qu’ils nous viennent de quelque agent
propice,—soit suprême ou inférieur et subordonné, ce n’est pas là
que gît la question,—et qu’ils nous sont donnés pour notre bien?
Le fait présent me confirme fortement dans la justesse de ce
raisonnement, car si je n’avais pas été rendu circonspect par cette
secrète admonition, qu’elle vienne d’où elle voudra, j’aurais été
inévitablement perdu, et dans une condition cent fois pire
qu’auparavant, comme on le verra tout à l’heure.
Je ne me tins pas longtemps dans cette position sans voir
l’embarcation approcher du rivage, comme si elle cherchait une
crique pour y pénétrer et accoster la terre commodément. Toutefois,
comme elle ne remonta pas tout à fait assez loin, l’équipage
n’aperçut pas la petite anse où j’avais autrefois abordé avec mes
radeaux, et tira la chaloupe sur la grève à environ un demi-mille de
moi; ce qui fut très heureux, car autrement il aurait pour ainsi dire
débarqué juste à ma porte, m’aurait eu bientôt arraché de mon
château, et peut-être m’aurait dépouillé de tout ce que j’avais.
Quand ils furent sur le rivage, je me convainquis pleinement qu’ils
étaient Anglais, au moins pour la plupart. Un ou deux me semblèrent
Hollandais, mais cela ne se vérifia pas. Il y avait en tout onze
hommes, dont je trouvai que trois étaient sans armes et—autant que
je pus voir—garrottés. Les premiers quatre ou cinq qui descendirent
à terre firent sortir ces trois de la chaloupe, comme des prisonniers.
Je pus distinguer que l’un de ces trois faisait les gestes les plus
passionnés, des gestes de supplication, de douleur et de désespoir,
allant jusqu’à une sorte d’extravagance. Les deux autres, je le
distinguai aussi, levaient quelquefois leurs mains au ciel, et à la
vérité paraissaient affligés, mais pas aussi profondément que le
premier.
A cette vue je fus jeté dans un grand trouble, et je ne savais quel
serait le sens de tout cela.—Vendredi tout à coup s’écria en anglais,
et de son mieux possible:—«O maître! vous voir hommes anglais
manger prisonniers aussi bien qu’hommes sauvages!»—«Quoi! dis-je
à Vendredi, tu penses qu’ils vont les manger?»—«Oui, répondit-il,
eux vouloir les manger.»—«Non, non, répliquai-je: je redoute, à la
vérité, qu’ils ne veuillent les assassiner, mais sois sûr qu’ils ne les
mangeront pas.»
Durant tout ce temps je n’eus aucune idée de ce que réellement
ce pouvait être; mais je demeurais tremblant d’horreur à ce
spectacle, m’attendant à tout instant que les trois prisonniers
seraient massacrés. Je vis même une fois un de ces scélérats lever
un grand coutelas ou poignard,—comme l’appellent les marins,—
pour frapper un de ces malheureux hommes. Je crus que c’était fait
de lui, tout mon sang se glaça dans mes veines.
Je regrettais alors du fond du cœur notre Espagnol et le vieux
sauvage parti avec lui, et je souhaitais de trouver quelque moyen
d’arriver inaperçu à portée de fusil de ces bandits pour délivrer les
trois hommes; car je ne leur voyais point d’armes à feu. Mais un
autre expédient se présenta à mon esprit.
Après avoir remarqué l’outrageux traitement fait aux trois
prisonniers par l’insolent matelot, je vis que ses compagnons se
dispersèrent par toute l’île, comme s’ils voulaient reconnaître le
pays. Je remarquai aussi que les trois autres avaient la liberté d’aller
où il leur plairait; mais ils s’assirent tous trois à terre, très mornes et
l’œil hagard, comme des hommes au désespoir.
Ceci me fit souvenir du premier moment où j’abordai dans l’île et
commençai à considérer ma position. Je me remémorai combien je
me croyais perdu, combien désespérément je promenais mes
regards autour de moi, quelles terribles appréhensions j’avais, et
comment je me logeai dans un arbre toute la nuit, de peur d’être
dévoré par les bêtes féroces.
De même que cette nuit-là je ne me doutais pas du secours que
j’allais recevoir du providentiel entraînement du vaisseau vers le
rivage, par la tempête et la marée, du vaisseau qui depuis me
nourrit et m’entretint si longtemps; de même ces trois pauvres
désolés ne soupçonnaient pas combien leur délivrance et leur
consolation étaient assurées, combien elles étaient prochaines, et
combien effectivement et réellement ils étaient en état de salut au
moment même où ils se croyaient perdus et dans un cas désespéré.
Donc nous voyons peu devant nous ici-bas. Donc avons-nous de
puissantes raisons pour nous reposer avec joie sur le grand Créateur
du monde, qui ne laisse jamais ses créatures dans un entier
dénûment. Elles ont toujours dans les pires circonstances quelque
motif de lui rendre grâces, et sont quelquefois plus près de leur
délivrance qu’elles ne l’imaginent; souvent même elles sont amenées
à leur salut par les moyens qui leur semblaient devoir les conduire à
leur ruine.
C’était justement au plus haut de la marée montante que ces gens
étaient venus à terre; et, tantôt pourparlant avec leurs prisonniers,
et tantôt rôdant pour voir dans quelle espèce de lieu ils avaient mis
le pied, ils s’étaient amusés négligemment jusqu’à ce que la marée
fût passée, et que l’eau se fût retirée considérablement, laissant leur
chaloupe échouée.
Ils l’avaient confiée à deux hommes qui, comme je m’en aperçus
plus tard, ayant bu un peu trop d’eau-de-vie, s’étaient endormis.
Cependant l’un d’eux, se réveillant plus tôt que l’autre et trouvant la
chaloupe trop ensablée pour la dégager tout seul, se mit à crier
après ses camarades, qui erraient aux environs. Aussitôt ils
accoururent; mais tous leurs efforts pour la mettre à flot furent
inutiles: elle était trop pesante, et le rivage de ce côté était une
grève molle et vaseuse, presque comme un sable mouvant.
Voyant cela, en vrais marins, ce sont peut-être les moins
prévoyants de tous les hommes, ils passèrent outre, et se remirent à
vaguer çà et là dans le pays. Puis j’entendis l’un deux crier à un
autre,—en l’engageant à s’éloigner de la chaloupe:—«Hé! Jack,
peux-tu pas la laisser tranquille? à la prochaine marée elle
flottera.»—Ces mots me confirmèrent pleinement dans ma forte
présomption qu’ils étaient mes compatriotes.
Pendant tout ce temps je me tins à couvert, je n’osai pas une
seule fois sortir de mon château pour aller plus loin qu’à mon lieu
d’observation, sur le sommet du rocher, et très joyeux j’étais en
songeant combien ma demeure était fortifiée. Je savais que la
chaloupe ne pourrait être à flot avant dix heures, et qu’alors faisant
sombre, je serais plus à même d’observer leurs mouvements et
d’écouter leurs propos s’ils en tenaient.
Dans ces entrefaites je me préparai pour le combat comme
autrefois, bien qu’avec plus de précautions, sachant que j’avais
affaire avec une tout autre espèce d’ennemis que par le passé.
J’ordonnai pareillement à Vendredi, dont j’avais fait un excellent
tireur, de se munir d’armes. Je pris moi-même deux fusils de chasse
et je lui donnai trois mousquets. Ma figure était vraiment farouche:
j’avais ma formidable casaque de peau de chèvre, avec le grand
bonnet que j’ai mentionné, un sabre nu, deux pistolets à ma ceinture
et un fusil sur chaque épaule.
Mon dessein était, comme je le disais tout à l’heure, de ne faire
aucune tentative avant qu’il fit nuit; mais vers deux heures environ,
au plus chaud du jour, je m’aperçus qu’en rôdant ils étaient tous
allés dans les bois, sans doute pour s’y coucher et dormir. Les trois
pauvres infortunés, trop inquiets sur leur sort pour goûter le
sommeil, étaient cependant étendus à l’ombre d’un grand arbre, à
environ un quart de mille de moi, et probablement hors de la vue
des autres.
Sur ce, je résolus de me découvrir à eux et d’apprendre quelque
chose de leur condition. Immédiatement je me mis en marche dans
l’équipage que j’ai dit, mon serviteur Vendredi à une bonne distance
derrière moi, aussi formidablement armé que moi, mais ne faisant
pas tout à fait une figure de fantôme aussi effroyable que la mienne.
Je me glissai inaperçu aussi près qu’il me fut possible, et avant
qu’aucun d’eux m’eût découvert, je leur criai en espagnol:—«Qui
êtes-vous, gentlemen?»