altos/telelco-v3.0: Don't connect PA6 to SPI
[fw/altos] / src / stm32f1 / stm32f1.h
index a5b579a0e54c6fbe6cdcad6a01195b1316718b15..532cd052c32c72f6edea6337f5bb10b368ac352e 100644 (file)
@@ -68,14 +68,6 @@ extern struct stm_rcc stm_rcc;
 #define STM_RCC_CR_HSIRDY      (1)
 #define STM_RCC_CR_HSION       (0)
 
-#define STM_RCC_CFGR_MCOPRE    (28)
-#define  STM_RCC_CFGR_MCOPRE_DIV_1     0
-#define  STM_RCC_CFGR_MCOPRE_DIV_2     1
-#define  STM_RCC_CFGR_MCOPRE_DIV_4     2
-#define  STM_RCC_CFGR_MCOPRE_DIV_8     3
-#define  STM_RCC_CFGR_MCOPRE_DIV_16    4
-#define  STM_RCC_CFGR_MCOPRE_MASK      7UL
-
 #define STM_RCC_CFGR_MCO       (24)
 #define  STM_RCC_CFGR_MCO_DISABLE      0
 #define  STM_RCC_CFGR_MCO_SYSCLK       4
@@ -109,6 +101,7 @@ extern struct stm_rcc stm_rcc;
 #define STM_RCC_CFGR_PLLXTPRE  (17)
 #define  STM_RCC_CFGR_PLLXTPRE_1       0
 #define  STM_RCC_CFGR_PLLXTPRE_2       1
+#define  STM_RCC_CFGR_PLLXTPRE_MASK    1UL
 
 #define STM_RCC_CFGR_PLLSRC    (16)
 #define  STM_RCC_CFGR_PLLSRC_HSI_2     0
@@ -119,6 +112,7 @@ extern struct stm_rcc stm_rcc;
 #define  STM_RCC_CFGR_ADCPRE_4         1
 #define  STM_RCC_CFGR_ADCPRE_6         2
 #define  STM_RCC_CFGR_ADCPRE_8         3
+#define  STM_RCC_CFGR_ADCPRE_MASK      3UL
 
 #define STM_RCC_CFGR_PPRE2     (11)
 #define  STM_RCC_CFGR_PPRE2_DIV_1      0
@@ -520,6 +514,12 @@ extern struct stm_afio stm_afio;
 
 #define stm_afio       (*((struct stm_afio *) 0x40010000))
 
+#define STM_AFIO_MAPR_SWJ_CFG                  24
+#define  STM_AFIO_MAPR_SWJ_CFG_FULL_SWJ                        0
+#define  STM_AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_NJTRST      1
+#define  STM_AFIO_MAPR_SWJ_CFG_SW_DP                   2
+#define  STM_AFIO_MAPR_SWJ_CFG_DISABLE                 4
+#define  STM_AFIO_MAPR_SWJ_CFG_MASK                    7UL
 #define STM_AFIO_MAPR_ADC2_ETRGREG_REMAP       20
 #define STM_AFIO_MAPR_ADC2_ETRGINJ_REMAP       19
 #define STM_AFIO_MAPR_ADC1_ETRGREG_REMAP       18
@@ -1087,9 +1087,9 @@ struct stm_adc {
        vuint32_t       dr;
 };
 
-extern struct stm_adc stm_adc;
+extern struct stm_adc stm_adc1;
 
-#define stm_adc (*((struct stm_adc *) 0x40012400))
+//#define stm_adc1 (*((struct stm_adc *) 0x40012400))
 
 #define STM_ADC_SQ_TEMP                16
 #define STM_ADC_SQ_V_REF       17
@@ -1136,7 +1136,7 @@ extern struct stm_adc stm_adc;
 #define  STM_ADC_CR1_AWDCH_MASK                0x1fUL
 
 #define STM_ADC_CR2_TSVREF     23
-#define STM_ADC_CR2_SWSTART    21
+#define STM_ADC_CR2_SWSTART    22
 #define STM_ADC_CR2_JWSTART    21
 #define STM_ADC_CR2_EXTTRIG    20
 #define STM_ADC_CR2_EXTSEL     17
@@ -1204,6 +1204,297 @@ stm_exticr_set(struct stm_gpio *gpio, int pin) {
        stm_afio.exticr[reg] = (stm_afio.exticr[reg] & (uint32_t) ~(0xf << shift)) | val << shift;
 }
 
+struct stm_tim18 {
+       vuint32_t       cr1;
+       vuint32_t       cr2;
+       vuint32_t       smcr;
+       vuint32_t       dier;
+
+       vuint32_t       sr;
+       vuint32_t       egr;
+       vuint32_t       ccmr1;
+       vuint32_t       ccmr2;
+
+       vuint32_t       ccer;
+       vuint32_t       cnt;
+       vuint32_t       psc;
+       vuint32_t       arr;
+
+       vuint32_t       rcr;
+       vuint32_t       ccr1;
+       vuint32_t       ccr2;
+       vuint32_t       ccr3;
+
+       vuint32_t       ccr4;
+       uint32_t        bdtr;
+       vuint32_t       dcr;
+       vuint32_t       dmar;
+};
+
+extern struct stm_tim18 stm_tim1, stm_tim8;
+
+#define stm_tim1       (*((struct stm_tim18 *) 0x40012c00))
+#define stm_tim8       (*((struct stm_tim18 *) 0x40013400))
+
+#define STM_TIM18_CR1_CKD      8
+#define  STM_TIM18_CR1_CKD_1           0
+#define  STM_TIM18_CR1_CKD_2           1
+#define  STM_TIM18_CR1_CKD_4           2
+#define  STM_TIM18_CR1_CKD_MASK        3UL
+#define STM_TIM18_CR1_ARPE     7
+#define STM_TIM18_CR1_CMS      5
+#define  STM_TIM18_CR1_CMS_EDGE        0
+#define  STM_TIM18_CR1_CMS_CENTER_1    1
+#define  STM_TIM18_CR1_CMS_CENTER_2    2
+#define  STM_TIM18_CR1_CMS_CENTER_3    3
+#define  STM_TIM18_CR1_CMS_MASK        3UL
+#define STM_TIM18_CR1_DIR      4
+#define  STM_TIM18_CR1_DIR_UP          0
+#define  STM_TIM18_CR1_DIR_DOWN        1
+#define STM_TIM18_CR1_OPM      3
+#define STM_TIM18_CR1_URS      2
+#define STM_TIM18_CR1_UDIS     1
+#define STM_TIM18_CR1_CEN      0
+
+#define STM_TIM18_CR2_TI1S     7
+#define STM_TIM18_CR2_MMS      4
+#define  STM_TIM18_CR2_MMS_RESET               0
+#define  STM_TIM18_CR2_MMS_ENABLE              1
+#define  STM_TIM18_CR2_MMS_UPDATE              2
+#define  STM_TIM18_CR2_MMS_COMPARE_PULSE       3
+#define  STM_TIM18_CR2_MMS_COMPARE_OC1REF      4
+#define  STM_TIM18_CR2_MMS_COMPARE_OC2REF      5
+#define  STM_TIM18_CR2_MMS_COMPARE_OC3REF      6
+#define  STM_TIM18_CR2_MMS_COMPARE_OC4REF      7
+#define  STM_TIM18_CR2_MMS_MASK                7UL
+#define STM_TIM18_CR2_CCDS     3
+
+#define STM_TIM18_SMCR_ETP     15
+#define STM_TIM18_SMCR_ECE     14
+#define STM_TIM18_SMCR_ETPS    12
+#define  STM_TIM18_SMCR_ETPS_OFF               0
+#define  STM_TIM18_SMCR_ETPS_DIV_2             1
+#define  STM_TIM18_SMCR_ETPS_DIV_4             2
+#define  STM_TIM18_SMCR_ETPS_DIV_8             3
+#define  STM_TIM18_SMCR_ETPS_MASK              3UL
+#define STM_TIM18_SMCR_ETF     8
+#define  STM_TIM18_SMCR_ETF_NONE               0
+#define  STM_TIM18_SMCR_ETF_INT_N_2            1
+#define  STM_TIM18_SMCR_ETF_INT_N_4            2
+#define  STM_TIM18_SMCR_ETF_INT_N_8            3
+#define  STM_TIM18_SMCR_ETF_DTS_2_N_6          4
+#define  STM_TIM18_SMCR_ETF_DTS_2_N_8          5
+#define  STM_TIM18_SMCR_ETF_DTS_4_N_6          6
+#define  STM_TIM18_SMCR_ETF_DTS_4_N_8          7
+#define  STM_TIM18_SMCR_ETF_DTS_8_N_6          8
+#define  STM_TIM18_SMCR_ETF_DTS_8_N_8          9
+#define  STM_TIM18_SMCR_ETF_DTS_16_N_5         10
+#define  STM_TIM18_SMCR_ETF_DTS_16_N_6         11
+#define  STM_TIM18_SMCR_ETF_DTS_16_N_8         12
+#define  STM_TIM18_SMCR_ETF_DTS_32_N_5         13
+#define  STM_TIM18_SMCR_ETF_DTS_32_N_6         14
+#define  STM_TIM18_SMCR_ETF_DTS_32_N_8         15
+#define  STM_TIM18_SMCR_ETF_MASK               15UL
+#define STM_TIM18_SMCR_MSM     7
+#define STM_TIM18_SMCR_TS      4
+#define  STM_TIM18_SMCR_TS_ITR0                0
+#define  STM_TIM18_SMCR_TS_ITR1                1
+#define  STM_TIM18_SMCR_TS_ITR2                2
+#define  STM_TIM18_SMCR_TS_ITR3                3
+#define  STM_TIM18_SMCR_TS_TI1F_ED             4
+#define  STM_TIM18_SMCR_TS_TI1FP1              5
+#define  STM_TIM18_SMCR_TS_TI2FP2              6
+#define  STM_TIM18_SMCR_TS_ETRF                7
+#define  STM_TIM18_SMCR_TS_MASK                7UL
+#define STM_TIM18_SMCR_SMS     0
+#define  STM_TIM18_SMCR_SMS_DISABLE            0
+#define  STM_TIM18_SMCR_SMS_ENCODER_MODE_1     1
+#define  STM_TIM18_SMCR_SMS_ENCODER_MODE_2     2
+#define  STM_TIM18_SMCR_SMS_ENCODER_MODE_3     3
+#define  STM_TIM18_SMCR_SMS_RESET_MODE         4
+#define  STM_TIM18_SMCR_SMS_GATED_MODE         5
+#define  STM_TIM18_SMCR_SMS_TRIGGER_MODE       6
+#define  STM_TIM18_SMCR_SMS_EXTERNAL_CLOCK     7
+#define  STM_TIM18_SMCR_SMS_MASK               7UL
+
+#define STM_TIM18_DIER_TDE             14
+#define STM_TIM18_DIER_CC4DE           12
+#define STM_TIM18_DIER_CC3DE           11
+#define STM_TIM18_DIER_CC2DE           10
+#define STM_TIM18_DIER_CC1DE           9
+#define STM_TIM18_DIER_UDE             8
+
+#define STM_TIM18_DIER_TIE             6
+#define STM_TIM18_DIER_CC4IE           4
+#define STM_TIM18_DIER_CC3IE           3
+#define STM_TIM18_DIER_CC2IE           2
+#define STM_TIM18_DIER_CC1IE           1
+#define STM_TIM18_DIER_UIE             0
+
+#define STM_TIM18_SR_CC4OF     12
+#define STM_TIM18_SR_CC3OF     11
+#define STM_TIM18_SR_CC2OF     10
+#define STM_TIM18_SR_CC1OF     9
+#define STM_TIM18_SR_TIF       6
+#define STM_TIM18_SR_CC4IF     4
+#define STM_TIM18_SR_CC3IF     3
+#define STM_TIM18_SR_CC2IF     2
+#define STM_TIM18_SR_CC1IF     1
+#define STM_TIM18_SR_UIF       0
+
+#define STM_TIM18_EGR_TG       6
+#define STM_TIM18_EGR_CC4G     4
+#define STM_TIM18_EGR_CC3G     3
+#define STM_TIM18_EGR_CC2G     2
+#define STM_TIM18_EGR_CC1G     1
+#define STM_TIM18_EGR_UG       0
+
+#define STM_TIM18_CCMR1_OC2CE  15
+#define STM_TIM18_CCMR1_OC2M   12
+#define  STM_TIM18_CCMR1_OC2M_FROZEN                   0
+#define  STM_TIM18_CCMR1_OC2M_SET_HIGH_ON_MATCH        1
+#define  STM_TIM18_CCMR1_OC2M_SET_LOW_ON_MATCH         2
+#define  STM_TIM18_CCMR1_OC2M_TOGGLE                   3
+#define  STM_TIM18_CCMR1_OC2M_FORCE_LOW                4
+#define  STM_TIM18_CCMR1_OC2M_FORCE_HIGH               5
+#define  STM_TIM18_CCMR1_OC2M_PWM_MODE_1               6
+#define  STM_TIM18_CCMR1_OC2M_PWM_MODE_2               7
+#define  STM_TIM18_CCMR1_OC2M_MASK                     7UL
+#define STM_TIM18_CCMR1_OC2PE  11
+#define STM_TIM18_CCMR1_OC2FE  10
+#define STM_TIM18_CCMR1_CC2S   8
+#define  STM_TIM18_CCMR1_CC2S_OUTPUT                   0
+#define  STM_TIM18_CCMR1_CC2S_INPUT_TI2                1
+#define  STM_TIM18_CCMR1_CC2S_INPUT_TI1                2
+#define  STM_TIM18_CCMR1_CC2S_INPUT_TRC                3
+#define  STM_TIM18_CCMR1_CC2S_MASK                     3UL
+
+#define STM_TIM18_CCMR1_OC1CE  7
+#define STM_TIM18_CCMR1_OC1M   4
+#define  STM_TIM18_CCMR1_OC1M_FROZEN                   0
+#define  STM_TIM18_CCMR1_OC1M_SET_HIGH_ON_MATCH        1
+#define  STM_TIM18_CCMR1_OC1M_SET_LOW_ON_MATCH         2
+#define  STM_TIM18_CCMR1_OC1M_TOGGLE                   3
+#define  STM_TIM18_CCMR1_OC1M_FORCE_LOW                4
+#define  STM_TIM18_CCMR1_OC1M_FORCE_HIGH               5
+#define  STM_TIM18_CCMR1_OC1M_PWM_MODE_1               6
+#define  STM_TIM18_CCMR1_OC1M_PWM_MODE_2               7
+#define  STM_TIM18_CCMR1_OC1M_MASK                     7UL
+#define STM_TIM18_CCMR1_OC1PE  3
+#define STM_TIM18_CCMR1_OC1FE  2
+#define STM_TIM18_CCMR1_CC1S   0
+#define  STM_TIM18_CCMR1_CC1S_OUTPUT                   0
+#define  STM_TIM18_CCMR1_CC1S_INPUT_TI1                1
+#define  STM_TIM18_CCMR1_CC1S_INPUT_TI2                2
+#define  STM_TIM18_CCMR1_CC1S_INPUT_TRC                3
+#define  STM_TIM18_CCMR1_CC1S_MASK                     3UL
+
+#define STM_TIM18_CCMR1_IC2F   12
+#define  STM_TIM18_CCMR1_IC2F_NONE                     0
+#define  STM_TIM18_CCMR1_IC2F_CK_INT_N_2               1
+#define  STM_TIM18_CCMR1_IC2F_CK_INT_N_4               2
+#define  STM_TIM18_CCMR1_IC2F_CK_INT_N_8               3
+#define  STM_TIM18_CCMR1_IC2F_DTS_2_N_6                4
+#define  STM_TIM18_CCMR1_IC2F_DTS_2_N_8                5
+#define  STM_TIM18_CCMR1_IC2F_DTS_4_N_6                6
+#define  STM_TIM18_CCMR1_IC2F_DTS_4_N_8                7
+#define  STM_TIM18_CCMR1_IC2F_DTS_8_N_6                8
+#define  STM_TIM18_CCMR1_IC2F_DTS_8_N_8                9
+#define  STM_TIM18_CCMR1_IC2F_DTS_16_N_5               10
+#define  STM_TIM18_CCMR1_IC2F_DTS_16_N_6               11
+#define  STM_TIM18_CCMR1_IC2F_DTS_16_N_8               12
+#define  STM_TIM18_CCMR1_IC2F_DTS_32_N_5               13
+#define  STM_TIM18_CCMR1_IC2F_DTS_32_N_6               14
+#define  STM_TIM18_CCMR1_IC2F_DTS_32_N_8               15
+#define STM_TIM18_CCMR1_IC2PSC 10
+#define  STM_TIM18_CCMR1_IC2PSC_NONE                   0
+#define  STM_TIM18_CCMR1_IC2PSC_2                      1
+#define  STM_TIM18_CCMR1_IC2PSC_4                      2
+#define  STM_TIM18_CCMR1_IC2PSC_8                      3
+#define STM_TIM18_CCMR1_IC1F   4
+#define  STM_TIM18_CCMR1_IC1F_NONE                     0
+#define  STM_TIM18_CCMR1_IC1F_CK_INT_N_2               1
+#define  STM_TIM18_CCMR1_IC1F_CK_INT_N_4               2
+#define  STM_TIM18_CCMR1_IC1F_CK_INT_N_8               3
+#define  STM_TIM18_CCMR1_IC1F_DTS_2_N_6                4
+#define  STM_TIM18_CCMR1_IC1F_DTS_2_N_8                5
+#define  STM_TIM18_CCMR1_IC1F_DTS_4_N_6                6
+#define  STM_TIM18_CCMR1_IC1F_DTS_4_N_8                7
+#define  STM_TIM18_CCMR1_IC1F_DTS_8_N_6                8
+#define  STM_TIM18_CCMR1_IC1F_DTS_8_N_8                9
+#define  STM_TIM18_CCMR1_IC1F_DTS_16_N_5               10
+#define  STM_TIM18_CCMR1_IC1F_DTS_16_N_6               11
+#define  STM_TIM18_CCMR1_IC1F_DTS_16_N_8               12
+#define  STM_TIM18_CCMR1_IC1F_DTS_32_N_5               13
+#define  STM_TIM18_CCMR1_IC1F_DTS_32_N_6               14
+#define  STM_TIM18_CCMR1_IC1F_DTS_32_N_8               15
+#define STM_TIM18_CCMR1_IC1PSC 2
+#define  STM_TIM18_CCMR1_IC1PSC_NONE                   0
+#define  STM_TIM18_CCMR1_IC1PSC_2                      1
+#define  STM_TIM18_CCMR1_IC1PSC_4                      2
+#define  STM_TIM18_CCMR1_IC1PSC_8                      3
+
+#define STM_TIM18_CCMR2_OC4CE  15
+#define STM_TIM18_CCMR2_OC4M   12
+#define  STM_TIM18_CCMR2_OC4M_FROZEN                   0
+#define  STM_TIM18_CCMR2_OC4M_SET_HIGH_ON_MATCH        1
+#define  STM_TIM18_CCMR2_OC4M_SET_LOW_ON_MATCH         2
+#define  STM_TIM18_CCMR2_OC4M_TOGGLE                   3
+#define  STM_TIM18_CCMR2_OC4M_FORCE_LOW                4
+#define  STM_TIM18_CCMR2_OC4M_FORCE_HIGH               5
+#define  STM_TIM18_CCMR2_OC4M_PWM_MODE_1               6
+#define  STM_TIM18_CCMR2_OC4M_PWM_MODE_2               7
+#define  STM_TIM18_CCMR2_OC4M_MASK                     7UL
+#define STM_TIM18_CCMR2_OC4PE  11
+#define STM_TIM18_CCMR2_OC4FE  10
+#define STM_TIM18_CCMR2_CC4S   8
+#define  STM_TIM18_CCMR2_CC4S_OUTPUT                   0
+#define  STM_TIM18_CCMR2_CC4S_INPUT_TI4                1
+#define  STM_TIM18_CCMR2_CC4S_INPUT_TI3                2
+#define  STM_TIM18_CCMR2_CC4S_INPUT_TRC                3
+#define  STM_TIM18_CCMR2_CC4S_MASK                     3UL
+
+#define STM_TIM18_CCMR2_OC3CE  7
+#define STM_TIM18_CCMR2_OC3M   4
+#define  STM_TIM18_CCMR2_OC3M_FROZEN                   0
+#define  STM_TIM18_CCMR2_OC3M_SET_HIGH_ON_MATCH        1
+#define  STM_TIM18_CCMR2_OC3M_SET_LOW_ON_MATCH         2
+#define  STM_TIM18_CCMR2_OC3M_TOGGLE                   3
+#define  STM_TIM18_CCMR2_OC3M_FORCE_LOW                4
+#define  STM_TIM18_CCMR2_OC3M_FORCE_HIGH               5
+#define  STM_TIM18_CCMR2_OC3M_PWM_MODE_1               6
+#define  STM_TIM18_CCMR2_OC3M_PWM_MODE_2               7
+#define  STM_TIM18_CCMR2_OC3M_MASK                     7UL
+#define STM_TIM18_CCMR2_OC3PE  3
+#define STM_TIM18_CCMR2_OC3FE  2
+#define STM_TIM18_CCMR2_CC3S   0
+#define  STM_TIM18_CCMR2_CC3S_OUTPUT                   0
+#define  STM_TIM18_CCMR2_CC3S_INPUT_TI3                1
+#define  STM_TIM18_CCMR2_CC3S_INPUT_TI4                2
+#define  STM_TIM18_CCMR2_CC3S_INPUT_TRC                3
+#define  STM_TIM18_CCMR2_CC3S_MASK                     3UL
+
+#define STM_TIM18_CCER_CC4NP   15
+#define STM_TIM18_CCER_CC4P    13
+#define  STM_TIM18_CCER_CC4P_ACTIVE_HIGH       0
+#define  STM_TIM18_CCER_CC4P_ACTIVE_LOW        1
+#define STM_TIM18_CCER_CC4E    12
+#define STM_TIM18_CCER_CC3NP   11
+#define STM_TIM18_CCER_CC3P    9
+#define  STM_TIM18_CCER_CC3P_ACTIVE_HIGH       0
+#define  STM_TIM18_CCER_CC3P_ACTIVE_LOW        1
+#define STM_TIM18_CCER_CC3E    8
+#define STM_TIM18_CCER_CC2NP   7
+#define STM_TIM18_CCER_CC2P    5
+#define  STM_TIM18_CCER_CC2P_ACTIVE_HIGH       0
+#define  STM_TIM18_CCER_CC2P_ACTIVE_LOW        1
+#define STM_TIM18_CCER_CC2E    4
+#define STM_TIM18_CCER_CC1NP   3
+#define STM_TIM18_CCER_CC1P    1
+#define  STM_TIM18_CCER_CC1P_ACTIVE_HIGH       0
+#define  STM_TIM18_CCER_CC1P_ACTIVE_LOW        1
+#define STM_TIM18_CCER_CC1E    0
+
 struct stm_tim234 {
        vuint32_t       cr1;
        vuint32_t       cr2;
@@ -1496,6 +1787,44 @@ extern struct stm_tim234 stm_tim2, stm_tim3, stm_tim4;
 #define  STM_TIM234_CCER_CC1P_ACTIVE_LOW       1
 #define STM_TIM234_CCER_CC1E   0
 
+struct stm_tim67 {
+       vuint32_t       cr1;
+       vuint32_t       cr2;
+       uint32_t        _unused_08;
+       vuint32_t       dier;
+
+       vuint32_t       sr;
+       vuint32_t       egr;
+       uint32_t        _unused_18;
+       uint32_t        _unused_1c;
+
+       uint32_t        _unused_20;
+       vuint32_t       cnt;
+       vuint32_t       psc;
+       vuint32_t       arr;
+};
+
+extern struct stm_tim67 stm_tim6;
+
+#define STM_TIM67_CR1_ARPE     (7)
+#define STM_TIM67_CR1_OPM      (3)
+#define STM_TIM67_CR1_URS      (2)
+#define STM_TIM67_CR1_UDIS     (1)
+#define STM_TIM67_CR1_CEN      (0)
+
+#define STM_TIM67_CR2_MMS      (4)
+#define  STM_TIM67_CR2_MMS_RESET       0
+#define  STM_TIM67_CR2_MMS_ENABLE      1
+#define  STM_TIM67_CR2_MMS_UPDATE      2
+#define  STM_TIM67_CR2_MMS_MASK                7UL
+
+#define STM_TIM67_DIER_UDE     (8)
+#define STM_TIM67_DIER_UIE     (0)
+
+#define STM_TIM67_SR_UIF       (0)
+
+#define STM_TIM67_EGR_UG       (0)
+
 #define isr_decl(name) void stm_ ## name ## _isr(void)
 
 isr_decl(halt);