-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathBoard.h
996 lines (840 loc) · 52.2 KB
/
Board.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
//////////////////////////////////////////////////////////////////////////////
//
// Filename: Board.h
// Version:
// Data:
//
// Author: Liu, Zemin
// Company: JYE Tech Ltd.
// Web: www.jyetech.com
//
//-----------------------------------------------------------------------------
//
// Target: STM32F103C8
// Tool chain: CodeSourcery G++
//
//-----------------------------------------------------------------------------
// Required files:
//
//-----------------------------------------------------------------------------
// Notes:
//
//
//-----------------------------------------------------------------------------
// Revision History:
//
///////////////////////////////////////////////////////////////////////////////
//
//
#ifndef Board_h
#define Board_h
#include "Common.h"
#include "stm32f10x.h"
//#include "stm32f10x_conf.h"
// TFT control ports
#define TFT_nRESET_Port GPIOB
#define TFT_nRESET_Bit 9
#define TFT_RS_Port GPIOC
#define TFT_RS_Bit 14
#define TFT_nCS_Port GPIOC
#define TFT_nCS_Bit 13
#define TFT_nWR_Port GPIOC
#define TFT_nWR_Bit 15
#define TFT_nRD_Port GPIOA
#define TFT_nRD_Bit 6
#define TFT_Port (GPIOB->ODR)
#define TFT_Port_In (GPIOB->IDR)
#define LED_Base GPIOA
#define LED_Port (GPIOA->ODR)
#define LED_Bit 15
#define Beep_Base (GPIOA)
#define Beep_Port (GPIOA->ODR)
#define Beep_Bit 15
#define I2C_SCL_Port GPIOB
#define I2C_SCL_Bit 10
#define I2C_SDA_Port GPIOB
#define I2C_SDA_Bit 11
// I2C Macros
#define SetSCL_H (I2C_SCL_Port->BSRR = 1 << I2C_SCL_Bit)
#define SetSCL_L (I2C_SCL_Port->BRR = 1 << I2C_SCL_Bit)
#define SetSDA_H (I2C_SDA_Port->BSRR = 1 << I2C_SDA_Bit)
#define SetSDA_L (I2C_SDA_Port->BRR = 1 << I2C_SDA_Bit)
#define GetSDA (BitTest(I2C_SDA_Port->IDR, (1 << I2C_SDA_Bit)))
// Pushbuttons and rotary encoder
#define PB_Port (GPIOB->IDR)
#define PB_Bits 0x00F8
#define ENC_Port (GPIOB->IDR)
#define ENC_Bits 0x0003
// VSen control
#define VSen_Port (GPIOA->ODR)
#define VSen_Bits 0x001E
// ILI9325 command registers
#define TFT_DriverOutputControl 0x0001
#define TFT_DrivingWaveControl 0x0002
#define TFT_EntryMode 0x0003
#define TFT_DisplayControl1 0x0007
#define TFT_DisplayControl2 0x0008
#define TFT_DisplayControl3 0x0009
#define TFT_DisplayControl4 0x000A
#define TFT_FrameMarkerPosition 0x000D
#define TFT_PowerControl1 0x0010
#define TFT_PowerControl2 0x0011
#define TFT_PowerControl3 0x0012
#define TFT_PowerControl4 0x0013
#define TFT_DramHAddress 0x0020
#define TFT_DramVAddress 0x0021
#define TFT_DramDataWrite 0x0022
#define TFT_DramDataRead 0x0022
#define TFT_VCOMH_Control 0x0029
#define TFT_FrameRateColor 0x002B
#define TFT_HAddressStart 0x0050
#define TFT_HAddressEnd 0x0051
#define TFT_VAddressStart 0x0052
#define TFT_VAddressEnd 0x0053
#define TFT_GateScanControl1 0x0060
#define TFT_GateScanControl2 0x0061
#define TFT_Panel_IF_Control1 0x0090
#define TFT_Panel_IF_Control2 0x0092
#define TFT_FAh_FEh_Enable 0x00FF
// ======== STM32 Register Constants =====================
// -------- Register address -----------------
// RCC registers
#define RCC_AHBENR (*((unsigned int *)(0x40021014)))
#define RCC_APB2ENR (*((unsigned int *)(0x40021018)))
#define RCC_APB1ENR (*((unsigned int *)(0x4002101C)))
// GPIO registers
#define GPIOA_CRL (*((unsigned int *)(0x40010800)))
#define GPIOA_BSRR (*((unsigned int *)(0x40010810)))
#define GPIOA_BRR (*((unsigned int *)(0x40010814)))
#define GPIOB_CRL (*((unsigned int *)(0x40010C00)))
#define GPIOB_CRH (*((unsigned int *)(0x40010C04)))
#define GPIOB_IDR (*((unsigned int *)(0x40010C08)))
#define GPIOB_ODR (*((unsigned int *)(0x40010C0C)))
#define GPIOB_BSRR (*((unsigned int *)(0x40010C10)))
#define GPIOB_BRR (*((unsigned int *)(0x40010C14)))
#define GPIOB_LCKR (*((unsigned int *)(0x40010C18)))
#define GPIOD_CRL (*((unsigned int *)(0x40011400)))
#define GPIOD_CRH (*((unsigned int *)(0x40011404)))
#define GPIOD_IDR (*((unsigned int *)(0x40011408)))
#define GPIOD_ODR (*((unsigned int *)(0x4001140C)))
#define GPIOD_BSRR (*((unsigned int *)(0x40011410)))
#define GPIOD_BRR (*((unsigned int *)(0x40011414)))
#define GPIOD_LCKR (*((unsigned int *)(0x40011418)))
#define GPIOE_CRL (*((unsigned int *)(0x40011800)))
#define GPIOE_CRH (*((unsigned int *)(0x40011804)))
#define GPIOE_IDR (*((unsigned int *)(0x40011808)))
#define GPIOE_ODR (*((unsigned int *)(0x4001180C)))
#define GPIOE_BSRR (*((unsigned int *)(0x40011810)))
#define GPIOE_BRR (*((unsigned int *)(0x40011814)))
#define GPIOE_LCKR (*((unsigned int *)(0x40011818)))
// FSMC registers
#define FSMC_BCR1 (*((U32 *)(0xA0000000)))
#define FSMC_BTR1 (*((U32 *)(0xA0000004)))
#define FSMC_BWTR1 (*((U32 *)(0xA0000104)))
#define FSMC_BCR2 (*((U32 *)(0xA0000008)))
#define FSMC_BTR2 (*((U32 *)(0xA000000C)))
#define FSMC_BWTR2 (*((U32 *)(0xA000010C)))
// ---------------- Bit fields ------------------------
// Clock control
//-- AHBENR
#define SDIOEN 10
#define FSMCEN 8
#define CRCEN 6
#define FLITFEN 4
#define SRAMEN 2
#define DMA2EN 1
#define DMA1EN 0
//-- APB1ENR
#define DACEN 29
#define PWREN 28
#define BKPEN 27
#define CANEN 25
#define USBEN 23
#define I2C2EN 22
#define I2C1EN 21
#define UART5EN 20
#define UART4EN 19
#define USART3EN 18
#define USART2EN 17
#define SPI3EN 15
#define SPI2EN 14
#define WWDGEN 11
#define TIM7EN 5
#define TIM6EN 4
#define TIM5EN 3
#define TIM4EN 2
#define TIM3EN 1
#define TIM2EN 0
//-- APB2ENR
#define ADC3EN 15
#define USART1EN 14
#define TIM8EN 13
#define SPI1EN 12
#define TIM1EN 11
#define ADC2EN 10
#define ADC1EN 9
#define IOPGEN 8
#define IOPFEN 7
#define IOPEEN 6
#define IOPDEN 5
#define IOPCEN 4
#define IOPBEN 3
#define IOPAEN 2
#define AFIOEN 0
// ---------------- Bit fields ------------------------
// Clock control
//
/******************** Bit definition for RCC_CR register ********************/
#define HSION 0 /*!< Internal High Speed clock enable */
#define HSIRDY 1 /*!< Internal High Speed clock ready flag */
#define HSITRIM 3 /*!< Internal High Speed clock trimming */
#define HSICAL 8 /*!< Internal High Speed clock Calibration */
#define HSEON 16 /*!< External High Speed clock enable */
#define HSERDY 17 /*!< External High Speed clock ready flag */
#define HSEBYP 18 /*!< External High Speed clock Bypass */
#define CSSON 19 /*!< Clock Security System enable */
#define PLLON 24 /*!< PLL enable */
#define PLLRDY 25 /*!< PLL clock ready flag */
/******************* Bit definition for RCC_CFGR register *******************/
/*!< SW configuration */
#define SW 0 /*!< SW[1:0] bits (System clock Switch) */
/*!< SWS configuration */
#define SWS 2 /*!< SWS[1:0] bits (System Clock Switch Status) */
/*!< HPRE configuration */
#define HPRE 4 /*!< HPRE[3:0] bits (AHB prescaler) */
/*!< PPRE1 configuration */
#define PPRE1 8 /*!< PRE1[2:0] bits (APB1 prescaler) */
/*!< PPRE2 configuration */
#define PPRE2 11 /*!< PRE2[2:0] bits (APB2 prescaler) */
/*!< ADCPPRE configuration */
#define ADCPRE 14 /*!< ADCPRE[1:0] bits (ADC prescaler) */
#define PLLSRC 16 /*!< PLL entry clock source */
#define PLLXTPRE 17 /*!< HSE divider for PLL entry */
/*!< PLLMUL configuration */
#define PLLMULL 18 /*!< PLLMUL[3:0] bits (PLL multiplication factor) */
#define USBPRE 22 /*!< USB Device prescaler */
/*!< MCO configuration */
#define MCO 24 /*!< MCO[2:0] bits (Microcontroller Clock Output) */
/*!<****************** Bit definition for RCC_CIR register ********************/
#define LSIRDYF 0 /*!< LSI Ready Interrupt flag */
#define LSERDYF 1 /*!< LSE Ready Interrupt flag */
#define HSIRDYF 2 /*!< HSI Ready Interrupt flag */
#define HSERDYF 3 /*!< HSE Ready Interrupt flag */
#define PLLRDYF 4 /*!< PLL Ready Interrupt flag */
#define CSSF 7 /*!< Clock Security System Interrupt flag */
#define LSIRDYIE 8 /*!< LSI Ready Interrupt Enable */
#define LSERDYIE 9 /*!< LSE Ready Interrupt Enable */
#define HSIRDYIE 10 /*!< HSI Ready Interrupt Enable */
#define HSERDYIE 11 /*!< HSE Ready Interrupt Enable */
#define PLLRDYIE 12 /*!< PLL Ready Interrupt Enable */
#define LSIRDYC 16 /*!< LSI Ready Interrupt Clear */
#define LSERDYC 17 /*!< LSE Ready Interrupt Clear */
#define HSIRDYC 18 /*!< HSI Ready Interrupt Clear */
#define HSERDYC 19 /*!< HSE Ready Interrupt Clear */
#define PLLRDYC 20 /*!< PLL Ready Interrupt Clear */
#define CSSC 23 /*!< Clock Security System Interrupt Clear */
/***************** Bit definition for RCC_APB2RSTR register *****************/
#define AFIORST 0 /*!< Alternate Function I/O reset */
#define IOPARST 2 /*!< I/O port A reset */
#define IOPBRST 3 /*!< I/O port B reset */
#define IOPCRST 4 /*!< I/O port C reset */
#define IOPDRST 5 /*!< I/O port D reset */
#define IOPERST 6 /*!< I/O port E reset */
#define IOPFRST 7 /*!< I/O port F reset */
#define IOPGRST 8 /*!< I/O port G reset */
#define ADC1RST 9 /*!< ADC 1 interface reset */
#define ADC2RST 10 /*!< ADC 2 interface reset */
#define TIM1RST 11 /*!< TIM1 Timer reset */
#define SPI1RST 12 /*!< SPI 1 reset */
#define TIM8RST 13 /*!< TIM8 Timer reset */
#define USART1RST 14 /*!< USART1 reset */
#define ADC3RST 15 /*!< ADC3 interface reset */
/***************** Bit definition for RCC_APB1RSTR register *****************/
#define TIM2RST 0 /*!< Timer 2 reset */
#define TIM3RST 1 /*!< Timer 3 reset */
#define TIM4RST 2 /*!< Timer 4 reset */
#define TIM5RST 3 /*!< Timer 5 reset */
#define TIM6RST 4 /*!< Timer 6 reset */
#define TIM7RST 5 /*!< Timer 7 reset */
#define WWDGRST 11 /*!< Window Watchdog reset */
#define SPI2RST 14 /*!< SPI 2 reset */
#define SPI3RST 15 /*!< SPI 3 reset */
#define USART2RST 17 /*!< USART 2 reset */
#define USART3RST 18 /*!< RUSART 3 reset */
#define UART4RST 19 /*!< UART 4 reset */
#define UART5RST 20 /*!< UART 5 reset */
#define I2C1RST 21 /*!< I2C 1 reset */
#define I2C2RST 22 /*!< I2C 2 reset */
#define USBRST 23 /*!< USB Device reset */
#define CAN1RST 25 /*!< CAN1 reset */
#define BKPRST 27 /*!< Backup interface reset */
#define PWRRST 28 /*!< Power interface reset */
#define DACRST 29 /*!< DAC interface reset */
/****************** Bit definition for RCC_AHBENR register ******************/
#define DMA1EN 0 /*!< DMA1 clock enable */
#define DMA2EN 1 /*!< DMA2 clock enable */
#define SRAMEN 2 /*!< SRAM interface clock enable */
#define FLITFEN 4 /*!< FLITF clock enable */
#define CRCEN 6 /*!< CRC clock enable */
#define FSMCEN 8 /*!< FSMC clock enable */
#define SDIOEN 10 /*!< SDIO clock enable */
/****************** Bit definition for RCC_APB2ENR register *****************/
#define AFIOEN 0 /*!< Alternate Function I/O clock enable */
#define IOPAEN 2 /*!< I/O port A clock enable */
#define IOPBEN 3 /*!< I/O port B clock enable */
#define IOPCEN 4 /*!< I/O port C clock enable */
#define IOPDEN 5 /*!< I/O port D clock enable */
#define IOPEEN 6 /*!< I/O port E clock enable */
#define IOPFEN 7 /*!< I/O port F clock enable */
#define IOPGEN 8 /*!< I/O port G clock enable */
#define ADC1EN 9 /*!< ADC 1 interface clock enable */
#define ADC2EN 10 /*!< ADC 2 interface clock enable */
#define TIM1EN 11 /*!< TIM1 Timer clock enable */
#define SPI1EN 12 /*!< SPI 1 clock enable */
#define TIM8EN 13 /*!< TIM8 Timer clock enable */
#define USART1EN 14 /*!< USART1 clock enable */
#define ADC3EN 15 /*!< DMA1 clock enable */
/***************** Bit definition for RCC_APB1ENR register ******************/
#define TIM2EN 0 /*!< Timer 2 clock enabled*/
#define TIM3EN 1 /*!< Timer 3 clock enable */
#define TIM4EN 2 /*!< Timer 4 clock enable */
#define TIM5EN 3 /*!< Timer 5 clock enable */
#define TIM6EN 4 /*!< Timer 6 clock enable */
#define TIM7EN 5 /*!< Timer 7 clock enable */
#define WWDGEN 11 /*!< Window Watchdog clock enable */
#define SPI2EN 14 /*!< SPI 2 clock enable */
#define SPI3EN 15 /*!< SPI 3 clock enable */
#define USART2EN 17 /*!< USART 2 clock enable */
#define USART3EN 18 /*!< USART 3 clock enable */
#define UART4EN 19 /*!< UART 4 clock enable */
#define UART5EN 20 /*!< UART 5 clock enable */
#define I2C1EN 21 /*!< I2C 1 clock enable */
#define I2C2EN 22 /*!< I2C 2 clock enable */
#define USBEN 23 /*!< USB Device clock enable */
#define CAN1EN 25 /*!< CAN1 clock enable */
#define BKPEN 27 /*!< Backup interface clock enable */
#define PWREN 28 /*!< Power interface clock enable */
#define DACEN 29 /*!< DAC interface clock enable */
/******************* Bit definition for RCC_BDCR register *******************/
#define LSEON 0 /*!< External Low Speed oscillator enable */
#define LSERDY 1 /*!< External Low Speed oscillator Ready */
#define LSEBYP 2 /*!< External Low Speed oscillator Bypass */
#define RTCSEL 8 /*!< RTCSEL[1:0] bits (RTC clock source selection) */
#define RTCEN 15 /*!< RTC clock enable */
#define BDRST 16 /*!< Backup domain software reset */
/******************* Bit definition for RCC_CSR register ********************/
#define LSION 0 /*!< Internal Low Speed oscillator enable */
#define LSIRDY 1 /*!< Internal Low Speed oscillator Ready */
#define RMVF 24 /*!< Remove reset flag */
#define PINRSTF 26 /*!< PIN reset flag */
#define PORRSTF 27 /*!< POR/PDR reset flag */
#define SFTRSTF 28 /*!< Software Reset flag */
#define IWDGRSTF 29 /*!< Independent Watchdog reset flag */
#define WWDGRSTF 30 /*!< Window watchdog reset flag */
#define LPWRRSTF 31 /*!< Low-Power reset flag */
/******************************************************************************/
/* */
/* TIM */
/* */
/******************************************************************************/
/******************* Bit definition for TIM_CR1 register ********************/
#define CEN 0 /*!<Counter enable */
#define UDIS 1 /*!<Update disable */
#define URS 2 /*!<Update request source */
#define OPM 3 /*!<One pulse mode */
#define DIR 4 /*!<Direction */
#define CMS 5 /*!<CMS[1:0] bits (Center-aligned mode selection) */
#define ARPE 7 /*!<Auto-reload preload enable */
#define CKD 8 /*!<CKD[1:0] bits (clock division) */
/******************* Bit definition for TIM_CR2 register ********************/
#define CCPC 0 /*!<Capture/Compare Preloaded Control */
#define CCUS 2 /*!<Capture/Compare Control Update Selection */
#define CCDS 3 /*!<Capture/Compare DMA Selection */
#define MMS 4 /*!<MMS[2:0] bits (Master Mode Selection) */
#define TI1S 7 /*!<TI1 Selection */
#define OIS1 8 /*!<Output Idle state 1 (OC1 output) */
#define OIS1N 9 /*!<Output Idle state 1 (OC1N output) */
#define OIS2 10 /*!<Output Idle state 2 (OC2 output) */
#define OIS2N 11 /*!<Output Idle state 2 (OC2N output) */
#define OIS3 12 /*!<Output Idle state 3 (OC3 output) */
#define OIS3N 13 /*!<Output Idle state 3 (OC3N output) */
#define OIS4 14 /*!<Output Idle state 4 (OC4 output) */
/******************* Bit definition for TIM_SMCR register *******************/
#define SMS 0 /*!<SMS[2:0] bits (Slave mode selection) */
#define TS 4 /*!<TS[2:0] bits (Trigger selection) */
#define MSM 7 /*!<Master/slave mode */
#define ETF 8 /*!<ETF[3:0] bits (External trigger filter) */
#define ETPS 12 /*!<ETPS[1:0] bits (External trigger prescaler) */
#define ECE 14 /*!<External clock enable */
#define ETP 15 /*!<External trigger polarity */
/******************* Bit definition for TIM_DIER register *******************/
#define UIE 0 /*!<Update interrupt enable */
#define CC1IE 1 /*!<Capture/Compare 1 interrupt enable */
#define CC2IE 2 /*!<Capture/Compare 2 interrupt enable */
#define CC3IE 3 /*!<Capture/Compare 3 interrupt enable */
#define CC4IE 4 /*!<Capture/Compare 4 interrupt enable */
#define COMIE 5 /*!<COM interrupt enable */
#define TIE 6 /*!<Trigger interrupt enable */
#define BIE 7 /*!<Break interrupt enable */
#define UDE 8 /*!<Update DMA request enable */
#define CC1DE 9 /*!<Capture/Compare 1 DMA request enable */
#define CC2DE 10 /*!<Capture/Compare 2 DMA request enable */
#define CC3DE 11 /*!<Capture/Compare 3 DMA request enable */
#define CC4DE 12 /*!<Capture/Compare 4 DMA request enable */
#define COMDE 13 /*!<COM DMA request enable */
#define TDE 14 /*!<Trigger DMA request enable */
/******************** Bit definition for TIM_SR register ********************/
#define UIF 0 /*!<Update interrupt Flag */
#define CC1IF 1 /*!<Capture/Compare 1 interrupt Flag */
#define CC2IF 2 /*!<Capture/Compare 2 interrupt Flag */
#define CC3IF 3 /*!<Capture/Compare 3 interrupt Flag */
#define CC4IF 4 /*!<Capture/Compare 4 interrupt Flag */
#define COMIF 5 /*!<COM interrupt Flag */
#define TIF 6 /*!<Trigger interrupt Flag */
#define BIF 7 /*!<Break interrupt Flag */
#define CC1OF 9 /*!<Capture/Compare 1 Overcapture Flag */
#define CC2OF 10 /*!<Capture/Compare 2 Overcapture Flag */
#define CC3OF 11 /*!<Capture/Compare 3 Overcapture Flag */
#define CC4OF 12 /*!<Capture/Compare 4 Overcapture Flag */
/******************* Bit definition for TIM_EGR register ********************/
#define UG 0 /*!<Update Generation */
#define CC1G 1 /*!<Capture/Compare 1 Generation */
#define CC2G 2 /*!<Capture/Compare 2 Generation */
#define CC3G 3 /*!<Capture/Compare 3 Generation */
#define CC4G 4 /*!<Capture/Compare 4 Generation */
#define COMG 5 /*!<Capture/Compare Control Update Generation */
#define TG 6 /*!<Trigger Generation */
#define BG 7 /*!<Break Generation */
/****************** Bit definition for TIM_CCMR1 register *******************/
#define CC1S 0 /*!<CC1S[1:0] bits (Capture/Compare 1 Selection) */
#define OC1FE 2 /*!<Output Compare 1 Fast enable */
#define OC1PE 3 /*!<Output Compare 1 Preload enable */
#define OC1M 4 /*!<OC1M[2:0] bits (Output Compare 1 Mode) */
#define OC1CE 7 /*!<Output Compare 1Clear Enable */
#define CC2S 8 /*!<CC2S[1:0] bits (Capture/Compare 2 Selection) */
#define OC2FE 10 /*!<Output Compare 2 Fast enable */
#define OC2PE 11 /*!<Output Compare 2 Preload enable */
#define OC2M 12 /*!<OC2M[2:0] bits (Output Compare 2 Mode) */
#define OC2CE 15 /*!<Output Compare 2 Clear Enable */
/*----------------------------------------------------------------------------*/
#define IC1PSC 2 /*!<IC1PSC[1:0] bits (Input Capture 1 Prescaler) */
#define IC1F 4 /*!<IC1F[3:0] bits (Input Capture 1 Filter) */
#define IC2PSC 10 /*!<IC2PSC[1:0] bits (Input Capture 2 Prescaler) */
#define IC2F 12 /*!<IC2F[3:0] bits (Input Capture 2 Filter) */
/****************** Bit definition for TIM_CCMR2 register *******************/
#define CC3S 0 /*!<CC3S[1:0] bits (Capture/Compare 3 Selection) */
#define OC3FE 2 /*!<Output Compare 3 Fast enable */
#define OC3PE 3 /*!<Output Compare 3 Preload enable */
#define OC3M 4 /*!<OC3M[2:0] bits (Output Compare 3 Mode) */
#define OC3CE 7 /*!<Output Compare 3 Clear Enable */
#define CC4S 8 /*!<CC4S[1:0] bits (Capture/Compare 4 Selection) */
#define OC4FE 10 /*!<Output Compare 4 Fast enable */
#define OC4PE 11 /*!<Output Compare 4 Preload enable */
#define OC4M 12 /*!<OC4M[2:0] bits (Output Compare 4 Mode) */
#define OC4CE 15 /*!<Output Compare 4 Clear Enable */
/*----------------------------------------------------------------------------*/
#define IC3PSC 2 /*!<IC3PSC[1:0] bits (Input Capture 3 Prescaler) */
#define IC3F 4 /*!<IC3F[3:0] bits (Input Capture 3 Filter) */
#define IC4PSC 10 /*!<IC4PSC[1:0] bits (Input Capture 4 Prescaler) */
#define IC4F 12 /*!<IC4F[3:0] bits (Input Capture 4 Filter) */
/******************* Bit definition for TIM_CCER register *******************/
#define CC1E 0 /*!<Capture/Compare 1 output enable */
#define CC1P 1 /*!<Capture/Compare 1 output Polarity */
#define CC1NE 2 /*!<Capture/Compare 1 Complementary output enable */
#define CC1NP 3 /*!<Capture/Compare 1 Complementary output Polarity */
#define CC2E 4 /*!<Capture/Compare 2 output enable */
#define CC2P 5 /*!<Capture/Compare 2 output Polarity */
#define CC2NE 6 /*!<Capture/Compare 2 Complementary output enable */
#define CC2NP 7 /*!<Capture/Compare 2 Complementary output Polarity */
#define CC3E 8 /*!<Capture/Compare 3 output enable */
#define CC3P 9 /*!<Capture/Compare 3 output Polarity */
#define CC3NE 10 /*!<Capture/Compare 3 Complementary output enable */
#define CC3NP 11 /*!<Capture/Compare 3 Complementary output Polarity */
#define CC4E 12 /*!<Capture/Compare 4 output enable */
#define CC4P 13 /*!<Capture/Compare 4 output Polarity */
/******************* Bit definition for TIM_BDTR register *******************/
#define DTG 0 /*!<DTG[0:7] bits (Dead-Time Generator set-up) */
#define LOCK 8 /*!<LOCK[1:0] bits (Lock Configuration) */
#define OSSI 10 /*!<Off-State Selection for Idle mode */
#define OSSR 11 /*!<Off-State Selection for Run mode */
#define BKE 12 /*!<Break enable */
//#define BKP 13 /*!<Break Polarity */
#define AOE 14 /*!<Automatic Output enable */
#define MOE 15 /*!<Main Output enable */
/******************* Bit definition for TIM_DCR register ********************/
#define DBA 0 /*!<DBA[4:0] bits (DMA Base Address) */
#define DBL 8 /*!<DBL[4:0] bits (DMA Burst Length) */
/******************* Bit definition for TIM_DMAR register *******************/
#define DMAB 0 /*!<DMA register for burst accesses */
/******************************************************************************/
/* */
/* SystemTick */
/* */
/******************************************************************************/
/***************** Bit definition for SysTick_CTRL register *****************/
#define SysTick_ENABLE 0 // ((uint32_t)0x00000001) /*!< Counter enable */
#define SysTick_TICKINT 1 // ((uint32_t)0x00000002) /*!< Counting down to 0 pends the SysTick handler */
#define SysTick_CLKSOURCE 2 // ((uint32_t)0x00000004) /*!< Clock source */
#define SysTick_COUNTFLAG 16 // ((uint32_t)0x00010000) /*!< Count Flag */
/***************** Bit definition for SysTick_LOAD register *****************/
#define SysTick_RELOAD 0 // ((uint32_t)0x00FFFFFF) /*!< Value to load into the SysTick Current Value Register when the counter reaches 0 */
/***************** Bit definition for SysTick_VAL register ******************/
#define SysTick_CURRENT 0 // ((uint32_t)0x00FFFFFF) /*!< Current value at the time the register is accessed */
/***************** Bit definition for SysTick_CALIB register ****************/
#define SysTick_TENMS 0 // ((uint32_t)0x00FFFFFF) /*!< Reload value to use for 10ms timing */
#define SysTick_SKEW 30 // ((uint32_t)0x40000000) /*!< Calibration value is not exactly 10 ms */
#define SysTick_NOREF 31 // ((uint32_t)0x80000000) /*!< The reference clock is not provided */
// GPIO port configuration constants
#define GPIO_Mode_In 0x00
#define GPIO_Mode_Out10M 0x01
#define GPIO_Mode_Out2M 0x02
#define GPIO_Mode_Out50M 0x03
#define GPIO_CNF_GP_PP 0x00
#define GPIO_CNF_GP_OD 0x04
#define GPIO_CNF_AF_PP 0x08
#define GPIO_CNF_AF_OD 0x0C
#define GPIO_CNF_AnalogIn 0x00
#define GPIO_CNF_Floating 0x04
#define GPIO_CNF_IPD 0x08
#define GPIO_CNF_IPU 0x08
/****************** Bit definition for FSMC_BCR registers *******************/
#define CBURSTRW 16 /*!<Write burst enable */
#define EXTMOD 14 /*!<Extended mode enable */
#define WAITEN 13 /*!<Wait enable bit */
#define WREN 12 /*!<Write enable bit */
#define WAITCFG 11 /*!<Wait timing configuration */
#define WRAPMOD 10 /*!<Wrapped burst mode support */
#define WAITPOL 9 /*!<Wait signal polarity bit */
#define BURSTEN 8 /*!<Burst enable bit */
#define FACCEN 6 /*!<Flash access enable */
#define MWID 4 /*!<MWID[1:0] bits (Memory data bus width) */
#define MTYP 2 /*!<MTYP[1:0] bits (Memory type) */
#define MUXEN 1 /*!<Address/data multiplexing enable bit */
#define MBKEN 0 /*!<Memory bank enable bit */
/****************** Bit definition for FSMC_BTR and FSMC_BWTR registers ******************/
#define ACCMOD 28 /*!<ACCMOD[1:0] bits (Access mode) */
#define DATLAT 24 /*!<DATLA[3:0] bits (Data latency) */
#define CLKDIV 20 /*!<CLKDIV[3:0] bits (Clock divide ratio) */
#define BUSTURN 16 /*!<BUSTURN[3:0] bits (Bus turnaround phase duration) */
#define DATAST 8 /*!<DATAST [3:0] bits (Data-phase duration) */
#define ADDHLD 4 /*!<ADDHLD[3:0] bits (Address-hold phase duration) */
#define ADDSET 0 /*!<ADDSET[3:0] bits (Address setup phase duration) */
/******************************************************************************/
/* */
/* Analog to Digital Converter */
/* */
/******************************************************************************/
/******************** Bit definition for ADC_SR register ********************/
#define AWD 0 /*!<Analog watchdog flag */
#define EOC 1 /*!<End of conversion */
#define JEOC 2 /*!<Injected channel end of conversion */
#define JSTRT 3 /*!<Injected channel Start flag */
#define STRT 4 /*!<Regular channel Start flag */
/******************* Bit definition for ADC_CR1 register ********************/
#define AWDCH 0 /*!<AWDCH[4:0] bits (Analog watchdog channel select bits) */
#define EOCIE 5 /*!<Interrupt enable for EOC */
#define AWDIE 6 /*!<AAnalog Watchdog interrupt enable */
#define JEOCIE 7 /*!<Interrupt enable for injected channels */
#define SCAN 8 /*!<Scan mode */
#define AWDSGL 9 /*!<Enable the watchdog on a single channel in scan mode */
#define JAUTO 10 /*!<Automatic injected group conversion */
#define DISCEN 11 /*!<Discontinuous mode on regular channels */
#define JDISCEN 12 /*!<Discontinuous mode on injected channels */
#define DISCNUM 13 /*!<DISCNUM[2:0] bits (Discontinuous mode channel count) */
#define DUALMOD 16 /*!<DUALMOD[3:0] bits (Dual mode selection) */
#define JAWDEN 22 /*!<Analog watchdog enable on injected channels */
#define AWDEN 23 /*!<Analog watchdog enable on regular channels */
/******************* Bit definition for ADC_CR2 register ********************/
#define ADON 0 // ((uint32_t)0x00000001) /*!<A/D Converter ON / OFF */
#define CONT 1 // ((uint32_t)0x00000002) /*!<Continuous Conversion */
#define CAL 2 // ((uint32_t)0x00000004) /*!<A/D Calibration */
#define RSTCAL 3 // ((uint32_t)0x00000008) /*!<Reset Calibration */
#define DMA 8 // ((uint32_t)0x00000100) /*!<Direct Memory access mode */
#define ALIGN 11 // ((uint32_t)0x00000800) /*!<Data Alignment */
#define JEXTSEL 12 // ((uint32_t)0x00007000) /*!<JEXTSEL[2:0] bits (External event select for injected group) */
#define JEXTTRIG 15 // ((uint32_t)0x00008000) /*!<External Trigger Conversion mode for injected channels */
#define EXTSEL 17 // ((uint32_t)0x000E0000) /*!<EXTSEL[2:0] bits (External Event Select for regular group) */
#define EXTTRIG 20 // ((uint32_t)0x00100000) /*!<External Trigger Conversion mode for regular channels */
#define JSWSTART 21 // ((uint32_t)0x00200000) /*!<Start Conversion of injected channels */
#define SWSTART 22 // ((uint32_t)0x00400000) /*!<Start Conversion of regular channels */
#define TSVREFE 23 // ((uint32_t)0x00800000) /*!<Temperature Sensor and VREFINT Enable */
/****************** Bit definition for ADC_SMPR1 register *******************/
#define SMP10 0 // ((uint32_t)0x00000007) /*!<SMP10[2:0] bits (Channel 10 Sample time selection) */
#define SMP11 3 // ((uint32_t)0x00000038) /*!<SMP11[2:0] bits (Channel 11 Sample time selection) */
#define SMP12 6 // ((uint32_t)0x000001C0) /*!<SMP12[2:0] bits (Channel 12 Sample time selection) */
#define SMP13 9 // ((uint32_t)0x00000E00) /*!<SMP13[2:0] bits (Channel 13 Sample time selection) */
#define SMP14 12 // ((uint32_t)0x00007000) /*!<SMP14[2:0] bits (Channel 14 Sample time selection) */
#define SMP15 15 // ((uint32_t)0x00038000) /*!<SMP15[2:0] bits (Channel 15 Sample time selection) */
#define SMP16 18 // ((uint32_t)0x001C0000) /*!<SMP16[2:0] bits (Channel 16 Sample time selection) */
#define SMP17 21 // ((uint32_t)0x00E00000) /*!<SMP17[2:0] bits (Channel 17 Sample time selection) */
/****************** Bit definition for ADC_SMPR2 register *******************/
#define SMP0 0 // ((uint32_t)0x00000007) /*!<SMP0[2:0] bits (Channel 0 Sample time selection) */
#define SMP1 3 // ((uint32_t)0x00000038) /*!<SMP1[2:0] bits (Channel 1 Sample time selection) */
#define SMP2 6 // ((uint32_t)0x000001C0) /*!<SMP2[2:0] bits (Channel 2 Sample time selection) */
#define SMP3 9 // ((uint32_t)0x00000E00) /*!<SMP3[2:0] bits (Channel 3 Sample time selection) */
#define SMP4 12 // ((uint32_t)0x00007000) /*!<SMP4[2:0] bits (Channel 4 Sample time selection) */
#define SMP5 15 // ((uint32_t)0x00038000) /*!<SMP5[2:0] bits (Channel 5 Sample time selection) */
#define SMP6 18 // ((uint32_t)0x001C0000) /*!<SMP6[2:0] bits (Channel 6 Sample time selection) */
#define SMP7 21 // ((uint32_t)0x00E00000) /*!<SMP7[2:0] bits (Channel 7 Sample time selection) */
#define SMP8 24 // ((uint32_t)0x07000000) /*!<SMP8[2:0] bits (Channel 8 Sample time selection) */
#define SMP9 27 // ((uint32_t)0x38000000) /*!<SMP9[2:0] bits (Channel 9 Sample time selection) */
/****************** Bit definition for ADC_JOFR1 register *******************/
#define ADC_JOFR1_JOFFSET1 ((uint16_t)0x0FFF) /*!<Data offset for injected channel 1 */
/****************** Bit definition for ADC_JOFR2 register *******************/
#define ADC_JOFR2_JOFFSET2 ((uint16_t)0x0FFF) /*!<Data offset for injected channel 2 */
/****************** Bit definition for ADC_JOFR3 register *******************/
#define ADC_JOFR3_JOFFSET3 ((uint16_t)0x0FFF) /*!<Data offset for injected channel 3 */
/****************** Bit definition for ADC_JOFR4 register *******************/
#define ADC_JOFR4_JOFFSET4 ((uint16_t)0x0FFF) /*!<Data offset for injected channel 4 */
/******************* Bit definition for ADC_HTR register ********************/
#define ADC_HTR_HT ((uint16_t)0x0FFF) /*!<Analog watchdog high threshold */
/******************* Bit definition for ADC_LTR register ********************/
#define ADC_LTR_LT ((uint16_t)0x0FFF) /*!<Analog watchdog low threshold */
/******************* Bit definition for ADC_SQR1 register *******************/
#define SQ13 0 // ((uint32_t)0x0000001F) /*!<SQ13[4:0] bits (13th conversion in regular sequence) */
#define SQ14 5 // ((uint32_t)0x000003E0) /*!<SQ14[4:0] bits (14th conversion in regular sequence) */
#define SQ15 10 // ((uint32_t)0x00007C00) /*!<SQ15[4:0] bits (15th conversion in regular sequence) */
#define SQ16 15 // ((uint32_t)0x000F8000) /*!<SQ16[4:0] bits (16th conversion in regular sequence) */
#define L 20 // ((uint32_t)0x00F00000) /*!<L[3:0] bits (Regular channel sequence length) */
/******************* Bit definition for ADC_SQR2 register *******************/
#define SQ7 0 // ((uint32_t)0x0000001F) /*!<SQ7[4:0] bits (7th conversion in regular sequence) */
#define SQ8 5 // ((uint32_t)0x000003E0) /*!<SQ8[4:0] bits (8th conversion in regular sequence) */
#define SQ9 10 // ((uint32_t)0x00007C00) /*!<SQ9[4:0] bits (9th conversion in regular sequence) */
#define SQ10 15 // ((uint32_t)0x000F8000) /*!<SQ10[4:0] bits (10th conversion in regular sequence) */
#define SQ11 20 // ((uint32_t)0x01F00000) /*!<SQ11[4:0] bits (11th conversion in regular sequence) */
#define SQ12 25 // ((uint32_t)0x3E000000) /*!<SQ12[4:0] bits (12th conversion in regular sequence) */
/******************* Bit definition for ADC_SQR3 register *******************/
#define SQ1 0 // ((uint32_t)0x0000001F) /*!<SQ1[4:0] bits (1st conversion in regular sequence) */
#define SQ2 5 // ((uint32_t)0x000003E0) /*!<SQ2[4:0] bits (2nd conversion in regular sequence) */
#define SQ3 10 // ((uint32_t)0x00007C00) /*!<SQ3[4:0] bits (3rd conversion in regular sequence) */
#define SQ4 15 // ((uint32_t)0x000F8000) /*!<SQ4[4:0] bits (4th conversion in regular sequence) */
#define SQ5 20 // ((uint32_t)0x01F00000) /*!<SQ5[4:0] bits (5th conversion in regular sequence) */
#define SQ6 25 // ((uint32_t)0x3E000000) /*!<SQ6[4:0] bits (6th conversion in regular sequence) */
/******************* Bit definition for ADC_JSQR register *******************/
#define JSQ1 0 // ((uint32_t)0x0000001F) /*!<JSQ1[4:0] bits (1st conversion in injected sequence) */
#define JSQ2 5 // ((uint32_t)0x000003E0) /*!<JSQ2[4:0] bits (2nd conversion in injected sequence) */
#define JSQ3 10 // ((uint32_t)0x00007C00) /*!<JSQ3[4:0] bits (3rd conversion in injected sequence) */
#define JSQ4 15 // ((uint32_t)0x000F8000) /*!<JSQ4[4:0] bits (4th conversion in injected sequence) */
#define JL 20 // ((uint32_t)0x00300000) /*!<JL[1:0] bits (Injected Sequence length) */
/******************* Bit definition for ADC_JDR1 register *******************/
#define ADC_JDR1_JDATA ((uint16_t)0xFFFF) /*!<Injected data */
/******************* Bit definition for ADC_JDR2 register *******************/
#define ADC_JDR2_JDATA ((uint16_t)0xFFFF) /*!<Injected data */
/******************* Bit definition for ADC_JDR3 register *******************/
#define ADC_JDR3_JDATA ((uint16_t)0xFFFF) /*!<Injected data */
/******************* Bit definition for ADC_JDR4 register *******************/
#define ADC_JDR4_JDATA ((uint16_t)0xFFFF) /*!<Injected data */
/******************** Bit definition for ADC_DR register ********************/
#define ADC_DR_DATA ((uint32_t)0x0000FFFF) /*!<Regular data */
#define ADC_DR_ADC2DATA ((uint32_t)0xFFFF0000) /*!<ADC2 data */
/******************* Bit definition for DMA_IFCR register *******************/
#define CGIF1 0 // /*!< Channel 1 Global interrupt clearr */
#define CTCIF1 1 // /*!< Channel 1 Transfer Complete clear */
#define CHTIF1 2 // /*!< Channel 1 Half Transfer clear */
#define CTEIF1 3 // /*!< Channel 1 Transfer Error clear */
#define CGIF2 4 // /*!< Channel 2 Global interrupt clear */
#define CTCIF2 5 // /*!< Channel 2 Transfer Complete clear */
#define CHTIF2 6 // /*!< Channel 2 Half Transfer clear */
#define CTEIF2 7 // /*!< Channel 2 Transfer Error clear */
#define CGIF3 8 // /*!< Channel 3 Global interrupt clear */
#define CTCIF3 9 // /*!< Channel 3 Transfer Complete clear */
#define CHTIF3 10 // /*!< Channel 3 Half Transfer clear */
#define CTEIF3 11 // /*!< Channel 3 Transfer Error clear */
#define CGIF4 12 // /*!< Channel 4 Global interrupt clear */
#define CTCIF4 13 // /*!< Channel 4 Transfer Complete clear */
#define CHTIF4 14 // /*!< Channel 4 Half Transfer clear */
#define CTEIF4 15 // /*!< Channel 4 Transfer Error clear */
#define CGIF5 16 // /*!< Channel 5 Global interrupt clear */
#define CTCIF5 17 // /*!< Channel 5 Transfer Complete clear */
#define CHTIF5 18 // /*!< Channel 5 Half Transfer clear */
#define CTEIF5 19 // /*!< Channel 5 Transfer Error clear */
#define CGIF6 20 // /*!< Channel 6 Global interrupt clear */
#define CTCIF6 21 // /*!< Channel 6 Transfer Complete clear */
#define CHTIF6 22 // /*!< Channel 6 Half Transfer clear */
#define CTEIF6 23 // /*!< Channel 6 Transfer Error clear */
#define CGIF7 24 // /*!< Channel 7 Global interrupt clear */
#define CTCIF7 25 // /*!< Channel 7 Transfer Complete clear */
#define CHTIF7 26 // /*!< Channel 7 Half Transfer clear */
#define CTEIF7 27 // /*!< Channel 7 Transfer Error clear */
/******************* Bit definition for DMA_CCRx register *******************/
#define EN 0 // /*!< Channel enable*/
#define TCIE 1 // /*!< Transfer complete interrupt enable */
#define HTIE 2 // /*!< Half Transfer interrupt enable */
#define TEIE 3 // /*!< Transfer error interrupt enable */
#define DIR 4 // /*!< Data transfer direction */
// 0: Read from peripheral
// 1: Read from memory
#define CIRC 5 // /*!< Circular mode */
// 0: Circular mode disabled
// 1: Circular mode enabled
#define PINC 6 // /*!< Peripheral increment mode */
// 0: Peripheral increment mode disabled
// 1: Peripheral increment mode enabled
#define MINC 7 // /*!< Memory increment mode */
// 0: Memory increment mode disabled
// 1: Memory increment mode enabled
#define PSIZE 8 // /*!< PSIZE[1:0] bits (Peripheral size) */
// 00: 8-bits
// 01: 16-bits
// 10: 32-bits
// 11: Reserved
#define MSIZE 10 // /*!< MSIZE[1:0] bits (Memory size) */
// 00: 8-bits
// 01: 16-bits
// 10: 32-bits
// 11: Reserved
#define PL 12 // /*!< PL[1:0] bits(Channel Priority level) */
// 00: Low
// 01: Medium
// 10: High
// 11: Very high
#define MEM2MEM 14 // /*!< Memory to memory mode */
/******************************************************************************/
/* */
/* Flash Controller */
/* */
/******************************************************************************/
/******************** Bit definition for Flash_SR register ********************/
// Bit 5 EOP: End of operation
// Set by hardware when a Flash operation (programming / erase) is completed. Reset by
// writing a 1
// Note: EOP is asserted at the end of each successful program or erase operation
// Bit 4 WRPRTERR: Write protection error
// Set by hardware when programming a write-protected address of the Flash memory.
// Reset by writing 1.
// Bit 3 Reserved, must be kept cleared.
// Bit 2 PGERR: Programming error
// Set by hardware when an address to be programmed contains a value different from
// '0xFFFF' before programming.
// Reset by writing 1.
// Note: The STRT bit in the FLASH_CR register should be reset before starting a programming
// operation.
// Bit 1 Reserved, must be kept cleared
// Bit 0 BSY: Busy
// This indicates that a Flash operation is in progress. This is set on the beginning of a Flash
// operation and reset when the operation finishes or when an error occurs.
#define Flash_SR_EOP 5
#define Flash_SR_WRPRTERR 4
//#define Flash_SR_Res 3
#define Flash_SR_PGERR 2
//#define Flash_SR_Res 1
#define Flash_SR_BSY 0
/******************** Bit definition for Flash_CR register ********************/
// Bits 31:13 Reserved, must be kept cleared.
// Bit 12 EOPIE: End of operation interrupt enable
// This bit enables the interrupt generation when the EOP bit in the FLASH_SR register goes
// to 1.
// 0: Interrupt generation disabled
// 1: Interrupt generation enabled
// Bit 11 Reserved, must be kept cleared
// Bit 10 ERRIE: Error interrupt enable
// This bit enables the interrupt generation on an FPEC error (when PGERR / WRPRTERR are
// set in the FLASH_SR register).
// 0: Interrupt generation disabled
// 1: Interrupt generation enabled
// Bit 9 OPTWRE: Option bytes write enable
// When set, the option bytes can be programmed. This bit is set on writing the correct key
// sequence to the FLASH_OPTKEYR register.
// This bit can be reset by software
// Bit 8 Reserved, must be kept cleared.
// Bit 7 LOCK: Lock
// Write to 1 only. When it is set, it indicates that the FPEC and FLASH_CR are locked. This bit
// is reset by hardware after detecting the unlock sequence.
// In the event of unsuccessful unlock operation, this bit remains set until the next reset.
// Bit 6 STRT: Start
// This bit triggers an ERASE operation when set. This bit is set only by software and reset
// when the BSY bit is reset.
// Bit 5 OPTER: Option byte erase
// Option byte erase chosen.
// Bit 4 OPTPG: Option byte programming
// Option byte programming chosen.
// Bit 3 Reserved, must be kept cleared.
// Bit 2 MER: Mass erase
// Erase of all user pages chosen.
// Bit 1 PER: Page erase
// Page Erase chosen.
// Bit 0 PG: Programming
// Flash programming chosen.
#define Flash_CR_EOPIE 12
#define Flash_CR_ERRIE 10
#define Flash_CR_OPTWRE 9
#define Flash_CR_LOCK 7
#define Flash_CR_STRT 6
#define Flash_CR_OPTER 5
#define Flash_CR_OPTPG 4
#define Flash_CR_MER 2
#define Flash_CR_PER 1
#define Flash_CR_PG 0
/******************** Bit definition for FLASH_OBR register ********************/
// Bits 31:26 Reserved, must be kept cleared.
// Bits 25:18 Data1
// Bits 17:10 Data0
// Bits 9:2 USER: User option bytes
// This contains the user option byte loaded by the OBL.
// Bits [9:5]: Not used (if these bits are written in the Flash option byte, they will be read in this
// register with no effect on the device.)
// Bit 4: nRST_STDBY
// Bit 3: nRST_STOP
// Bit 2: WDG_SW
// Bit 1 RDPRT: Read protection
// When set, this indicates that the Flash memory is read-protected.
// Note: This bit is read-only.
// Bit 0 OPTERR: Option byte error
// When set, this indicates that the loaded option byte and its complement do not match. The
// corresponding byte and its complement are read as 0xFF in the FLASH_OBR or
// FLASH_WRPR register.
// Note: This bit is read-only.
#define Flash_OBR_Data1 18
#define Flash_OBR_Data0 10
#define Flash_OBR_USER 2
#define Flash_OBR_nRST_STDBY 4
#define Flash_OBR_nRST_STOP 3
#define Flash_OBR_nRST_SW 2
#define Flash_OBR_RDPRT 1
#define Flash_OBR_OPTERR 0
#define Flash_KEY1 0x45670123
#define Flash_KEY2 0xCDEF89AB
#define I2C_QuadCycle 10
extern U16 GTimer;
extern U8 GTimeout;
extern U16 TimerKeyScan;
extern U16 TFT_Controller;
// ====================================================
// Macros
//
// ====================================================
// Function Prototype Declarations
//
void Clock_Init(void);
void Port_Init(void);
void USART1_Init(void);
void UartPutc(U8 ch, USART_TypeDef* USARTx);
void uputs(U8 *s, USART_TypeDef* USARTx);
void ADC2_Init(void);
U16 ADC_Poll(ADC_TypeDef * adc, U8 chn);
void TIM3_Init(void);
void TIM4_Init(void);
void SysTick_Init(void);
void TFT_Init_Ili9325(void);
void TFT_CmdWrite(U16 Reg, U16 Data);
void TFT_AccessGRAM(void);
void TFT_AccessGRAM_End(void);
U16 TFT_ReadID_Ili9325(void);
void TFT_Init_Ili9341(void);
void write_comm(U8 commport);
void write_data(U8 data);
U32 TFT_ReadID_Ili9341(void);
void assert_failed(U8 * file, U32 line);
void NVIC_Configuration(void);
void OutputVSen(void);
void I2C_Start(void);
void I2C_Stop(void);
void I2C_SendByte(U8 byte);
U8 I2C_RecvByte(void);
U8 I2C_CheckAck(void);
void I2C_Ack(void);
void I2C_Nak(void);
void I2C_ReSync(void);
void SetSDA_In(void);
void SetSDA_Out(void);
#endif // Board_h