From feb38b5b41f55da04673e6dd8193f0c14cb0fb73 Mon Sep 17 00:00:00 2001 From: IOsetting Date: Wed, 11 Jan 2023 23:45:54 +0800 Subject: [PATCH] chore: bump to dfp.1.1.3 --- Docs/PY32F003 Reference manual v1.1.pdf | Bin Docs/PY32F003 datasheet 105℃ Rev.1.0_EN.pdf | Bin Docs/PY32F003 datasheet Rev.1.2_EN.pdf | Bin ...Y32F030 Reference manual v1.1_EN_Final.pdf | Bin Docs/PY32F030 datasheet 105℃ Rev.1.0_EN.pdf | Bin Docs/PY32F030 datasheet Rev.1.4_EN.pdf | Bin .../Raw/ADC/ContinuousConversion_DMA/main.c | 0 .../py32f0xx_hal_conf.h | 0 .../py32f0xx_hal_msp.c | 0 .../ContinuousConversion_DMA/py32f0xx_it.c | 0 .../ContinuousConversion_DMA/py32f0xx_it.h | 0 .../SingleConversion_TriggerTimer_IT/main.c | 0 .../py32f0xx_hal_conf.h | 0 .../py32f0xx_hal_msp.c | 0 .../py32f0xx_it.c | 0 .../py32f0xx_it.h | 0 Examples/Raw/DSP/Matrix_Calc/main.c | 0 .../Raw/DSP/Matrix_Calc/py32f0xx_hal_conf.h | 0 .../Raw/DSP/Matrix_Calc/py32f0xx_hal_msp.c | 0 Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.c | 0 Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.h | 0 Examples/Raw/GPIO/LED_Toggle/main.c | 0 .../Raw/GPIO/LED_Toggle/py32f0xx_hal_conf.h | 0 .../Raw/GPIO/LED_Toggle/py32f0xx_hal_msp.c | 0 Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.c | 0 Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.h | 0 Examples/Raw/RCC/HSE_ClockConfigurate/main.c | 0 .../HSE_ClockConfigurate/py32f0xx_hal_conf.h | 0 .../HSE_ClockConfigurate/py32f0xx_hal_msp.c | 0 .../RCC/HSE_ClockConfigurate/py32f0xx_it.c | 0 .../RCC/HSE_ClockConfigurate/py32f0xx_it.h | 0 .../Raw/RCC/HSE_PLL_ClockConfigurate/main.c | 0 .../py32f0xx_hal_conf.h | 0 .../py32f0xx_hal_msp.c | 0 .../HSE_PLL_ClockConfigurate/py32f0xx_it.c | 0 .../HSE_PLL_ClockConfigurate/py32f0xx_it.h | 0 Examples/Raw/RCC/HSI_ClockConfigurate/main.c | 0 .../HSI_ClockConfigurate/py32f0xx_hal_conf.h | 0 .../HSI_ClockConfigurate/py32f0xx_hal_msp.c | 0 .../RCC/HSI_ClockConfigurate/py32f0xx_it.c | 0 .../RCC/HSI_ClockConfigurate/py32f0xx_it.h | 0 Examples/Raw/RCC/HSI_PLL_Output/main.c | 0 .../RCC/HSI_PLL_Output/py32f0xx_hal_conf.h | 0 .../Raw/RCC/HSI_PLL_Output/py32f0xx_hal_msp.c | 0 Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.c | 0 Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.h | 0 .../Source/BasicMathFunctions/arm_abs_f32.c | 0 .../Source/BasicMathFunctions/arm_abs_q15.c | 0 .../Source/BasicMathFunctions/arm_abs_q31.c | 0 .../Source/BasicMathFunctions/arm_abs_q7.c | 0 .../Source/BasicMathFunctions/arm_add_f32.c | 0 .../Source/BasicMathFunctions/arm_add_q15.c | 0 .../Source/BasicMathFunctions/arm_add_q31.c | 0 .../Source/BasicMathFunctions/arm_add_q7.c | 0 .../BasicMathFunctions/arm_dot_prod_f32.c | 0 .../BasicMathFunctions/arm_dot_prod_q15.c | 0 .../BasicMathFunctions/arm_dot_prod_q31.c | 0 .../BasicMathFunctions/arm_dot_prod_q7.c | 0 .../Source/BasicMathFunctions/arm_mult_f32.c | 0 .../Source/BasicMathFunctions/arm_mult_q15.c | 0 .../Source/BasicMathFunctions/arm_mult_q31.c | 0 .../Source/BasicMathFunctions/arm_mult_q7.c | 0 .../BasicMathFunctions/arm_negate_f32.c | 0 .../BasicMathFunctions/arm_negate_q15.c | 0 .../BasicMathFunctions/arm_negate_q31.c | 0 .../Source/BasicMathFunctions/arm_negate_q7.c | 0 .../BasicMathFunctions/arm_offset_f32.c | 0 .../BasicMathFunctions/arm_offset_q15.c | 0 .../BasicMathFunctions/arm_offset_q31.c | 0 .../Source/BasicMathFunctions/arm_offset_q7.c | 0 .../Source/BasicMathFunctions/arm_scale_f32.c | 0 .../Source/BasicMathFunctions/arm_scale_q15.c | 0 .../Source/BasicMathFunctions/arm_scale_q31.c | 0 .../Source/BasicMathFunctions/arm_scale_q7.c | 0 .../Source/BasicMathFunctions/arm_shift_q15.c | 0 .../Source/BasicMathFunctions/arm_shift_q31.c | 0 .../Source/BasicMathFunctions/arm_shift_q7.c | 0 .../Source/BasicMathFunctions/arm_sub_f32.c | 0 .../Source/BasicMathFunctions/arm_sub_q15.c | 0 .../Source/BasicMathFunctions/arm_sub_q31.c | 0 .../Source/BasicMathFunctions/arm_sub_q7.c | 0 .../Source/CommonTables/arm_common_tables.c | 0 .../Source/CommonTables/arm_const_structs.c | 0 .../ComplexMathFunctions/arm_cmplx_conj_f32.c | 0 .../ComplexMathFunctions/arm_cmplx_conj_q15.c | 0 .../ComplexMathFunctions/arm_cmplx_conj_q31.c | 0 .../arm_cmplx_dot_prod_f32.c | 0 .../arm_cmplx_dot_prod_q15.c | 0 .../arm_cmplx_dot_prod_q31.c | 0 .../ComplexMathFunctions/arm_cmplx_mag_f32.c | 0 .../ComplexMathFunctions/arm_cmplx_mag_q15.c | 0 .../ComplexMathFunctions/arm_cmplx_mag_q31.c | 0 .../arm_cmplx_mag_squared_f32.c | 0 .../arm_cmplx_mag_squared_q15.c | 0 .../arm_cmplx_mag_squared_q31.c | 0 .../arm_cmplx_mult_cmplx_f32.c | 0 .../arm_cmplx_mult_cmplx_q15.c | 0 .../arm_cmplx_mult_cmplx_q31.c | 0 .../arm_cmplx_mult_real_f32.c | 0 .../arm_cmplx_mult_real_q15.c | 0 .../arm_cmplx_mult_real_q31.c | 0 .../ControllerFunctions/arm_pid_init_f32.c | 0 .../ControllerFunctions/arm_pid_init_q15.c | 0 .../ControllerFunctions/arm_pid_init_q31.c | 0 .../ControllerFunctions/arm_pid_reset_f32.c | 0 .../ControllerFunctions/arm_pid_reset_q15.c | 0 .../ControllerFunctions/arm_pid_reset_q31.c | 0 .../ControllerFunctions/arm_sin_cos_f32.c | 0 .../ControllerFunctions/arm_sin_cos_q31.c | 0 .../Source/FastMathFunctions/arm_cos_f32.c | 0 .../Source/FastMathFunctions/arm_cos_q15.c | 0 .../Source/FastMathFunctions/arm_cos_q31.c | 0 .../Source/FastMathFunctions/arm_sin_f32.c | 0 .../Source/FastMathFunctions/arm_sin_q15.c | 0 .../Source/FastMathFunctions/arm_sin_q31.c | 0 .../Source/FastMathFunctions/arm_sqrt_q15.c | 0 .../Source/FastMathFunctions/arm_sqrt_q31.c | 0 .../arm_biquad_cascade_df1_32x64_init_q31.c | 0 .../arm_biquad_cascade_df1_32x64_q31.c | 0 .../arm_biquad_cascade_df1_f32.c | 0 .../arm_biquad_cascade_df1_fast_q15.c | 0 .../arm_biquad_cascade_df1_fast_q31.c | 0 .../arm_biquad_cascade_df1_init_f32.c | 0 .../arm_biquad_cascade_df1_init_q15.c | 0 .../arm_biquad_cascade_df1_init_q31.c | 0 .../arm_biquad_cascade_df1_q15.c | 0 .../arm_biquad_cascade_df1_q31.c | 0 .../arm_biquad_cascade_df2T_f32.c | 0 .../arm_biquad_cascade_df2T_f64.c | 0 .../arm_biquad_cascade_df2T_init_f32.c | 0 .../arm_biquad_cascade_df2T_init_f64.c | 0 .../arm_biquad_cascade_stereo_df2T_f32.c | 0 .../arm_biquad_cascade_stereo_df2T_init_f32.c | 0 .../Source/FilteringFunctions/arm_conv_f32.c | 0 .../arm_conv_fast_opt_q15.c | 0 .../FilteringFunctions/arm_conv_fast_q15.c | 0 .../FilteringFunctions/arm_conv_fast_q31.c | 0 .../FilteringFunctions/arm_conv_opt_q15.c | 0 .../FilteringFunctions/arm_conv_opt_q7.c | 0 .../FilteringFunctions/arm_conv_partial_f32.c | 0 .../arm_conv_partial_fast_opt_q15.c | 0 .../arm_conv_partial_fast_q15.c | 0 .../arm_conv_partial_fast_q31.c | 0 .../arm_conv_partial_opt_q15.c | 0 .../arm_conv_partial_opt_q7.c | 0 .../FilteringFunctions/arm_conv_partial_q15.c | 0 .../FilteringFunctions/arm_conv_partial_q31.c | 0 .../FilteringFunctions/arm_conv_partial_q7.c | 0 .../Source/FilteringFunctions/arm_conv_q15.c | 0 .../Source/FilteringFunctions/arm_conv_q31.c | 0 .../Source/FilteringFunctions/arm_conv_q7.c | 0 .../FilteringFunctions/arm_correlate_f32.c | 0 .../arm_correlate_fast_opt_q15.c | 0 .../arm_correlate_fast_q15.c | 0 .../arm_correlate_fast_q31.c | 0 .../arm_correlate_opt_q15.c | 0 .../FilteringFunctions/arm_correlate_opt_q7.c | 0 .../FilteringFunctions/arm_correlate_q15.c | 0 .../FilteringFunctions/arm_correlate_q31.c | 0 .../FilteringFunctions/arm_correlate_q7.c | 0 .../FilteringFunctions/arm_fir_decimate_f32.c | 0 .../arm_fir_decimate_fast_q15.c | 0 .../arm_fir_decimate_fast_q31.c | 0 .../arm_fir_decimate_init_f32.c | 0 .../arm_fir_decimate_init_q15.c | 0 .../arm_fir_decimate_init_q31.c | 0 .../FilteringFunctions/arm_fir_decimate_q15.c | 0 .../FilteringFunctions/arm_fir_decimate_q31.c | 0 .../Source/FilteringFunctions/arm_fir_f32.c | 0 .../FilteringFunctions/arm_fir_fast_q15.c | 0 .../FilteringFunctions/arm_fir_fast_q31.c | 0 .../FilteringFunctions/arm_fir_init_f32.c | 0 .../FilteringFunctions/arm_fir_init_q15.c | 0 .../FilteringFunctions/arm_fir_init_q31.c | 0 .../FilteringFunctions/arm_fir_init_q7.c | 0 .../arm_fir_interpolate_f32.c | 0 .../arm_fir_interpolate_init_f32.c | 0 .../arm_fir_interpolate_init_q15.c | 0 .../arm_fir_interpolate_init_q31.c | 0 .../arm_fir_interpolate_q15.c | 0 .../arm_fir_interpolate_q31.c | 0 .../FilteringFunctions/arm_fir_lattice_f32.c | 0 .../arm_fir_lattice_init_f32.c | 0 .../arm_fir_lattice_init_q15.c | 0 .../arm_fir_lattice_init_q31.c | 0 .../FilteringFunctions/arm_fir_lattice_q15.c | 0 .../FilteringFunctions/arm_fir_lattice_q31.c | 0 .../Source/FilteringFunctions/arm_fir_q15.c | 0 .../Source/FilteringFunctions/arm_fir_q31.c | 0 .../Source/FilteringFunctions/arm_fir_q7.c | 0 .../FilteringFunctions/arm_fir_sparse_f32.c | 0 .../arm_fir_sparse_init_f32.c | 0 .../arm_fir_sparse_init_q15.c | 0 .../arm_fir_sparse_init_q31.c | 0 .../arm_fir_sparse_init_q7.c | 0 .../FilteringFunctions/arm_fir_sparse_q15.c | 0 .../FilteringFunctions/arm_fir_sparse_q31.c | 0 .../FilteringFunctions/arm_fir_sparse_q7.c | 0 .../FilteringFunctions/arm_iir_lattice_f32.c | 0 .../arm_iir_lattice_init_f32.c | 0 .../arm_iir_lattice_init_q15.c | 0 .../arm_iir_lattice_init_q31.c | 0 .../FilteringFunctions/arm_iir_lattice_q15.c | 0 .../FilteringFunctions/arm_iir_lattice_q31.c | 0 .../Source/FilteringFunctions/arm_lms_f32.c | 0 .../FilteringFunctions/arm_lms_init_f32.c | 0 .../FilteringFunctions/arm_lms_init_q15.c | 0 .../FilteringFunctions/arm_lms_init_q31.c | 0 .../FilteringFunctions/arm_lms_norm_f32.c | 0 .../arm_lms_norm_init_f32.c | 0 .../arm_lms_norm_init_q15.c | 0 .../arm_lms_norm_init_q31.c | 0 .../FilteringFunctions/arm_lms_norm_q15.c | 0 .../FilteringFunctions/arm_lms_norm_q31.c | 0 .../Source/FilteringFunctions/arm_lms_q15.c | 0 .../Source/FilteringFunctions/arm_lms_q31.c | 0 .../Source/MatrixFunctions/arm_mat_add_f32.c | 0 .../Source/MatrixFunctions/arm_mat_add_q15.c | 0 .../Source/MatrixFunctions/arm_mat_add_q31.c | 0 .../MatrixFunctions/arm_mat_cmplx_mult_f32.c | 0 .../MatrixFunctions/arm_mat_cmplx_mult_q15.c | 0 .../MatrixFunctions/arm_mat_cmplx_mult_q31.c | 0 .../Source/MatrixFunctions/arm_mat_init_f32.c | 0 .../Source/MatrixFunctions/arm_mat_init_q15.c | 0 .../Source/MatrixFunctions/arm_mat_init_q31.c | 0 .../MatrixFunctions/arm_mat_inverse_f32.c | 0 .../MatrixFunctions/arm_mat_inverse_f64.c | 0 .../Source/MatrixFunctions/arm_mat_mult_f32.c | 0 .../MatrixFunctions/arm_mat_mult_fast_q15.c | 0 .../MatrixFunctions/arm_mat_mult_fast_q31.c | 0 .../Source/MatrixFunctions/arm_mat_mult_q15.c | 0 .../Source/MatrixFunctions/arm_mat_mult_q31.c | 0 .../MatrixFunctions/arm_mat_scale_f32.c | 0 .../MatrixFunctions/arm_mat_scale_q15.c | 0 .../MatrixFunctions/arm_mat_scale_q31.c | 0 .../Source/MatrixFunctions/arm_mat_sub_f32.c | 0 .../Source/MatrixFunctions/arm_mat_sub_q15.c | 0 .../Source/MatrixFunctions/arm_mat_sub_q31.c | 0 .../MatrixFunctions/arm_mat_trans_f32.c | 0 .../MatrixFunctions/arm_mat_trans_q15.c | 0 .../MatrixFunctions/arm_mat_trans_q31.c | 0 .../Source/StatisticsFunctions/arm_max_f32.c | 0 .../Source/StatisticsFunctions/arm_max_q15.c | 0 .../Source/StatisticsFunctions/arm_max_q31.c | 0 .../Source/StatisticsFunctions/arm_max_q7.c | 0 .../Source/StatisticsFunctions/arm_mean_f32.c | 0 .../Source/StatisticsFunctions/arm_mean_q15.c | 0 .../Source/StatisticsFunctions/arm_mean_q31.c | 0 .../Source/StatisticsFunctions/arm_mean_q7.c | 0 .../Source/StatisticsFunctions/arm_min_f32.c | 0 .../Source/StatisticsFunctions/arm_min_q15.c | 0 .../Source/StatisticsFunctions/arm_min_q31.c | 0 .../Source/StatisticsFunctions/arm_min_q7.c | 0 .../StatisticsFunctions/arm_power_f32.c | 0 .../StatisticsFunctions/arm_power_q15.c | 0 .../StatisticsFunctions/arm_power_q31.c | 0 .../Source/StatisticsFunctions/arm_power_q7.c | 0 .../Source/StatisticsFunctions/arm_rms_f32.c | 0 .../Source/StatisticsFunctions/arm_rms_q15.c | 0 .../Source/StatisticsFunctions/arm_rms_q31.c | 0 .../Source/StatisticsFunctions/arm_std_f32.c | 0 .../Source/StatisticsFunctions/arm_std_q15.c | 0 .../Source/StatisticsFunctions/arm_std_q31.c | 0 .../Source/StatisticsFunctions/arm_var_f32.c | 0 .../Source/StatisticsFunctions/arm_var_q15.c | 0 .../Source/StatisticsFunctions/arm_var_q31.c | 0 .../Source/SupportFunctions/arm_copy_f32.c | 0 .../Source/SupportFunctions/arm_copy_q15.c | 0 .../Source/SupportFunctions/arm_copy_q31.c | 0 .../Source/SupportFunctions/arm_copy_q7.c | 0 .../Source/SupportFunctions/arm_fill_f32.c | 0 .../Source/SupportFunctions/arm_fill_q15.c | 0 .../Source/SupportFunctions/arm_fill_q31.c | 0 .../Source/SupportFunctions/arm_fill_q7.c | 0 .../SupportFunctions/arm_float_to_q15.c | 0 .../SupportFunctions/arm_float_to_q31.c | 0 .../Source/SupportFunctions/arm_float_to_q7.c | 0 .../SupportFunctions/arm_q15_to_float.c | 0 .../Source/SupportFunctions/arm_q15_to_q31.c | 0 .../Source/SupportFunctions/arm_q15_to_q7.c | 0 .../SupportFunctions/arm_q31_to_float.c | 0 .../Source/SupportFunctions/arm_q31_to_q15.c | 0 .../Source/SupportFunctions/arm_q31_to_q7.c | 0 .../Source/SupportFunctions/arm_q7_to_float.c | 0 .../Source/SupportFunctions/arm_q7_to_q15.c | 0 .../Source/SupportFunctions/arm_q7_to_q31.c | 0 .../TransformFunctions/arm_bitreversal.c | 0 .../Source/TransformFunctions/arm_cfft_f32.c | 0 .../Source/TransformFunctions/arm_cfft_q15.c | 0 .../Source/TransformFunctions/arm_cfft_q31.c | 0 .../TransformFunctions/arm_cfft_radix2_f32.c | 0 .../arm_cfft_radix2_init_f32.c | 0 .../arm_cfft_radix2_init_q15.c | 0 .../arm_cfft_radix2_init_q31.c | 0 .../TransformFunctions/arm_cfft_radix2_q15.c | 0 .../TransformFunctions/arm_cfft_radix2_q31.c | 0 .../TransformFunctions/arm_cfft_radix4_f32.c | 0 .../arm_cfft_radix4_init_f32.c | 0 .../arm_cfft_radix4_init_q15.c | 0 .../arm_cfft_radix4_init_q31.c | 0 .../TransformFunctions/arm_cfft_radix4_q15.c | 0 .../TransformFunctions/arm_cfft_radix4_q31.c | 0 .../TransformFunctions/arm_cfft_radix8_f32.c | 0 .../Source/TransformFunctions/arm_dct4_f32.c | 0 .../TransformFunctions/arm_dct4_init_f32.c | 0 .../TransformFunctions/arm_dct4_init_q15.c | 0 .../TransformFunctions/arm_dct4_init_q31.c | 0 .../Source/TransformFunctions/arm_dct4_q15.c | 0 .../Source/TransformFunctions/arm_dct4_q31.c | 0 .../Source/TransformFunctions/arm_rfft_f32.c | 0 .../TransformFunctions/arm_rfft_fast_f32.c | 0 .../arm_rfft_fast_init_f32.c | 0 .../TransformFunctions/arm_rfft_init_f32.c | 0 .../TransformFunctions/arm_rfft_init_q15.c | 0 .../TransformFunctions/arm_rfft_init_q31.c | 0 .../Source/TransformFunctions/arm_rfft_q15.c | 0 .../Source/TransformFunctions/arm_rfft_q31.c | 0 .../Device/PY32F0xx/Include/py32f002ax5.h | 0 .../Device/PY32F0xx/Include/py32f002x5.h | 3860 ++ .../CMSIS/Device/PY32F0xx/Include/py32f003.h | 0 .../Device/PY32F0xx/Include/py32f003x4.h | 0 .../Device/PY32F0xx/Include/py32f003x6.h | 0 .../Device/PY32F0xx/Include/py32f003x8.h | 0 .../Device/PY32F0xx/Include/py32f003xx.h | 0 .../CMSIS/Device/PY32F0xx/Include/py32f030.h | 0 .../Device/PY32F0xx/Include/py32f030x3.h | 0 .../Device/PY32F0xx/Include/py32f030x4.h | 0 .../Device/PY32F0xx/Include/py32f030x6.h | 0 .../Device/PY32F0xx/Include/py32f030x7.h | 0 .../Device/PY32F0xx/Include/py32f030x8.h | 0 .../Device/PY32F0xx/Include/py32f030xx.h | 0 .../Device/PY32F0xx/Include/py32f072xB.h | 7707 +++ .../CMSIS/Device/PY32F0xx/Include/py32f0xx.h | 7 +- .../PY32F0xx/Include/system_py32f003xx.h | 66 + .../PY32F0xx/Include/system_py32f030xx.h | 66 + .../PY32F0xx/Include/system_py32f072xx.h | 67 + .../Device/PY32F0xx/Include/system_py32f0xx.h | 2 +- .../PY32F0xx/Source/arm/startup_py32f002ax5.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f002x5.s | 233 + .../PY32F0xx/Source/arm/startup_py32f003x4.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f003x6.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f003x8.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f030x3.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f030x4.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f030x6.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f030x7.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f030x8.s | 34 +- .../PY32F0xx/Source/arm/startup_py32f072xB.s | 268 + .../PY32F0xx/Source/iar/startup_py32f002axx.s | 0 .../PY32F0xx/Source/iar/startup_py32f003xx.s | 0 .../PY32F0xx/Source/iar/startup_py32f030xx.s | 0 .../Device/PY32F0xx/Source/system_py32f0xx.c | 0 Libraries/CMSIS/Include/arm_common_tables.h | 0 Libraries/CMSIS/Include/arm_const_structs.h | 0 Libraries/CMSIS/Include/arm_math.h | 0 Libraries/CMSIS/Include/cmsis_armcc.h | 0 Libraries/CMSIS/Include/cmsis_armcc_V6.h | 0 Libraries/CMSIS/Include/cmsis_gcc.h | 0 Libraries/CMSIS/Include/core_cm0.h | 0 Libraries/CMSIS/Include/core_cm0plus.h | 0 Libraries/CMSIS/Include/core_cm3.h | 0 Libraries/CMSIS/Include/core_cm4.h | 0 Libraries/CMSIS/Include/core_cm7.h | 0 Libraries/CMSIS/Include/core_cmFunc.h | 0 Libraries/CMSIS/Include/core_cmInstr.h | 0 Libraries/CMSIS/Include/core_cmSimd.h | 0 Libraries/CMSIS/Include/core_sc000.h | 0 Libraries/CMSIS/Include/core_sc300.h | 0 Libraries/CMSIS/RTOS/Template/cmsis_os.h | 0 .../PY32F0xx_HAL_Driver/Inc/py32f0xx_hal.h | 0 .../Inc/py32f0xx_hal_adc.h | 0 .../Inc/py32f0xx_hal_adc_ex.h | 0 .../Inc/py32f0xx_hal_comp.h | 0 .../Inc/py32f0xx_hal_cortex.h | 0 .../Inc/py32f0xx_hal_crc.h | 0 .../Inc/py32f0xx_hal_def.h | 0 .../Inc/py32f0xx_hal_dma.h | 0 .../Inc/py32f0xx_hal_dma_ex.h | 0 .../Inc/py32f0xx_hal_exti.h | 0 .../Inc/py32f0xx_hal_flash.h | 0 .../Inc/py32f0xx_hal_flash_ex.h | 0 .../Inc/py32f0xx_hal_gpio.h | 0 .../Inc/py32f0xx_hal_gpio_ex.h | 0 .../Inc/py32f0xx_hal_i2c.h | 0 .../Inc/py32f0xx_hal_irda.h | 0 .../Inc/py32f0xx_hal_iwdg.h | 0 .../Inc/py32f0xx_hal_led.h | 0 .../Inc/py32f0xx_hal_lptim.h | 0 .../Inc/py32f0xx_hal_pwr.h | 0 .../Inc/py32f0xx_hal_rcc.h | 0 .../Inc/py32f0xx_hal_rcc_ex.h | 0 .../Inc/py32f0xx_hal_rtc.h | 0 .../Inc/py32f0xx_hal_rtc_ex.h | 0 .../Inc/py32f0xx_hal_spi.h | 0 .../Inc/py32f0xx_hal_tim.h | 0 .../Inc/py32f0xx_hal_tim_ex.h | 0 .../Inc/py32f0xx_hal_uart.h | 0 .../Inc/py32f0xx_hal_usart.h | 0 .../Inc/py32f0xx_hal_wwdg.h | 0 .../PY32F0xx_HAL_Driver/Src/py32f0xx_hal.c | 0 .../Src/py32f0xx_hal_adc.c | 0 .../Src/py32f0xx_hal_adc_ex.c | 0 .../Src/py32f0xx_hal_comp.c | 0 .../Src/py32f0xx_hal_cortex.c | 0 .../Src/py32f0xx_hal_crc.c | 0 .../Src/py32f0xx_hal_dma.c | 0 .../Src/py32f0xx_hal_exti.c | 0 .../Src/py32f0xx_hal_flash.c | 0 .../Src/py32f0xx_hal_gpio.c | 0 .../Src/py32f0xx_hal_i2c.c | 0 .../Src/py32f0xx_hal_irda.c | 0 .../Src/py32f0xx_hal_iwdg.c | 0 .../Src/py32f0xx_hal_led.c | 0 .../Src/py32f0xx_hal_lptim.c | 0 .../Src/py32f0xx_hal_pwr.c | 0 .../Src/py32f0xx_hal_rcc.c | 0 .../Src/py32f0xx_hal_rcc_ex.c | 0 .../Src/py32f0xx_hal_rtc.c | 0 .../Src/py32f0xx_hal_rtc_ex.c | 0 .../Src/py32f0xx_hal_spi.c | 0 .../Src/py32f0xx_hal_tim.c | 0 .../Src/py32f0xx_hal_tim_ex.c | 0 .../Src/py32f0xx_hal_uart.c | 0 .../Src/py32f0xx_hal_usart.c | 0 .../Src/py32f0xx_hal_wwdg.c | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_adc.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_bus.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_comp.h | 0 .../Inc/py32f0xx_ll_cortex.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_crc.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_dma.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_exti.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_gpio.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_i2c.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_iwdg.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_led.h | 0 .../Inc/py32f0xx_ll_lptim.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_pwr.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rcc.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rtc.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_spi.h | 0 .../Inc/py32f0xx_ll_system.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_tim.h | 0 .../Inc/py32f0xx_ll_usart.h | 0 .../Inc/py32f0xx_ll_utils.h | 0 .../PY32F0xx_LL_Driver/Inc/py32f0xx_ll_wwdg.h | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_adc.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_comp.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_crc.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_dma.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_exti.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_gpio.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_i2c.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_led.c | 0 .../Src/py32f0xx_ll_lptim.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_pwr.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_rcc.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_rtc.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_spi.c | 0 .../PY32F0xx_LL_Driver/Src/py32f0xx_ll_tim.c | 0 .../Src/py32f0xx_ll_usart.c | 0 .../Src/py32f0xx_ll_utils.c | 0 .../Devices/Puya/PY32F003xx_16.FLM | Bin .../Devices/Puya/PY32F003xx_32.FLM | Bin .../Devices/Puya/PY32F003xx_64.FLM | Bin .../Devices/Puya/PY32F003xx_OPT.FLM | Bin .../Devices/Puya/PY32F030xx_16.FLM | Bin .../Devices/Puya/PY32F030xx_32.FLM | Bin .../Devices/Puya/PY32F030xx_48.FLM | Bin .../Devices/Puya/PY32F030xx_64.FLM | Bin .../{ => Flash}/Devices/Puya/PY32F030xx_8.FLM | Bin .../Devices/Puya/PY32F030xx_OPT.FLM | Bin .../Devices/Puya/PY32F072xx_128.FLM | Bin .../Devices/Puya/PY32F072xx_OPT.FLM | Bin Misc/{ => Flash}/Devices/Puya/PY32F0xx_16.FLM | Bin Misc/{ => Flash}/Devices/Puya/PY32F0xx_20.FLM | Bin Misc/{ => Flash}/Devices/Puya/PY32F0xx_32.FLM | Bin Misc/{ => Flash}/Devices/Puya/PY32F0xx_48.FLM | Bin Misc/{ => Flash}/Devices/Puya/PY32F0xx_64.FLM | Bin Misc/{ => Flash}/Devices/Puya/PY32F0xx_8.FLM | Bin .../{ => Flash}/Devices/Puya/PY32F0xx_OPT.FLM | Bin Misc/Flash/Sources/PY32F072xx/FlashDev.c | 175 + Misc/Flash/Sources/PY32F072xx/FlashOS.h | 84 + Misc/Flash/Sources/PY32F072xx/FlashPrg.c | 452 + .../Sources/PY32F072xx/PY32F072xx.uvoptx | 1254 + .../Sources/PY32F072xx/PY32F072xx.uvprojx | 2789 ++ Misc/Flash/Sources/PY32F072xx/Target.lin | 22 + Misc/Flash/Sources/PY32F0xx/FlashDev.c | 175 + Misc/Flash/Sources/PY32F0xx/FlashOS.h | 84 + Misc/Flash/Sources/PY32F0xx/FlashPrg.c | 542 + Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvoptx | 1205 + Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvprojx | 2782 ++ Misc/Flash/Sources/PY32F0xx/Target.lin | 22 + Misc/JLinkDevices.xml | 0 ....1.0.pack => Puya.PY32F0xx_DFP.1.1.3.pack} | Bin 20200643 -> 20256080 bytes Misc/{ => SVD}/py32f002axx.svd | 15685 +++--- Misc/SVD/py32f002xx.svd | 7953 +++ Misc/{ => SVD}/py32f003xx.svd | 22178 ++++----- Misc/{ => SVD}/py32f030xx.svd | 23164 ++++----- Misc/{ => SVD}/py32f072xx.svd | 40502 ++++++++-------- README.md | 28 +- 501 files changed, 80959 insertions(+), 50719 deletions(-) mode change 100755 => 100644 Docs/PY32F003 Reference manual v1.1.pdf mode change 100755 => 100644 Docs/PY32F003 datasheet 105℃ Rev.1.0_EN.pdf mode change 100755 => 100644 Docs/PY32F003 datasheet Rev.1.2_EN.pdf mode change 100755 => 100644 Docs/PY32F030 Reference manual v1.1_EN_Final.pdf mode change 100755 => 100644 Docs/PY32F030 datasheet 105℃ Rev.1.0_EN.pdf mode change 100755 => 100644 Docs/PY32F030 datasheet Rev.1.4_EN.pdf mode change 100755 => 100644 Examples/Raw/ADC/ContinuousConversion_DMA/main.c mode change 100755 => 100644 Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_it.h mode change 100755 => 100644 Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/main.c mode change 100755 => 100644 Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_it.h mode change 100755 => 100644 Examples/Raw/DSP/Matrix_Calc/main.c mode change 100755 => 100644 Examples/Raw/DSP/Matrix_Calc/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/DSP/Matrix_Calc/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.h mode change 100755 => 100644 Examples/Raw/GPIO/LED_Toggle/main.c mode change 100755 => 100644 Examples/Raw/GPIO/LED_Toggle/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/GPIO/LED_Toggle/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.h mode change 100755 => 100644 Examples/Raw/RCC/HSE_ClockConfigurate/main.c mode change 100755 => 100644 Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_it.h mode change 100755 => 100644 Examples/Raw/RCC/HSE_PLL_ClockConfigurate/main.c mode change 100755 => 100644 Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_it.h mode change 100755 => 100644 Examples/Raw/RCC/HSI_ClockConfigurate/main.c mode change 100755 => 100644 Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_it.h mode change 100755 => 100644 Examples/Raw/RCC/HSI_PLL_Output/main.c mode change 100755 => 100644 Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_hal_conf.h mode change 100755 => 100644 Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_hal_msp.c mode change 100755 => 100644 Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.c mode change 100755 => 100644 Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.h mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c mode change 100755 => 100644 Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f002ax5.h create mode 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f002x5.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f003.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f003x4.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f003x6.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f003x8.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f003xx.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f030.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f030x3.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f030x4.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f030x6.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f030x7.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f030x8.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f030xx.h create mode 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f072xB.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/py32f0xx.h create mode 100644 Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f003xx.h create mode 100644 Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f030xx.h create mode 100644 Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f072xx.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f0xx.h mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002ax5.s create mode 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002x5.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x4.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x6.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x8.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x3.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x4.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x6.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x7.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x8.s create mode 100644 Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f072xB.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f002axx.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f003xx.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f030xx.s mode change 100755 => 100644 Libraries/CMSIS/Device/PY32F0xx/Source/system_py32f0xx.c mode change 100755 => 100644 Libraries/CMSIS/Include/arm_common_tables.h mode change 100755 => 100644 Libraries/CMSIS/Include/arm_const_structs.h mode change 100755 => 100644 Libraries/CMSIS/Include/arm_math.h mode change 100755 => 100644 Libraries/CMSIS/Include/cmsis_armcc.h mode change 100755 => 100644 Libraries/CMSIS/Include/cmsis_armcc_V6.h mode change 100755 => 100644 Libraries/CMSIS/Include/cmsis_gcc.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cm0.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cm0plus.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cm3.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cm4.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cm7.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cmFunc.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cmInstr.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_cmSimd.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_sc000.h mode change 100755 => 100644 Libraries/CMSIS/Include/core_sc300.h mode change 100755 => 100644 Libraries/CMSIS/RTOS/Template/cmsis_os.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_adc.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_adc_ex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_comp.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_cortex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_crc.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_def.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_dma.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_dma_ex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_exti.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_flash.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_flash_ex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_gpio.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_gpio_ex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_i2c.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_irda.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_iwdg.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_led.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_lptim.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_pwr.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rcc.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rcc_ex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rtc.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rtc_ex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_spi.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_tim.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_tim_ex.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_uart.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_usart.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_wwdg.h mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc_ex.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_comp.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_cortex.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_crc.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_dma.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_exti.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_flash.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_gpio.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_i2c.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_irda.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_iwdg.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_led.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_lptim.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_pwr.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc_ex.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc_ex.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_spi.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim_ex.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_uart.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_usart.c mode change 100755 => 100644 Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_wwdg.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_adc.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_bus.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_comp.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_cortex.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_crc.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_dma.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_exti.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_gpio.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_i2c.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_iwdg.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_led.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_lptim.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_pwr.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rcc.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rtc.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_spi.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_system.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_tim.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_usart.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_utils.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_wwdg.h mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_adc.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_comp.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_crc.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_dma.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_exti.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_gpio.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_i2c.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_led.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_lptim.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_pwr.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_rcc.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_rtc.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_spi.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_tim.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_usart.c mode change 100755 => 100644 Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_utils.c rename Misc/{ => Flash}/Devices/Puya/PY32F003xx_16.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F003xx_32.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F003xx_64.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F003xx_OPT.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F030xx_16.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F030xx_32.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F030xx_48.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F030xx_64.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F030xx_8.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F030xx_OPT.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F072xx_128.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F072xx_OPT.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F0xx_16.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F0xx_20.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F0xx_32.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F0xx_48.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F0xx_64.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F0xx_8.FLM (100%) rename Misc/{ => Flash}/Devices/Puya/PY32F0xx_OPT.FLM (100%) create mode 100644 Misc/Flash/Sources/PY32F072xx/FlashDev.c create mode 100644 Misc/Flash/Sources/PY32F072xx/FlashOS.h create mode 100644 Misc/Flash/Sources/PY32F072xx/FlashPrg.c create mode 100644 Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvoptx create mode 100644 Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvprojx create mode 100644 Misc/Flash/Sources/PY32F072xx/Target.lin create mode 100644 Misc/Flash/Sources/PY32F0xx/FlashDev.c create mode 100644 Misc/Flash/Sources/PY32F0xx/FlashOS.h create mode 100644 Misc/Flash/Sources/PY32F0xx/FlashPrg.c create mode 100644 Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvoptx create mode 100644 Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvprojx create mode 100644 Misc/Flash/Sources/PY32F0xx/Target.lin mode change 100755 => 100644 Misc/JLinkDevices.xml rename Misc/{Puya.PY32F0xx_DFP.1.1.0.pack => Puya.PY32F0xx_DFP.1.1.3.pack} (99%) mode change 100755 => 100644 rename Misc/{ => SVD}/py32f002axx.svd (96%) create mode 100644 Misc/SVD/py32f002xx.svd rename Misc/{ => SVD}/py32f003xx.svd (96%) rename Misc/{ => SVD}/py32f030xx.svd (96%) rename Misc/{ => SVD}/py32f072xx.svd (96%) diff --git a/Docs/PY32F003 Reference manual v1.1.pdf b/Docs/PY32F003 Reference manual v1.1.pdf old mode 100755 new mode 100644 diff --git a/Docs/PY32F003 datasheet 105℃ Rev.1.0_EN.pdf b/Docs/PY32F003 datasheet 105℃ Rev.1.0_EN.pdf old mode 100755 new mode 100644 diff --git a/Docs/PY32F003 datasheet Rev.1.2_EN.pdf b/Docs/PY32F003 datasheet Rev.1.2_EN.pdf old mode 100755 new mode 100644 diff --git a/Docs/PY32F030 Reference manual v1.1_EN_Final.pdf b/Docs/PY32F030 Reference manual v1.1_EN_Final.pdf old mode 100755 new mode 100644 diff --git a/Docs/PY32F030 datasheet 105℃ Rev.1.0_EN.pdf b/Docs/PY32F030 datasheet 105℃ Rev.1.0_EN.pdf old mode 100755 new mode 100644 diff --git a/Docs/PY32F030 datasheet Rev.1.4_EN.pdf b/Docs/PY32F030 datasheet Rev.1.4_EN.pdf old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/ContinuousConversion_DMA/main.c b/Examples/Raw/ADC/ContinuousConversion_DMA/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_conf.h b/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_msp.c b/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_it.c b/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_it.h b/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/main.c b/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_hal_conf.h b/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_hal_msp.c b/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_it.c b/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_it.h b/Examples/Raw/ADC/SingleConversion_TriggerTimer_IT/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/DSP/Matrix_Calc/main.c b/Examples/Raw/DSP/Matrix_Calc/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/DSP/Matrix_Calc/py32f0xx_hal_conf.h b/Examples/Raw/DSP/Matrix_Calc/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/DSP/Matrix_Calc/py32f0xx_hal_msp.c b/Examples/Raw/DSP/Matrix_Calc/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.c b/Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.h b/Examples/Raw/DSP/Matrix_Calc/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/GPIO/LED_Toggle/main.c b/Examples/Raw/GPIO/LED_Toggle/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/GPIO/LED_Toggle/py32f0xx_hal_conf.h b/Examples/Raw/GPIO/LED_Toggle/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/GPIO/LED_Toggle/py32f0xx_hal_msp.c b/Examples/Raw/GPIO/LED_Toggle/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.c b/Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.h b/Examples/Raw/GPIO/LED_Toggle/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_ClockConfigurate/main.c b/Examples/Raw/RCC/HSE_ClockConfigurate/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_hal_conf.h b/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_hal_msp.c b/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_it.c b/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_it.h b/Examples/Raw/RCC/HSE_ClockConfigurate/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/main.c b/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_hal_conf.h b/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_hal_msp.c b/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_it.c b/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_it.h b/Examples/Raw/RCC/HSE_PLL_ClockConfigurate/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_ClockConfigurate/main.c b/Examples/Raw/RCC/HSI_ClockConfigurate/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_hal_conf.h b/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_hal_msp.c b/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_it.c b/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_it.h b/Examples/Raw/RCC/HSI_ClockConfigurate/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_PLL_Output/main.c b/Examples/Raw/RCC/HSI_PLL_Output/main.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_hal_conf.h b/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_hal_conf.h old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_hal_msp.c b/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_hal_msp.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.c b/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.c old mode 100755 new mode 100644 diff --git a/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.h b/Examples/Raw/RCC/HSI_PLL_Output/py32f0xx_it.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c b/Libraries/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c b/Libraries/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c b/Libraries/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c b/Libraries/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c b/Libraries/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c b/Libraries/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c b/Libraries/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c b/Libraries/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c b/Libraries/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Device/PY32F0xx/Include/py32f002ax5.h b/Libraries/CMSIS/Device/PY32F0xx/Include/py32f002ax5.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Device/PY32F0xx/Include/py32f002x5.h b/Libraries/CMSIS/Device/PY32F0xx/Include/py32f002x5.h new file mode 100644 index 0000000..510b7b8 --- /dev/null +++ b/Libraries/CMSIS/Device/PY32F0xx/Include/py32f002x5.h @@ -0,0 +1,3860 @@ +/** + ****************************************************************************** + * @file py32f002x5.h + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for PY32F0xx devices. + * @version v1.0.1 + * + ****************************************************************************** + * @attention + * + *

© Copyright (c) Puya Semiconductor Co. + * All rights reserved.

+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup py32f002x5 + * @{ + */ + +#ifndef __PY32F002X5_H +#define __PY32F002X5_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M0+ Processor and Core Peripherals + */ +#define __CM0PLUS_REV 0 /*!< Core Revision r0p0 */ +#define __MPU_PRESENT 0 /*!< PY32F0xx do not provide MPU */ +#define __VTOR_PRESENT 1 /*!< Vector Table Register supported */ +#define __NVIC_PRIO_BITS 2 /*!< PY32F0xx uses 2 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief PY32F0xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ + +/*!< Interrupt Number Definition */ +typedef enum +{ + /****** Cortex-M0+ Processor Exceptions Numbers *************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M Hard Fault Interrupt */ + SVC_IRQn = -5, /*!< 11 Cortex-M SV Call Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M System Tick Interrupt */ + /****** PY32F0 specific Interrupt Numbers *******************************************************************/ + FLASH_IRQn = 3, /*!< FLASH global Interrupt */ + RCC_IRQn = 4, /*!< RCC global Interrupt */ + EXTI0_1_IRQn = 5, /*!< EXTI 0 and 1 Interrupts */ + EXTI2_3_IRQn = 6, /*!< EXTI Line 2 and 3 Interrupts */ + EXTI4_15_IRQn = 7, /*!< EXTI Line 4 to 15 Interrupts */ + ADC_IRQn = 12, /*!< ADC Interrupts */ + TIM1_BRK_UP_TRG_COM_IRQn = 13, /*!< TIM1 Break, Update, Trigger and Commutation Interrupts */ + TIM1_CC_IRQn = 14, /*!< TIM1 Capture Compare Interrupt */ + TIM6_LPTIM1_IRQn = 17, /*!< TIM6 LPTIM1 global Interrupts */ + I2C1_IRQn = 23, /*!< I2C1 Interrupt (combined with EXTI 23) */ + SPI1_IRQn = 25, /*!< SPI1 Interrupt */ + USART1_IRQn = 27, /*!< USART1 Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm0plus.h" /* Cortex-M0+ processor and core peripherals */ +#include "system_py32f0xx.h" /* PY32F0xx System Header */ +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR1; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR; /*!< ADC sampling time register, Address offset: 0x14 */ + uint32_t RESERVED1[2]; /*!< Reserved, 0x18-0x1C */ + __IO uint32_t TR; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + uint32_t RESERVED2; /*!< Reserved, 0x24 */ + __IO uint32_t CHSELR; /*!< ADC group regular sequencer register, Address offset: 0x28 */ + uint32_t RESERVED3[5]; /*!< Reserved, 0x2C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + __IO uint32_t CCSR; /*!< ADC calibration configuration&status register Address offset: 0x44 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: ADC1 base address + 0x308 */ +} ADC_Common_TypeDef; + +/** + * @brief CRC calculation unit + */ +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ +} CRC_TypeDef; + +/** + * @brief Debug MCU + */ +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug configuration register, Address offset: 0x04 */ + __IO uint32_t APBFZ1; /*!< Debug APB freeze register 1, Address offset: 0x08 */ + __IO uint32_t APBFZ2; /*!< Debug APB freeze register 2, Address offset: 0x0C */ +} DBGMCU_TypeDef; + + +/** + * @brief Asynch Interrupt/Event Controller (EXTI) + */ +typedef struct +{ + __IO uint32_t RTSR; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */ + __IO uint32_t FTSR; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */ + __IO uint32_t SWIER; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */ + __IO uint32_t PR; /*!< EXTI Pending Register 1 Address offset: 0x0C */ + __IO uint32_t RESERVED1[4]; /*!< Reserved 1, 0x10 -- 0x1C */ + __IO uint32_t RESERVED2[5]; /*!< Reserved 2, 0x20 -- 0x30 */ + __IO uint32_t RESERVED3[11]; /*!< Reserved 3, 0x34 -- 0x5C */ + __IO uint32_t EXTICR[2]; /*!< EXTI External Interrupt Configuration Register, 0x60 -- 0x68 */ + __IO uint32_t RESERVED4[6]; /*!< Reserved 5, 0x6C -- 0x7C */ + __IO uint32_t IMR; /*!< EXTI Interrupt Mask Register , Address offset: 0x80 */ + __IO uint32_t EMR; /*!< EXTI Event Mask Register , Address offset: 0x84 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH Access Control register, Address offset: 0x00 */ + __IO uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH Key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH Option Key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH Status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH Control register, Address offset: 0x14 */ + __IO uint32_t RESERVED2[2]; /*!< Reserved2, Address offset: 0x18-0x1C */ + __IO uint32_t OPTR; /*!< FLASH Option register, Address offset: 0x20 */ + __IO uint32_t SDKR; /*!< FLASH SDK address register, Address offset: 0x24 */ + __IO uint32_t BTCR; /*!< desc BTCR, Address offset: 0x28 */ + __IO uint32_t WRPR; /*!< FLASH WRP address register, Address offset: 0x2C */ + __IO uint32_t RESERVED3[(0x90 - 0x2C) / 4 - 1]; + __IO uint32_t STCR; /*!< FLASH sleep time config register, Address offset: 0x90 */ + __IO uint32_t RESERVED4[(0x100 - 0x90) / 4 - 1]; + __IO uint32_t TS0; /*!< FLASH TS0 register, Address offset: 0x100 */ + __IO uint32_t TS1; /*!< FLASH TS1 register, Address offset: 0x104 */ + __IO uint32_t TS2P; /*!< FLASH TS2P register, Address offset: 0x108 */ + __IO uint32_t TPS3; /*!< FLASH TPS3 register, Address offset: 0x10C */ + __IO uint32_t TS3; /*!< FLASH TS3 register, Address offset: 0x110 */ + __IO uint32_t PERTPE; /*!< FLASH PERTPE register, Address offset: 0x114 */ + __IO uint32_t SMERTPE; /*!< FLASH SMERTPE register, Address offset: 0x118 */ + __IO uint32_t PRGTPE; /*!< FLASH PRGTPE register, Address offset: 0x11C */ + __IO uint32_t PRETPE; /*!< FLASH PRETPE register, Address offset: 0x120 */ +} FLASH_TypeDef; + +/** + * @brief Option Bytes + */ +typedef struct +{ + __IO uint8_t RDP; /*!< FLASH option byte Read protection, Address offset: 0x00 */ + __IO uint8_t USER; /*!< FLASH option byte user options, Address offset: 0x01 */ + __IO uint8_t nRDP; /*!< Complemented FLASH option byte Read protection,Address offset: 0x02 */ + __IO uint8_t nUSER; /*!< Complemented FLASH option byte user options, Address offset: 0x03 */ + __IO uint8_t SDK_STRT; /*!< SDK area start address(stored in SDK[4:0]), Address offset: 0x04 */ + __IO uint8_t SDK_END; /*!< SDK area end address(stored in SDK[12:8]), Address offset: 0x05 */ + __IO uint8_t nSDK_STRT; /*!< Complemented SDK area start address, Address offset: 0x06 */ + __IO uint8_t nSDK_END; /*!< Complemented SDK area end address, Address offset: 0x07 */ + uint32_t RESERVED1; /*!< RESERVED1, Address offset: 0x08 */ + __IO uint16_t WRP; /*!< FLASH option byte write protection, Address offset: 0x0C */ + __IO uint16_t nWRP; /*!< Complemented FLASH option byte write protection,Address offset: 0x0E */ +} OB_TypeDef; + +/** + * @brief General Purpose I/O + */ +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ +typedef struct +{ + __IO uint32_t CR1; + __IO uint32_t CR2; + __IO uint32_t OAR1; + __IO uint32_t OAR2; + __IO uint32_t DR; + __IO uint32_t SR1; + __IO uint32_t SR2; + __IO uint32_t CCR; + __IO uint32_t TRISE; +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + //__IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + +/** + * @brief LPTIMER + */ +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t RESERVED1; /*!< RESERVED1, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ +} LPTIM_TypeDef; + +/** + * @brief Power Control + */ +typedef struct +{ + __IO uint32_t CR1; /*!< PWR Power Control Register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< PWR Power Control Register 2, Address offset: 0x04 */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ +typedef struct +{ + __IO uint32_t CR; /*!< RCC Clock Sources Control Register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC Internal Clock Sources Calibration Register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC Regulated Domain Clocks Configuration Register, Address offset: 0x08 */ + __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x0C */ + __IO uint32_t ECSCR; /*!< RCC External clock source control register, Address offset: 0x10 */ + __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register, Address offset: 0x20 */ + __IO uint32_t IOPRSTR; /*!< RCC IO port reset register, Address offset: 0x24 */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripherals reset register, Address offset: 0x28 */ + __IO uint32_t APBRSTR1; /*!< RCC APB peripherals reset register 1, Address offset: 0x2C */ + __IO uint32_t APBRSTR2; /*!< RCC APB peripherals reset register 2, Address offset: 0x30 */ + __IO uint32_t IOPENR; /*!< RCC IO port enable register, Address offset: 0x34 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripherals clock enable register, Address offset: 0x38 */ + __IO uint32_t APBENR1; /*!< RCC APB peripherals clock enable register1, Address offset: 0x3C */ + __IO uint32_t APBENR2; /*!< RCC APB peripherals clock enable register2, Address offset: 0x40 */ + __IO uint32_t RESERVED2[4];/*!< Reserved, Address offset: 0x44-0x50 */ + __IO uint32_t CCIPR; /*!< RCC Peripherals Independent Clocks Configuration Register, Address offset: 0x54 */ + __IO uint32_t RESERVED3; /*!< Reserved, Address offset: 0x58 */ + __IO uint32_t BDCR; /*!< RCC Backup Domain Control Register, Address offset: 0x5C */ + __IO uint32_t CSR; /*!< RCC Unregulated Domain Clock Control and Status Register, Address offset: 0x60 */ +} RCC_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ +typedef struct +{ + __IO uint32_t CR1; /*!< SPI desc CR1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI desc CR2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI desc SR, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI desc DR, Address offset: 0x0C */ + // __IO uint32_t CRCPR; /*!< SPI desc CRCPR, Address offset: 0x10 */ + // __IO uint32_t RXCRCR; /*!< SPI desc RXCRCR, Address offset: 0x14 */ + // __IO uint32_t TXCRCR; /*!< SPI desc TXCRCR, Address offset: 0x18 */ + // __IO uint32_t I2SCFGR; /*!< SPI desc I2SCFGR, Address offset: 0x1C */ + // __IO uint32_t I2SPR; /*!< SPI desc I2SPR, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ +typedef struct +{ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x00 */ + __IO uint32_t RESERVED1[5]; /*!< Reserved, Address offset: 0x04 - 0x14 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x18 */ + __IO uint32_t GPIO_ENS; /*!< GPIO Filter Enable, Address offset: 0x1C */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler register, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ +// __IO uint32_t RESERVED[2]; /*!< Reserved, Address offset: 0x48 - 0x4F */ +// __IO uint32_t OR; /*!< TIM option register, Address offset: 0x50 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t SR; /*!< USART Status register , Address offset: 0x00 */ + __IO uint32_t DR; /*!< USART Data register, Address offset: 0x04 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x08 */ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x0C */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x10 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x14 */ +} USART_TypeDef; + +/** @addtogroup Peripheral_memory_map + * @{ + */ +#define FLASH_BASE (0x08000000UL) /*!< FLASH base address */ +#define FLASH_END (0x08004FFFUL) /*!< FLASH end address */ +#define FLASH_SIZE (FLASH_END - FLASH_BASE + 1) +#define FLASH_PAGE_SIZE 0x00000080U /*!< FLASH Page Size, 128 Bytes */ +#define FLASH_PAGE_NB (FLASH_SIZE / FLASH_PAGE_SIZE) +#define FLASH_SECTOR_SIZE 0x00001000U /*!< FLASH Sector Size, 4096 Bytes */ +#define FLASH_SECTOR_NB (FLASH_SIZE / FLASH_SECTOR_SIZE) +#define SRAM_BASE (0x20000000UL) /*!< SRAM base address */ +#define SRAM_END (0x20000BFFUL) /*!< SRAM end address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ +#define IOPORT_BASE (0x50000000UL) /*!< IOPORT base address */ + +/*!< Peripheral memory map */ +#define APBPERIPH_BASE (PERIPH_BASE) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000UL) + +/*!< APB peripherals */ +#define TIM6_BASE (APBPERIPH_BASE + 0x00001000UL) +#define IWDG_BASE (APBPERIPH_BASE + 0x00003000UL) +#define I2C_BASE (APBPERIPH_BASE + 0x00005400UL) +#define PWR_BASE (APBPERIPH_BASE + 0x00007000UL) +#define LPTIM_BASE (APBPERIPH_BASE + 0x00007C00UL) +#define SYSCFG_BASE (APBPERIPH_BASE + 0x00010000UL) +#define ADC1_BASE (APBPERIPH_BASE + 0x00012400UL) +#define ADC_BASE (APBPERIPH_BASE + 0x00012708UL) +#define TIM1_BASE (APBPERIPH_BASE + 0x00012C00UL) +#define SPI1_BASE (APBPERIPH_BASE + 0x00013000UL) +#define USART1_BASE (APBPERIPH_BASE + 0x00013800UL) +#define DBGMCU_BASE (APBPERIPH_BASE + 0x00015800UL) + + +/*!< AHB peripherals */ +#define RCC_BASE (AHBPERIPH_BASE + 0x00001000UL) +#define EXTI_BASE (AHBPERIPH_BASE + 0x00001800UL) +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x00002000UL) /*!< FLASH registers base address */ +#define OB_BASE 0x1FFF0E80UL /*!< FLASH Option Bytes base address */ +#define FLASHSIZE_BASE 0x1FFF0FFCUL /*!< FLASH Size register base address */ +#define UID_BASE 0x1FFF0E00UL /*!< Unique device ID register base address */ +#define CRC_BASE (AHBPERIPH_BASE + 0x00003000UL) + +/*!< IOPORT */ +#define GPIOA_BASE (IOPORT_BASE + 0x00000000UL) +#define GPIOB_BASE (IOPORT_BASE + 0x00000400UL) +#define GPIOC_BASE (IOPORT_BASE + 0x00000800UL) + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define I2C1 ((I2C_TypeDef *) I2C_BASE) +#define I2C ((I2C_TypeDef *) I2C_BASE) /* Kept for legacy purpose */ +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM_BASE) +#define LPTIM ((LPTIM_TypeDef *) LPTIM_BASE) /* Kept for legacy purpose */ +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC1_COMMON ((ADC_Common_TypeDef *) ADC_BASE) +#define ADC ((ADC_Common_TypeDef *) ADC_BASE) /* Kept for legacy purpose */ +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition +* @{ +*/ + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ +/******************** Bits definition for ADC_ISR register ******************/ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOSEQ_Pos (3U) +#define ADC_ISR_EOSEQ_Msk (0x1UL << ADC_ISR_EOSEQ_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOSEQ ADC_ISR_EOSEQ_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_AWD_Pos (7U) +#define ADC_ISR_AWD_Msk (0x1UL << ADC_ISR_AWD_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD ADC_ISR_AWD_Msk /*!< ADC analog watchdog 1 flag */ + +/******************** Bits definition for ADC_IER register ******************/ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSEQIE_Pos (3U) +#define ADC_IER_EOSEQIE_Msk (0x1UL << ADC_IER_EOSEQIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSEQIE ADC_IER_EOSEQIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_AWDIE_Pos (7U) +#define ADC_IER_AWDIE_Msk (0x1UL << ADC_IER_AWDIE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWDIE ADC_IER_AWDIE_Msk /*!< ADC analog watchdog 1 interrupt */ + +/******************** Bits definition for ADC_CR register *******************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_VREF_BUFFERE_Pos (5U) +#define ADC_CR_VREF_BUFFERE_Msk (0x1UL << ADC_CR_VREF_BUFFERE_Pos) /*!< 0x00000020 */ +#define ADC_CR_VREF_BUFFERE ADC_CR_VREF_BUFFERE_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_VERBUFF_SEL_Pos (6U) +#define ADC_CR_VERBUFF_SEL_Msk (0x3UL << ADC_CR_VERBUFF_SEL_Pos) /*!< 0x000000C0 */ +#define ADC_CR_VERBUFF_SEL ADC_CR_VERBUFF_SEL_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_VREF_BUFFERE_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************* Bits definition for ADC_CFGR1 register *****************/ +#define ADC_CFGR1_SCANDIR_Pos (2U) +#define ADC_CFGR1_SCANDIR_Msk (0x1UL << ADC_CFGR1_SCANDIR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR1_SCANDIR ADC_CFGR1_SCANDIR_Msk /*!< ADC group regular sequencer scan direction */ +#define ADC_CFGR1_RESSEL_Pos (3U) +#define ADC_CFGR1_RESSEL_Msk (0x3UL << ADC_CFGR1_RESSEL_Pos) /*!< 0x00000018 */ +#define ADC_CFGR1_RESSEL ADC_CFGR1_RESSEL_Msk /*!< ADC data resolution */ +#define ADC_CFGR1_RESSEL_0 (0x1UL << ADC_CFGR1_RESSEL_Pos) /*!< 0x00000008 */ +#define ADC_CFGR1_RESSEL_1 (0x2UL << ADC_CFGR1_RESSEL_Pos) /*!< 0x00000010 */ +#define ADC_CFGR1_ALIGN_Pos (5U) +#define ADC_CFGR1_ALIGN_Msk (0x1UL << ADC_CFGR1_ALIGN_Pos) /*!< 0x00000020 */ +#define ADC_CFGR1_ALIGN ADC_CFGR1_ALIGN_Msk /*!< ADC data alignement */ +#define ADC_CFGR1_EXTSEL_Pos (6U) +#define ADC_CFGR1_EXTSEL_Msk (0x7UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x000001C0 */ +#define ADC_CFGR1_EXTSEL ADC_CFGR1_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR1_EXTSEL_0 (0x1UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR1_EXTSEL_1 (0x2UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR1_EXTSEL_2 (0x4UL << ADC_CFGR1_EXTSEL_Pos) /*!< 0x00000100 */ +#define ADC_CFGR1_EXTEN_Pos (10U) +#define ADC_CFGR1_EXTEN_Msk (0x3UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR1_EXTEN ADC_CFGR1_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR1_EXTEN_0 (0x1UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR1_EXTEN_1 (0x2UL << ADC_CFGR1_EXTEN_Pos) /*!< 0x00000800 */ +#define ADC_CFGR1_OVRMOD_Pos (12U) +#define ADC_CFGR1_OVRMOD_Msk (0x1UL << ADC_CFGR1_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR1_OVRMOD ADC_CFGR1_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR1_CONT_Pos (13U) +#define ADC_CFGR1_CONT_Msk (0x1UL << ADC_CFGR1_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR1_CONT ADC_CFGR1_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR1_WAIT_Pos (14U) +#define ADC_CFGR1_WAIT_Msk (0x1UL << ADC_CFGR1_WAIT_Pos) /*!< 0x00004000 */ +#define ADC_CFGR1_WAIT ADC_CFGR1_WAIT_Msk /*!< ADC low power auto wait */ +#define ADC_CFGR1_DISCEN_Pos (16U) +#define ADC_CFGR1_DISCEN_Msk (0x1UL << ADC_CFGR1_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR1_DISCEN ADC_CFGR1_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ +#define ADC_CFGR1_AWDSGL_Pos (22U) +#define ADC_CFGR1_AWDSGL_Msk (0x1UL << ADC_CFGR1_AWDSGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR1_AWDSGL ADC_CFGR1_AWDSGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR1_AWDEN_Pos (23U) +#define ADC_CFGR1_AWDEN_Msk (0x1UL << ADC_CFGR1_AWDEN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR1_AWDEN ADC_CFGR1_AWDEN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ +#define ADC_CFGR1_AWDCH_Pos (26U) +#define ADC_CFGR1_AWDCH_Msk (0xFUL << ADC_CFGR1_AWDCH_Pos) /*!< 0x2C000000 */ +#define ADC_CFGR1_AWDCH ADC_CFGR1_AWDCH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR1_AWDCH_0 (0x01UL << ADC_CFGR1_AWDCH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR1_AWDCH_1 (0x02UL << ADC_CFGR1_AWDCH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR1_AWDCH_2 (0x04UL << ADC_CFGR1_AWDCH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR1_AWDCH_3 (0x08UL << ADC_CFGR1_AWDCH_Pos) /*!< 0x20000000 */ + +/******************* Bits definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_CKMODE_Pos (28U) +#define ADC_CFGR2_CKMODE_Msk (0xFUL << ADC_CFGR2_CKMODE_Pos) /*!< 0xC0000000 */ +#define ADC_CFGR2_CKMODE ADC_CFGR2_CKMODE_Msk /*!< ADC clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CFGR2_CKMODE_0 (0x1UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x10000000 */ +#define ADC_CFGR2_CKMODE_1 (0x2UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x20000000 */ +#define ADC_CFGR2_CKMODE_2 (0x4UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x40000000 */ +#define ADC_CFGR2_CKMODE_3 (0x8UL << ADC_CFGR2_CKMODE_Pos) /*!< 0x80000000 */ + +/****************** Bit definition for ADC_SMPR register ********************/ +#define ADC_SMPR_SMP_Pos (0U) +#define ADC_SMPR_SMP_Msk (0x7UL << ADC_SMPR_SMP_Pos) /*!< 0x00000007 */ +#define ADC_SMPR_SMP ADC_SMPR_SMP_Msk /*!< ADC group of channels sampling time 2 */ +#define ADC_SMPR_SMP_0 (0x1UL << ADC_SMPR_SMP_Pos) /*!< 0x00000001 */ +#define ADC_SMPR_SMP_1 (0x2UL << ADC_SMPR_SMP_Pos) /*!< 0x00000002 */ +#define ADC_SMPR_SMP_2 (0x4UL << ADC_SMPR_SMP_Pos) /*!< 0x00000004 */ + +/******************* Bit definition for ADC_TR register ********************/ +#define ADC_TR_LT_Pos (0U) +#define ADC_TR_LT_Msk (0xFFFUL << ADC_TR_LT_Pos) /*!< 0x00000FFF */ +#define ADC_TR_LT ADC_TR_LT_Msk /*!< ADC analog watchdog 1 threshold low */ +#define ADC_TR_LT_0 (0x001UL << ADC_TR_LT_Pos) /*!< 0x00000001 */ +#define ADC_TR_LT_1 (0x002UL << ADC_TR_LT_Pos) /*!< 0x00000002 */ +#define ADC_TR_LT_2 (0x004UL << ADC_TR_LT_Pos) /*!< 0x00000004 */ +#define ADC_TR_LT_3 (0x008UL << ADC_TR_LT_Pos) /*!< 0x00000008 */ +#define ADC_TR_LT_4 (0x010UL << ADC_TR_LT_Pos) /*!< 0x00000010 */ +#define ADC_TR_LT_5 (0x020UL << ADC_TR_LT_Pos) /*!< 0x00000020 */ +#define ADC_TR_LT_6 (0x040UL << ADC_TR_LT_Pos) /*!< 0x00000040 */ +#define ADC_TR_LT_7 (0x080UL << ADC_TR_LT_Pos) /*!< 0x00000080 */ +#define ADC_TR_LT_8 (0x100UL << ADC_TR_LT_Pos) /*!< 0x00000100 */ +#define ADC_TR_LT_9 (0x200UL << ADC_TR_LT_Pos) /*!< 0x00000200 */ +#define ADC_TR_LT_10 (0x400UL << ADC_TR_LT_Pos) /*!< 0x00000400 */ +#define ADC_TR_LT_11 (0x800UL << ADC_TR_LT_Pos) /*!< 0x00000800 */ +#define ADC_TR_HT_Pos (16U) +#define ADC_TR_HT_Msk (0xFFFUL << ADC_TR_HT_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR_HT ADC_TR_HT_Msk /*!< ADC Analog watchdog 1 threshold high */ +#define ADC_TR_HT_0 (0x001UL << ADC_TR_HT_Pos) /*!< 0x00010000 */ +#define ADC_TR_HT_1 (0x002UL << ADC_TR_HT_Pos) /*!< 0x00020000 */ +#define ADC_TR_HT_2 (0x004UL << ADC_TR_HT_Pos) /*!< 0x00040000 */ +#define ADC_TR_HT_3 (0x008UL << ADC_TR_HT_Pos) /*!< 0x00080000 */ +#define ADC_TR_HT_4 (0x010UL << ADC_TR_HT_Pos) /*!< 0x00100000 */ +#define ADC_TR_HT_5 (0x020UL << ADC_TR_HT_Pos) /*!< 0x00200000 */ +#define ADC_TR_HT_6 (0x040UL << ADC_TR_HT_Pos) /*!< 0x00400000 */ +#define ADC_TR_HT_7 (0x080UL << ADC_TR_HT_Pos) /*!< 0x00800000 */ +#define ADC_TR_HT_8 (0x100UL << ADC_TR_HT_Pos) /*!< 0x01000000 */ +#define ADC_TR_HT_9 (0x200UL << ADC_TR_HT_Pos) /*!< 0x02000000 */ +#define ADC_TR_HT_10 (0x400UL << ADC_TR_HT_Pos) /*!< 0x04000000 */ +#define ADC_TR_HT_11 (0x800UL << ADC_TR_HT_Pos) /*!< 0x08000000 */ + +/****************** Bit definition for ADC_CHSELR register ******************/ +#define ADC_CHSELR_CHSEL_Pos (0U) +#define ADC_CHSELR_CHSEL_Msk (0x1BFFUL << ADC_CHSELR_CHSEL_Pos) /*!< 0x00001BFF */ +#define ADC_CHSELR_CHSEL ADC_CHSELR_CHSEL_Msk /*!< ADC group regular sequencer channels, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL12_Pos (12U) +#define ADC_CHSELR_CHSEL12_Msk (0x1UL << ADC_CHSELR_CHSEL12_Pos) /*!< 0x00001000 */ +#define ADC_CHSELR_CHSEL12 ADC_CHSELR_CHSEL12_Msk /*!< ADC group regular sequencer channel 12, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL11_Pos (11U) +#define ADC_CHSELR_CHSEL11_Msk (0x1UL << ADC_CHSELR_CHSEL11_Pos) /*!< 0x00000800 */ +#define ADC_CHSELR_CHSEL11 ADC_CHSELR_CHSEL11_Msk /*!< ADC group regular sequencer channel 11, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL9_Pos (9U) +#define ADC_CHSELR_CHSEL9_Msk (0x1UL << ADC_CHSELR_CHSEL9_Pos) /*!< 0x00000200 */ +#define ADC_CHSELR_CHSEL9 ADC_CHSELR_CHSEL9_Msk /*!< ADC group regular sequencer channel 9, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL8_Pos (8U) +#define ADC_CHSELR_CHSEL8_Msk (0x1UL << ADC_CHSELR_CHSEL8_Pos) /*!< 0x00000100 */ +#define ADC_CHSELR_CHSEL8 ADC_CHSELR_CHSEL8_Msk /*!< ADC group regular sequencer channel 8, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL7_Pos (7U) +#define ADC_CHSELR_CHSEL7_Msk (0x1UL << ADC_CHSELR_CHSEL7_Pos) /*!< 0x00000080 */ +#define ADC_CHSELR_CHSEL7 ADC_CHSELR_CHSEL7_Msk /*!< ADC group regular sequencer channel 7, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL6_Pos (6U) +#define ADC_CHSELR_CHSEL6_Msk (0x1UL << ADC_CHSELR_CHSEL6_Pos) /*!< 0x00000040 */ +#define ADC_CHSELR_CHSEL6 ADC_CHSELR_CHSEL6_Msk /*!< ADC group regular sequencer channel 6, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL5_Pos (5U) +#define ADC_CHSELR_CHSEL5_Msk (0x1UL << ADC_CHSELR_CHSEL5_Pos) /*!< 0x00000020 */ +#define ADC_CHSELR_CHSEL5 ADC_CHSELR_CHSEL5_Msk /*!< ADC group regular sequencer channel 5, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL4_Pos (4U) +#define ADC_CHSELR_CHSEL4_Msk (0x1UL << ADC_CHSELR_CHSEL4_Pos) /*!< 0x00000010 */ +#define ADC_CHSELR_CHSEL4 ADC_CHSELR_CHSEL4_Msk /*!< ADC group regular sequencer channel 4, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL3_Pos (3U) +#define ADC_CHSELR_CHSEL3_Msk (0x1UL << ADC_CHSELR_CHSEL3_Pos) /*!< 0x00000008 */ +#define ADC_CHSELR_CHSEL3 ADC_CHSELR_CHSEL3_Msk /*!< ADC group regular sequencer channel 3, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL2_Pos (2U) +#define ADC_CHSELR_CHSEL2_Msk (0x1UL << ADC_CHSELR_CHSEL2_Pos) /*!< 0x00000004 */ +#define ADC_CHSELR_CHSEL2 ADC_CHSELR_CHSEL2_Msk /*!< ADC group regular sequencer channel 2, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL1_Pos (1U) +#define ADC_CHSELR_CHSEL1_Msk (0x1UL << ADC_CHSELR_CHSEL1_Pos) /*!< 0x00000002 */ +#define ADC_CHSELR_CHSEL1 ADC_CHSELR_CHSEL1_Msk /*!< ADC group regular sequencer channel 1, available when ADC_CFGR1_CHSELRMOD is reset */ +#define ADC_CHSELR_CHSEL0_Pos (0U) +#define ADC_CHSELR_CHSEL0_Msk (0x1UL << ADC_CHSELR_CHSEL0_Pos) /*!< 0x00000001 */ +#define ADC_CHSELR_CHSEL0 ADC_CHSELR_CHSEL0_Msk /*!< ADC group regular sequencer channel 0, available when ADC_CFGR1_CHSELRMOD is reset */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA_Pos (0U) +#define ADC_DR_DATA_Msk (0xFFFFUL << ADC_DR_DATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_DATA ADC_DR_DATA_Msk /*!< ADC group regular conversion data */ +#define ADC_DR_DATA_0 (0x0001UL << ADC_DR_DATA_Pos) /*!< 0x00000001 */ +#define ADC_DR_DATA_1 (0x0002UL << ADC_DR_DATA_Pos) /*!< 0x00000002 */ +#define ADC_DR_DATA_2 (0x0004UL << ADC_DR_DATA_Pos) /*!< 0x00000004 */ +#define ADC_DR_DATA_3 (0x0008UL << ADC_DR_DATA_Pos) /*!< 0x00000008 */ +#define ADC_DR_DATA_4 (0x0010UL << ADC_DR_DATA_Pos) /*!< 0x00000010 */ +#define ADC_DR_DATA_5 (0x0020UL << ADC_DR_DATA_Pos) /*!< 0x00000020 */ +#define ADC_DR_DATA_6 (0x0040UL << ADC_DR_DATA_Pos) /*!< 0x00000040 */ +#define ADC_DR_DATA_7 (0x0080UL << ADC_DR_DATA_Pos) /*!< 0x00000080 */ +#define ADC_DR_DATA_8 (0x0100UL << ADC_DR_DATA_Pos) /*!< 0x00000100 */ +#define ADC_DR_DATA_9 (0x0200UL << ADC_DR_DATA_Pos) /*!< 0x00000200 */ +#define ADC_DR_DATA_10 (0x0400UL << ADC_DR_DATA_Pos) /*!< 0x00000400 */ +#define ADC_DR_DATA_11 (0x0800UL << ADC_DR_DATA_Pos) /*!< 0x00000800 */ +#define ADC_DR_DATA_12 (0x1000UL << ADC_DR_DATA_Pos) /*!< 0x00001000 */ +#define ADC_DR_DATA_13 (0x2000UL << ADC_DR_DATA_Pos) /*!< 0x00002000 */ +#define ADC_DR_DATA_14 (0x4000UL << ADC_DR_DATA_Pos) /*!< 0x00004000 */ +#define ADC_DR_DATA_15 (0x8000UL << ADC_DR_DATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_CCSR register ********************/ +#define ADC_CCSR_CALSEL_Pos (11U) +#define ADC_CCSR_CALSEL_Msk (0x1UL << ADC_CCSR_CALSEL_Pos) /*!< 0x00000800 */ +#define ADC_CCSR_CALSEL ADC_CCSR_CALSEL_Msk /*!< ADC calibration context selection */ +#define ADC_CCSR_CALSMP_Pos (12U) +#define ADC_CCSR_CALSMP_Msk (0x3UL << ADC_CCSR_CALSMP_Pos) /*!< 0x00003000 */ +#define ADC_CCSR_CALSMP ADC_CCSR_CALSMP_Msk /*!< ADC calibration sample time selection */ +#define ADC_CCSR_CALSMP_0 (0x1UL << ADC_CCSR_CALSMP_Pos) /*!< 0x00001000 */ +#define ADC_CCSR_CALSMP_1 (0x2UL << ADC_CCSR_CALSMP_Pos) /*!< 0x00002000 */ +#define ADC_CCSR_CALBYP_Pos (14U) +#define ADC_CCSR_CALBYP_Msk (0x1UL << ADC_CCSR_CALBYP_Pos) /*!< 0x00004000 */ +#define ADC_CCSR_CALBYP ADC_CCSR_CALBYP_Msk +#define ADC_CCSR_CALSET_Pos (15U) +#define ADC_CCSR_CALSET_Msk (0x1UL << ADC_CCSR_CALSET_Pos) /*!< 0x00008000 */ +#define ADC_CCSR_CALSET ADC_CCSR_CALSET_Msk +#define ADC_CCSR_OFFSUC_Pos (29U) +#define ADC_CCSR_OFFSUC_Msk (0x1UL << ADC_CCSR_OFFSUC_Pos) /*!< 0x20000000 */ +#define ADC_CCSR_OFFSUC ADC_CCSR_OFFSUC_Msk +#define ADC_CCSR_CALFAIL_Pos (30U) +#define ADC_CCSR_CALFAIL_Msk (0x1UL << ADC_CCSR_CALFAIL_Pos) /*!< 0x40000000 */ +#define ADC_CCSR_CALFAIL ADC_CCSR_CALFAIL_Msk /*!< ADC calibration fail flag */ +#define ADC_CCSR_CALON_Pos (31U) +#define ADC_CCSR_CALON_Msk (0x1UL << ADC_CCSR_CALON_Pos) /*!< 0x80000000 */ +#define ADC_CCSR_CALON ADC_CCSR_CALON_Msk /*!< ADC calibration flag */ + +/************************* ADC Common registers *****************************/ +/******************* Bit definition for ADC_CCR register ********************/ +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_TSEN_Pos (23U) +#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */ +#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */ + + +/******************************************************************************/ +/* */ +/* CRC calculation unit (CRC) */ +/* */ +/******************************************************************************/ +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 8-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ + +/******************************************************************************/ +/* */ +/* Debug MCU (DBGMCU) */ +/* */ +/******************************************************************************/ +/******************** Bit definition for DBG_IDCODE register *************/ +// #define DBGMCU_IDCODE_DEV_ID_Pos (0U) +// #define DBGMCU_IDCODE_DEV_ID_Msk (0xFFFUL << DBGMCU_IDCODE_DEV_ID_Pos) /*!< 0x00000FFF */ +// #define DBGMCU_IDCODE_DEV_ID DBGMCU_IDCODE_DEV_ID_Msk +#define DBGMCU_IDCODE_REV_ID_Pos (0U) +#define DBGMCU_IDCODE_REV_ID_Msk (0xFFFFFFFFUL << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0xFFFFFFFF */ +#define DBGMCU_IDCODE_REV_ID DBGMCU_IDCODE_REV_ID_Msk + +/******************** Bit definition for DBGMCU_CR register *****************/ +#define DBGMCU_CR_DBG_STOP_Pos (1U) +#define DBGMCU_CR_DBG_STOP_Msk (0x1UL << DBGMCU_CR_DBG_STOP_Pos) /*!< 0x00000002 */ +#define DBGMCU_CR_DBG_STOP DBGMCU_CR_DBG_STOP_Msk + +/******************** Bit definition for DBGMCU_APB_FZ1 register ***********/ +#define DBGMCU_APB_FZ1_DBG_TIM6_STOP_Pos (4U) +#define DBGMCU_APB_FZ1_DBG_TIM6_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_TIM6_STOP_Pos) /*!< 0x00000010 */ +#define DBGMCU_APB_FZ1_DBG_TIM6_STOP DBGMCU_APB_FZ1_DBG_TIM6_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_IWDG_STOP_Pos (12U) +#define DBGMCU_APB_FZ1_DBG_IWDG_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_IWDG_STOP_Pos) /*!< 0x00001000 */ +#define DBGMCU_APB_FZ1_DBG_IWDG_STOP DBGMCU_APB_FZ1_DBG_IWDG_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_I2C1_TIMEOUT_Pos (21U) +#define DBGMCU_APB_FZ1_DBG_I2C1_TIMEOUT_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_I2C1_TIMEOUT_Pos) /*!< 0x00200000 */ +#define DBGMCU_APB_FZ1_DBG_I2C1_TIMEOUT DBGMCU_APB_FZ1_DBG_I2C1_TIMEOUT_Msk +#define DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Pos (31U) +#define DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Pos) /*!< 0x80000000 */ +#define DBGMCU_APB_FZ1_DBG_LPTIM_STOP DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Msk + +/******************** Bit definition for DBGMCU_APB_FZ2 register ************/ +#define DBGMCU_APB_FZ2_DBG_TIM1_STOP_Pos (11U) +#define DBGMCU_APB_FZ2_DBG_TIM1_STOP_Msk (0x1UL << DBGMCU_APB_FZ2_DBG_TIM1_STOP_Pos) /*!< 0x00000800 */ +#define DBGMCU_APB_FZ2_DBG_TIM1_STOP DBGMCU_APB_FZ2_DBG_TIM1_STOP_Msk + +/******************************************************************************/ +/* */ +/* External Interrupt/Event Controller (EXTI) */ +/* */ +/******************************************************************************/ +/****************** Bit definition for EXTI_RTSR register ******************/ +#define EXTI_RTSR_RT0_Pos (0U) +#define EXTI_RTSR_RT0_Msk (0x1UL << EXTI_RTSR_RT0_Pos) /*!< 0x00000001 */ +#define EXTI_RTSR_RT0 EXTI_RTSR_RT0_Msk /*!< Rising trigger configuration for input line 0 */ +#define EXTI_RTSR_RT1_Pos (1U) +#define EXTI_RTSR_RT1_Msk (0x1UL << EXTI_RTSR_RT1_Pos) /*!< 0x00000002 */ +#define EXTI_RTSR_RT1 EXTI_RTSR_RT1_Msk /*!< Rising trigger configuration for input line 1 */ +#define EXTI_RTSR_RT2_Pos (2U) +#define EXTI_RTSR_RT2_Msk (0x1UL << EXTI_RTSR_RT2_Pos) /*!< 0x00000004 */ +#define EXTI_RTSR_RT2 EXTI_RTSR_RT2_Msk /*!< Rising trigger configuration for input line 2 */ +#define EXTI_RTSR_RT3_Pos (3U) +#define EXTI_RTSR_RT3_Msk (0x1UL << EXTI_RTSR_RT3_Pos) /*!< 0x00000008 */ +#define EXTI_RTSR_RT3 EXTI_RTSR_RT3_Msk /*!< Rising trigger configuration for input line 3 */ +#define EXTI_RTSR_RT4_Pos (4U) +#define EXTI_RTSR_RT4_Msk (0x1UL << EXTI_RTSR_RT4_Pos) /*!< 0x00000010 */ +#define EXTI_RTSR_RT4 EXTI_RTSR_RT4_Msk /*!< Rising trigger configuration for input line 4 */ +#define EXTI_RTSR_RT5_Pos (5U) +#define EXTI_RTSR_RT5_Msk (0x1UL << EXTI_RTSR_RT5_Pos) /*!< 0x00000020 */ +#define EXTI_RTSR_RT5 EXTI_RTSR_RT5_Msk /*!< Rising trigger configuration for input line 5 */ +#define EXTI_RTSR_RT6_Pos (6U) +#define EXTI_RTSR_RT6_Msk (0x1UL << EXTI_RTSR_RT6_Pos) /*!< 0x00000040 */ +#define EXTI_RTSR_RT6 EXTI_RTSR_RT6_Msk /*!< Rising trigger configuration for input line 6 */ +#define EXTI_RTSR_RT7_Pos (7U) +#define EXTI_RTSR_RT7_Msk (0x1UL << EXTI_RTSR_RT7_Pos) /*!< 0x00000080 */ +#define EXTI_RTSR_RT7 EXTI_RTSR_RT7_Msk /*!< Rising trigger configuration for input line 7 */ + +/****************** Bit definition for EXTI_FTSR register ******************/ +#define EXTI_FTSR_FT0_Pos (0U) +#define EXTI_FTSR_FT0_Msk (0x1UL << EXTI_FTSR_FT0_Pos) /*!< 0x00000001 */ +#define EXTI_FTSR_FT0 EXTI_FTSR_FT0_Msk /*!< Falling trigger configuration for input line 0 */ +#define EXTI_FTSR_FT1_Pos (1U) +#define EXTI_FTSR_FT1_Msk (0x1UL << EXTI_FTSR_FT1_Pos) /*!< 0x00000002 */ +#define EXTI_FTSR_FT1 EXTI_FTSR_FT1_Msk /*!< Falling trigger configuration for input line 1 */ +#define EXTI_FTSR_FT2_Pos (2U) +#define EXTI_FTSR_FT2_Msk (0x1UL << EXTI_FTSR_FT2_Pos) /*!< 0x00000004 */ +#define EXTI_FTSR_FT2 EXTI_FTSR_FT2_Msk /*!< Falling trigger configuration for input line 2 */ +#define EXTI_FTSR_FT3_Pos (3U) +#define EXTI_FTSR_FT3_Msk (0x1UL << EXTI_FTSR_FT3_Pos) /*!< 0x00000008 */ +#define EXTI_FTSR_FT3 EXTI_FTSR_FT3_Msk /*!< Falling trigger configuration for input line 3 */ +#define EXTI_FTSR_FT4_Pos (4U) +#define EXTI_FTSR_FT4_Msk (0x1UL << EXTI_FTSR_FT4_Pos) /*!< 0x00000010 */ +#define EXTI_FTSR_FT4 EXTI_FTSR_FT4_Msk /*!< Falling trigger configuration for input line 4 */ +#define EXTI_FTSR_FT5_Pos (5U) +#define EXTI_FTSR_FT5_Msk (0x1UL << EXTI_FTSR_FT5_Pos) /*!< 0x00000020 */ +#define EXTI_FTSR_FT5 EXTI_FTSR_FT5_Msk /*!< Falling trigger configuration for input line 5 */ +#define EXTI_FTSR_FT6_Pos (6U) +#define EXTI_FTSR_FT6_Msk (0x1UL << EXTI_FTSR_FT6_Pos) /*!< 0x00000040 */ +#define EXTI_FTSR_FT6 EXTI_FTSR_FT6_Msk /*!< Falling trigger configuration for input line 6 */ +#define EXTI_FTSR_FT7_Pos (7U) +#define EXTI_FTSR_FT7_Msk (0x1UL << EXTI_FTSR_FT7_Pos) /*!< 0x00000080 */ +#define EXTI_FTSR_FT7 EXTI_FTSR_FT7_Msk /*!< Falling trigger configuration for input line 7 */ + +/****************** Bit definition for EXTI_SWIER register *****************/ +#define EXTI_SWIER_SWI0_Pos (0U) +#define EXTI_SWIER_SWI0_Msk (0x1UL << EXTI_SWIER_SWI0_Pos) /*!< 0x00000001 */ +#define EXTI_SWIER_SWI0 EXTI_SWIER_SWI0_Msk /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER_SWI1_Pos (1U) +#define EXTI_SWIER_SWI1_Msk (0x1UL << EXTI_SWIER_SWI1_Pos) /*!< 0x00000002 */ +#define EXTI_SWIER_SWI1 EXTI_SWIER_SWI1_Msk /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER_SWI2_Pos (2U) +#define EXTI_SWIER_SWI2_Msk (0x1UL << EXTI_SWIER_SWI2_Pos) /*!< 0x00000004 */ +#define EXTI_SWIER_SWI2 EXTI_SWIER_SWI2_Msk /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER_SWI3_Pos (3U) +#define EXTI_SWIER_SWI3_Msk (0x1UL << EXTI_SWIER_SWI3_Pos) /*!< 0x00000008 */ +#define EXTI_SWIER_SWI3 EXTI_SWIER_SWI3_Msk /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER_SWI4_Pos (4U) +#define EXTI_SWIER_SWI4_Msk (0x1UL << EXTI_SWIER_SWI4_Pos) /*!< 0x00000010 */ +#define EXTI_SWIER_SWI4 EXTI_SWIER_SWI4_Msk /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER_SWI5_Pos (5U) +#define EXTI_SWIER_SWI5_Msk (0x1UL << EXTI_SWIER_SWI5_Pos) /*!< 0x00000020 */ +#define EXTI_SWIER_SWI5 EXTI_SWIER_SWI5_Msk /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER_SWI6_Pos (6U) +#define EXTI_SWIER_SWI6_Msk (0x1UL << EXTI_SWIER_SWI6_Pos) /*!< 0x00000040 */ +#define EXTI_SWIER_SWI6 EXTI_SWIER_SWI6_Msk /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER_SWI7_Pos (7U) +#define EXTI_SWIER_SWI7_Msk (0x1UL << EXTI_SWIER_SWI7_Pos) /*!< 0x00000080 */ +#define EXTI_SWIER_SWI7 EXTI_SWIER_SWI7_Msk /*!< Software Interrupt on line 7 */ + +/******************* Bit definition for EXTI_PR register ******************/ +#define EXTI_PR_PR0_Pos (0U) +#define EXTI_PR_PR0_Msk (0x1UL << EXTI_PR_PR0_Pos) /*!< 0x00000001 */ +#define EXTI_PR_PR0 EXTI_PR_PR0_Msk /*!< Rising Pending Interrupt Flag on line 0 */ +#define EXTI_PR_PR1_Pos (1U) +#define EXTI_PR_PR1_Msk (0x1UL << EXTI_PR_PR1_Pos) /*!< 0x00000002 */ +#define EXTI_PR_PR1 EXTI_PR_PR1_Msk /*!< Rising Pending Interrupt Flag on line 1 */ +#define EXTI_PR_PR2_Pos (2U) +#define EXTI_PR_PR2_Msk (0x1UL << EXTI_PR_PR2_Pos) /*!< 0x00000004 */ +#define EXTI_PR_PR2 EXTI_PR_PR2_Msk /*!< Rising Pending Interrupt Flag on line 2 */ +#define EXTI_PR_PR3_Pos (3U) +#define EXTI_PR_PR3_Msk (0x1UL << EXTI_PR_PR3_Pos) /*!< 0x00000008 */ +#define EXTI_PR_PR3 EXTI_PR_PR3_Msk /*!< Rising Pending Interrupt Flag on line 3 */ +#define EXTI_PR_PR_Pos (4U) +#define EXTI_PR_PR_Msk (0x1UL <
© Copyright (c) Puya Semiconductor Co. + * All rights reserved.
+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup py32f072xb + * @{ + */ + +#ifndef __PY32F072XB_H +#define __PY32F072XB_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M0+ Processor and Core Peripherals + */ +#define __CM0PLUS_REV 0 /*!< Core Revision r0p0 */ +#define __MPU_PRESENT 0 /*!< PY32F0xx do not provide MPU */ +#define __VTOR_PRESENT 1 /*!< Vector Table Register supported */ +#define __NVIC_PRIO_BITS 2 /*!< PY32F0xx uses 2 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief PY32F0xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ + +/*!< Interrupt Number Definition */ +typedef enum +{ + /****** Cortex-M0+ Processor Exceptions Numbers ***************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M Hard Fault Interrupt */ + SVC_IRQn = -5, /*!< 11 Cortex-M SV Call Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M System Tick Interrupt */ + /****** PY32F0 specific Interrupt Numbers *********************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt(EXTI line 16) */ + RTC_IRQn = 2, /*!< RTC interrupt through the EXTI line 19 */ + FLASH_IRQn = 3, /*!< FLASH global Interrupt */ + RCC_CTC_IRQn = 4, /*!< RCC and CTC global Interrupts */ + EXTI0_1_IRQn = 5, /*!< EXTI 0 and 1 Interrupts */ + EXTI2_3_IRQn = 6, /*!< EXTI Line 2 and 3 Interrupts */ + EXTI4_15_IRQn = 7, /*!< EXTI Line 4 to 15 Interrupts */ + LCD_IRQn = 8, /*!< LCD global Interrupt */ + DMA1_Channel1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */ + DMA1_Channel2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupts */ + DMA1_Channel4_5_6_7_IRQn = 11, /*!< DMA1 Channel 4, 5, 6, 7 Interrupts */ + ADC_COMP_IRQn = 12, /*!< ADC&COMP Interrupts */ + TIM1_BRK_UP_TRG_COM_IRQn = 13, /*!< TIM1 Break, Update, Trigger and Commutation Interrupts */ + TIM1_CC_IRQn = 14, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 15, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 16, /*!< TIM3 global Interrupt */ + TIM6_LPTIM1_DAC_IRQn = 17, /*!< TIM6, LPTIM1, DAC global Interrupts */ + TIM7_IRQn = 18, /*!< TIM7 global Interrupt */ + TIM14_IRQn = 19, /*!< TIM14 global Interrupt */ + TIM15_IRQn = 20, /*!< TIM15 global Interrupt */ + TIM16_IRQn = 21, /*!< TIM16 global Interrupt */ + TIM17_IRQn = 22, /*!< TIM17 global Interrupt */ + I2C1_IRQn = 23, /*!< I2C1 global Interrupt */ + I2C2_IRQn = 24, /*!< I2C2 global Interrupt */ + SPI1_IRQn = 25, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 26, /*!< SPI2 global Interrupt */ + USART1_IRQn = 27, /*!< USART1 global Interrupt */ + USART2_IRQn = 28, /*!< USART2 global Interrupt */ + USART3_4_IRQn = 29, /*!< USART3, 4 global Interrupts */ + CAN_IRQn = 30, /*!< CAN global Interrupt */ + USB_IRQn = 31, /*!< USB global Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm0plus.h" /* Cortex-M0+ processor and core peripherals */ +#include "system_py32f0xx.h" /* PY32F0xx System Header */ +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** +* @brief ADC Registers +*/ +typedef struct +{ + __IO uint32_t SR; /*!< ADC desc SR, Address offset: 0x00 */ + __IO uint32_t CR1; /*!< ADC desc CR1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< ADC desc CR2, Address offset: 0x08 */ + __IO uint32_t SMPR1; /*!< ADC desc SMPR1, Address offset: 0x0C */ + __IO uint32_t SMPR2; /*!< ADC desc SMPR2, Address offset: 0x10 */ + __IO uint32_t SMPR3; /*!< ADC desc SMPR3, Address offset: 0x14 */ + __IO uint32_t JOFR1; /*!< ADC desc JOFR1, Address offset: 0x18 */ + __IO uint32_t JOFR2; /*!< ADC desc JOFR2, Address offset: 0x1C */ + __IO uint32_t JOFR3; /*!< ADC desc JOFR3, Address offset: 0x20 */ + __IO uint32_t JOFR4; /*!< ADC desc JOFR4, Address offset: 0x24 */ + __IO uint32_t HTR; /*!< ADC desc HTR, Address offset: 0x28 */ + __IO uint32_t LTR; /*!< ADC desc LTR, Address offset: 0x2C */ + __IO uint32_t SQR1; /*!< ADC desc SQR1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC desc SQR2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC desc SQR3, Address offset: 0x38 */ + __IO uint32_t JSQR; /*!< ADC desc JSQR, Address offset: 0x3C */ + __IO uint32_t JDR1; /*!< ADC desc JDR1, Address offset: 0x40 */ + __IO uint32_t JDR2; /*!< ADC desc JDR2, Address offset: 0x44 */ + __IO uint32_t JDR3; /*!< ADC desc JDR3, Address offset: 0x48 */ + __IO uint32_t JDR4; /*!< ADC desc JDR4, Address offset: 0x4C */ + __IO uint32_t DR; /*!< ADC desc DR, Address offset: 0x50 */ + __IO uint32_t CCSR; /*!< ADC desc CCSR, Address offset: 0x54 */ + __IO uint32_t CALRR1; /*!< ADC desc CALRR1, Address offset: 0x58 */ + __IO uint32_t CALRR2; /*!< ADC desc CALRR2, Address offset: 0x5C */ + __IO uint32_t CALFIR1; /*!< ADC desc CALFIR1, Address offset: 0x60 */ + __IO uint32_t CALFIR2; /*!< ADC desc CALFIR2, Address offset: 0x64 */ +} ADC_TypeDef; + +/** +* @brief CAN LLC Acceptance filters Registers +*/ +typedef struct +{ + __IO uint32_t ID; + __IO uint32_t FORMAT; + __IO uint32_t TYPE; + __IO uint32_t AF; +} CAN_LLC_AC_TypeDef; + +/** +* @brief CAN LLC Acceptance filters Registers +*/ +typedef struct +{ + __IO uint32_t ID; + __IO uint32_t FORMAT; + __IO uint32_t TYPE; + __IO uint32_t AF; + __IO uint32_t RTSL; + __IO uint32_t RTSH; + __IO uint32_t TTCAN; + __IO uint32_t DATA[2]; +} CAN_LLC_TypeDef; + +/** +* @brief CAN Registers +*/ +typedef struct +{ + __IO uint32_t TSNCR; /*!< CAN desc TSNCR, Address offset: 0x00 */ + __IO uint32_t ACBTR; /*!< CAN desc ACBTR, Address offset: 0x04 */ + __IO uint32_t FDBTR; /*!< CAN desc FDBTR, Address offset: 0x08 */ + __IO uint32_t XLBTR; /*!< CAN desc XLBTR, Address offset: 0x0C */ + __IO uint32_t RLSSP; /*!< CAN desc RLSSP, Address offset: 0x10 */ + __IO uint32_t IFR; /*!< CAN desc IFR, Address offset: 0x14 */ + __IO uint32_t IER; /*!< CAN desc IER, Address offset: 0x18 */ + __IO uint32_t TSR; /*!< CAN desc TSR, Address offset: 0x1C */ + __IO uint32_t TTSL; /*!< CAN desc TTSL, Address offset: 0x20 */ + __IO uint32_t TTSH; /*!< CAN desc TTSH, Address offset: 0x24 */ + __IO uint32_t MCR; /*!< CAN desc MCR, Address offset: 0x28 */ + __IO uint32_t WECR; /*!< CAN desc WECR, Address offset: 0x2C */ + __IO uint32_t REFMSG; /*!< CAN desc REFMSG, Address offset: 0x30 */ + __IO uint32_t TTCR; /*!< CAN desc TTCR, Address offset: 0x34 */ + __IO uint32_t TTTR; /*!< CAN desc TTTR, Address offset: 0x38 */ + __IO uint32_t SCMS; /*!< CAN desc SCMS, Address offset: 0x3C */ + __IO uint32_t MESR; /*!< CAN desc MESR, Address offset: 0x40 */ + __IO uint32_t ACFCR; /*!< CAN desc ACFCR, Address offset: 0x44 */ + CAN_LLC_AC_TypeDef ACFC; /*!< CAN desc ACFC, Address offset: 0x48 - 0x57 */ + CAN_LLC_AC_TypeDef ACFM; /*!< CAN desc ACFM, Address offset: 0x58 - 0x67 */ + uint8_t RESERVED18[8]; /*!< Reserved, Address offset: 0x68 - 0x6F */ + CAN_LLC_TypeDef RBUF; /*!< CAN desc RBUF, Address offset: 0x70 - 0x93 */ + CAN_LLC_TypeDef TBUF; /*!< CAN desc TBUF, Address offset: 0x94 - 0xB7 */ + __IO uint32_t PWMCR; /*!< CAN desc PWMCR, Address offset: 0xB8 */ +} CAN_TypeDef; + +/** + * @brief CRC calculation unit + */ +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ +} CRC_TypeDef; + +/** + * @brief Comparator + */ +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ + __IO uint32_t FR; /*!< COMP filter register, Address offset: 0x04 */ +} COMP_TypeDef; + +typedef struct +{ + __IO uint32_t CSR_ODD; /*!< COMP control and status register located in register of comparator instance odd, used for bits common to several COMP instances, Address offset: 0x00 */ + __IO uint32_t FR_ODD; + __IO uint32_t CSR_EVEN; /*!< COMP control and status register located in register of comparator instance even, used for bits common to several COMP instances, Address offset: 0x04 */ + __IO uint32_t FR_EVEN; +} COMP_Common_TypeDef; + +/** +* @brief CTC Registers +*/ +typedef struct +{ + __IO uint32_t CTL0; /*!< CTC desc CTL0, Address offset: 0x00 */ + __IO uint32_t CTL1; /*!< CTC desc CTL1, Address offset: 0x04 */ + __IO uint32_t SR; /*!< CTC desc SR, Address offset: 0x08 */ + __IO uint32_t INTC; /*!< CTC desc INTC, Address offset: 0x0C */ +} CTC_TypeDef; + +/** +* @brief DAC Registers +*/ +typedef struct +{ + __IO uint32_t CR; /*!< DAC desc CR, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC desc SWTRIGR, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC desc DHR12R1, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC desc DHR12L1, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC desc DHR8R1, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC desc DHR12R2, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC desc DHR12L2, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC desc DHR8R2, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< DAC desc DHR12RD, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DAC desc DHR12LD, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DAC desc DHR8RD, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC desc DOR1, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC desc DOR2, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC desc SR, Address offset: 0x34 */ +} DAC_TypeDef; + +/** + * @brief Debug MCU + */ +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug configuration register, Address offset: 0x04 */ + __IO uint32_t APBFZ1; /*!< Debug APB freeze register 1, Address offset: 0x08 */ + __IO uint32_t APBFZ2; /*!< Debug APB freeze register 2, Address offset: 0x0C */ +} DBGMCU_TypeDef; + +/** +* @brief HDIV Registers +*/ +typedef struct +{ + __IO uint32_t DEND; /*!< HDIV desc DEND, Address offset: 0x00 */ + __IO uint32_t SOR; /*!< HDIV desc SOR, Address offset: 0x04 */ + __IO uint32_t QUOT; /*!< HDIV desc REMA, Address offset: 0x08 */ + __IO uint32_t REMA; /*!< HDIV desc QUOT, Address offset: 0x0C */ + __IO uint32_t SIGN; /*!< HDIV desc SIGN, Address offset: 0x10 */ + __IO uint32_t STAT; /*!< HDIV desc STAT, Address offset: 0x1C */ +} DIV_TypeDef; + +/** + * @brief DMA Controller + */ +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +/** + * @brief Asynch Interrupt/Event Controller (EXTI) + */ +typedef struct +{ + __IO uint32_t RTSR; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */ + __IO uint32_t FTSR; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */ + __IO uint32_t SWIER; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */ + __IO uint32_t PR; /*!< EXTI Pending Register 1 Address offset: 0x0C */ + uint32_t RESERVED1[20]; /*!< Reserved 1, Address offset: 0x10 -- 0x5C */ + __IO uint32_t EXTICR[4]; /*!< EXTI External Interrupt Configuration Register, Address offset: 0x60 -- 0x6C */ + uint32_t RESERVED2[4]; /*!< Reserved 2, Address offset: 0x70 -- 0x7C */ + __IO uint32_t IMR; /*!< EXTI Interrupt Mask Register, Address offset: 0x80 */ + __IO uint32_t EMR; /*!< EXTI Event Mask Register, Address offset: 0x84 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH Access Control register, Address offset: 0x00 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH Key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH Option Key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH Status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH Control register, Address offset: 0x14 */ + uint32_t RESERVED2[2]; /*!< Reserved2, Address offset: 0x18-0x1C */ + __IO uint32_t OPTR; /*!< FLASH Option register, Address offset: 0x20 */ + __IO uint32_t SDKR; /*!< FLASH SDK address register, Address offset: 0x24 */ + __IO uint32_t PCK_EN; /*!< FLASH PCK_EN address register, Address offset: 0x28 */ + __IO uint32_t WRPR; /*!< FLASH WRP address register, Address offset: 0x2C */ + uint32_t RESERVED3[(0x90 - 0x2C) / 4 - 1]; /*!< RESERVED3, Address offset: 0x30-0x8C */ + __IO uint32_t STCR; /*!< FLASH sleep time config register, Address offset: 0x90 */ + uint32_t RESERVED4[(0x100 - 0x90) / 4 - 1]; /*!< RESERVED4, Address offset: 0x94-0xFC */ + __IO uint32_t TS0; /*!< FLASH TS0 register, Address offset: 0x100 */ + __IO uint32_t TS1; /*!< FLASH TS1 register, Address offset: 0x104 */ + __IO uint32_t TS2P; /*!< FLASH TS2P register, Address offset: 0x108 */ + __IO uint32_t TPS3; /*!< FLASH TPS3 register, Address offset: 0x10C */ + __IO uint32_t TS3; /*!< FLASH TS3 register, Address offset: 0x110 */ + __IO uint32_t PERTPE; /*!< FLASH PERTPE register, Address offset: 0x114 */ + __IO uint32_t SMERTPE; /*!< FLASH SMERTPE register, Address offset: 0x118 */ + __IO uint32_t PRGTPE; /*!< FLASH PRGTPE register, Address offset: 0x11C */ + __IO uint32_t PRETPE; /*!< FLASH PRETPE register, Address offset: 0x120 */ + uint32_t RESERVED5[(0x290 - 0x120) / 4 - 1]; /*!< RESERVED4, Address offset: 0x124-0x28C */ + __IO uint32_t TRMLSR; /*!< FLASH TRMLSR register, Address offset: 0x290 */ + __IO uint32_t TRMDR[9]; /*!< FLASH TRMDR register, Address offset: 0x294 - 0x2B7 */ +} FLASH_TypeDef; + +/** + * @brief Option Bytes + */ +typedef struct +{ + __IO uint8_t RDP; /*!< FLASH option byte Read protection, Address offset: 0x00 */ + __IO uint8_t USER; /*!< FLASH option byte user options, Address offset: 0x01 */ + __IO uint8_t nRDP; /*!< Complemented FLASH option byte Read protection, Address offset: 0x02 */ + __IO uint8_t nUSER; /*!< Complemented FLASH option byte user options, Address offset: 0x03 */ + __IO uint8_t SDK_STRT; /*!< SDK area start address(stored in SDK[4:0]), Address offset: 0x04 */ + __IO uint8_t SDK_END; /*!< SDK area end address(stored in SDK[12:8]), Address offset: 0x05 */ + __IO uint8_t nSDK_STRT; /*!< Complemented SDK area start address, Address offset: 0x06 */ + __IO uint8_t nSDK_END; /*!< Complemented SDK area end address, Address offset: 0x07 */ + uint32_t RESERVED1; /*!< RESERVED1, Address offset: 0x08 */ + __IO uint16_t WRP; /*!< FLASH option byte write protection, Address offset: 0x0C */ + __IO uint16_t nWRP; /*!< Complemented FLASH option byte write protection, Address offset: 0x0E */ +} OB_TypeDef; + +/** + * @brief General Purpose I/O + */ +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ +} GPIO_TypeDef; + +/** +* @brief I2C Registers +*/ +typedef struct +{ + __IO uint32_t CR1; /*!< I2C desc CR1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C desc CR2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C desc OAR1, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C desc OAR2, Address offset: 0x0C */ + __IO uint32_t DR; /*!< I2C desc DR, Address offset: 0x10 */ + __IO uint32_t SR1; /*!< I2C desc SR1, Address offset: 0x14 */ + __IO uint32_t SR2; /*!< I2C desc SR2, Address offset: 0x18 */ + __IO uint32_t CCR; /*!< I2C desc CCR, Address offset: 0x1C */ + __IO uint32_t TRISE; /*!< I2C desc TRISE, Address offset: 0x20 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ +} IWDG_TypeDef; + +/** + * @brief LCD + */ +typedef struct +{ + __IO uint32_t CR0; /*!< LCD desc CR0, Address offset: 0x00 */ + __IO uint32_t CR1; /*!< LCD desc CR1, Address offset: 0x04 */ + __IO uint32_t INTCLR; /*!< LCD desc INTCLR, Address offset: 0x08 */ + __IO uint32_t POEN0; /*!< LCD desc POEN0, Address offset: 0x0C */ + __IO uint32_t POEN1; /*!< LCD desc POEN1, Address offset: 0x10 */ + __IO uint32_t RAM[16]; /*!< LCD desc RAM0~F, Address offset: 0x14-0x53 */ +} LCD_TypeDef; + +/** + * @brief LPTIMER + */ +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t RESERVED1; /*!< RESERVED1, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ +} LPTIM_TypeDef; + +/** + * @brief OPA Registers + */ +typedef struct +{ + __IO uint32_t RESERVED1[0x30 / 4]; /*!< RESERVED1, Address offset: 0x0-0x2C */ + __IO uint32_t CR0; /*!< OPA desc CR0, Address offset: 0x30 */ + __IO uint32_t CR1; /*!< OPA desc CR1, Address offset: 0x34 */ + __IO uint32_t CR2; /*!< OPA desc CR2, Address offset: 0x38 */ + __IO uint32_t CR; /*!< OPA desc CR, Address offset: 0x3C */ +} OPA_TypeDef; + +/** + * @brief Power Control + */ +typedef struct +{ + __IO uint32_t CR1; /*!< PWR Power Control Register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< PWR Power Control Register 2, Address offset: 0x04 */ + uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x08-0x10 */ + __IO uint32_t SR; /*!< PWR Power Status Register, Address offset: 0x14 */ +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ +typedef struct +{ + __IO uint32_t CR; /*!< RCC Clock Sources Control Register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC Internal Clock Sources Calibration Register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC Regulated Domain Clocks Configuration Register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC System PLL configuration Register, Address offset: 0x0C */ + __IO uint32_t ECSCR; /*!< RCC External clock source control register, Address offset: 0x10 */ + __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register, Address offset: 0x20 */ + __IO uint32_t IOPRSTR; /*!< RCC IO port reset register, Address offset: 0x24 */ + __IO uint32_t AHBRSTR; /*!< RCC AHB peripherals reset register, Address offset: 0x28 */ + __IO uint32_t APBRSTR1; /*!< RCC APB peripherals reset register 1, Address offset: 0x2C */ + __IO uint32_t APBRSTR2; /*!< RCC APB peripherals reset register 2, Address offset: 0x30 */ + __IO uint32_t IOPENR; /*!< RCC IO port enable register, Address offset: 0x34 */ + __IO uint32_t AHBENR; /*!< RCC AHB peripherals clock enable register, Address offset: 0x38 */ + __IO uint32_t APBENR1; /*!< RCC APB peripherals clock enable register1, Address offset: 0x3C */ + __IO uint32_t APBENR2; /*!< RCC APB peripherals clock enable register2, Address offset: 0x40 */ + uint32_t RESERVED2[4]; /*!< Reserved, Address offset: 0x44-0x50 */ + __IO uint32_t CCIPR; /*!< RCC Peripherals Independent Clocks Configuration Register, Address offset: 0x54 */ + __IO uint32_t RESERVED3; /*!< Reserved, Address offset: 0x58 */ + __IO uint32_t BDCR; /*!< RCC Backup Domain Control Register, Address offset: 0x5C */ + __IO uint32_t CSR; /*!< RCC Unregulated Domain Clock Control and Status Register, Address offset: 0x60 */ +} RCC_TypeDef; + +/** +* @brief RTC Registers +*/ +typedef struct +{ + __IO uint32_t CRH; /*!< RTC desc CRH, Address offset: 0x00 */ + __IO uint32_t CRL; /*!< RTC desc CRL, Address offset: 0x04 */ + __IO uint32_t PRLH; /*!< RTC desc PRLH, Address offset: 0x08 */ + __IO uint32_t PRLL; /*!< RTC desc PRLL, Address offset: 0x0C */ + __IO uint32_t DIVH; /*!< RTC desc DIVH, Address offset: 0x10 */ + __IO uint32_t DIVL; /*!< RTC desc DIVL, Address offset: 0x14 */ + __IO uint32_t CNTH; /*!< RTC desc CNTH, Address offset: 0x18 */ + __IO uint32_t CNTL; /*!< RTC desc CNTL, Address offset: 0x1C */ + __IO uint32_t ALRH; /*!< RTC desc ALRH, Address offset: 0x20 */ + __IO uint32_t ALRL; /*!< RTC desc ALRL, Address offset: 0x24 */ + uint32_t RESERVED1; + __IO uint32_t BKP_RTCCR; /*!< RTC desc BKP_RTCCR, Address offset: 0x2C */ +} RTC_TypeDef; + +/** +* @brief SPI Registers +*/ +typedef struct +{ + __IO uint32_t CR1; /*!< SPI desc CR1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI desc CR2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI desc SR, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI desc DR, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI desc CRCPR, Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI desc RXCRCR, Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI desc TXCRCR, Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI desc I2SCFGR, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI desc I2SPR, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief System configuration controller + */ +typedef struct +{ + //__IO uint32_t CFGR[4]; /*!< SYSCFG configuration registers, Address offset: 0x00 - 0x0F */ + __IO uint32_t CFGR1; /*!< SYSCFG desc CFGR1, Address offset: 0x00 */ + __IO uint32_t CFGR2; /*!< SYSCFG desc CFGR2, Address offset: 0x04 */ + __IO uint32_t CFGR3; /*!< SYSCFG desc CFGR3, Address offset: 0x08 */ + __IO uint32_t CFGR4; /*!< SYSCFG desc CFGR4, Address offset: 0x0C */ + __IO uint32_t PAENS; /*!< SYSCFG desc PAENS, Address offset: 0x10 */ + __IO uint32_t PBENS; /*!< SYSCFG desc PBENS, Address offset: 0x14 */ + __IO uint32_t PCENS; /*!< SYSCFG desc PCENS, Address offset: 0x18 */ + __IO uint32_t PFENS; /*!< SYSCFG desc PFENS, Address offset: 0x1C */ + __IO uint32_t EIIC; /*!< SYSCFG desc PEENS, Address offset: 0x20 */ +} SYSCFG_TypeDef; + +/** + * @brief TIM + */ +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler register, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + __IO uint32_t OR; /*!< TIM option register, Address offset: 0x50 */ +} TIM_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ +typedef struct +{ + __IO uint32_t SR; /*!< USART Status register , Address offset: 0x00 */ + __IO uint32_t DR; /*!< USART Data register, Address offset: 0x04 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x08 */ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x0C */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x10 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x14 */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x18 */ +} USART_TypeDef; + +/** +* @brief USB Registers +*/ +typedef struct +{ + __IO uint32_t CR; /*!< USB desc CR, Address offset: 0x00 */ + __IO uint32_t INTR; /*!< USB desc INTR, Address offset: 0x04 */ + __IO uint32_t INTRE; /*!< USB desc INTRE, Address offset: 0x08 */ + __IO uint32_t FRAME; /*!< USB desc FRAME, Address offset: 0x0C */ + __IO uint32_t EP0CSR; /*!< USB desc EP0CSR, Address offset: 0x10 */ + __IO uint32_t INEPxCSR; /*!< USB desc INEPxCSR, Address offset: 0x14 */ + __IO uint32_t OUTEPxCSR; /*!< USB desc OUTEPxCSR, Address offset: 0x18 */ + __IO uint32_t OUTCOUNT; /*!< USB desc OUTCOUNT, Address offset: 0x1C */ + __IO uint32_t FIFODATA[16]; /*!< USB desc FIFODATA, Address offset: 0x20 - 0x3F */ +} USB_TypeDef; + +/** + * @brief Window WATCHDOG + */ +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + +/** @addtogroup Peripheral_memory_map + * @{ + */ +#define FLASH_BASE (0x08000000UL) /*!< FLASH base address */ +#define FLASH_END (0x0801FFFFUL) /*!< FLASH end address */ +#define FLASH_SIZE (FLASH_END - FLASH_BASE + 1) +#define FLASH_PAGE_SIZE 0x00000100U /*!< FLASH Page Size, 256 Bytes */ +#define FLASH_PAGE_NB (FLASH_SIZE / FLASH_PAGE_SIZE) +#define FLASH_SECTOR_SIZE 0x00002000U /*!< FLASH Sector Size, 8192 Bytes */ +#define FLASH_SECTOR_NB (FLASH_SIZE / FLASH_SECTOR_SIZE) +#define SRAM_BASE (0x20000000UL) /*!< SRAM base address */ +#define SRAM_END (0x20003FFFUL) /*!< SRAM end address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ +#define IOPORT_BASE (0x50000000UL) /*!< IOPORT base address */ + +/*!< Peripheral memory map */ +#define APBPERIPH_BASE (PERIPH_BASE) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000UL) + +/*!< APB peripherals */ +#define TIM2_BASE (APBPERIPH_BASE + 0x00000000UL) +#define TIM3_BASE (APBPERIPH_BASE + 0x00000400UL) +#define TIM6_BASE (APBPERIPH_BASE + 0x00001000UL) +#define TIM7_BASE (APBPERIPH_BASE + 0x00001400UL) +#define TIM14_BASE (APBPERIPH_BASE + 0x00002000UL) +#define LCD_BASE (APBPERIPH_BASE + 0x00002400UL) +#define RTC_BASE (APBPERIPH_BASE + 0x00002800UL) +#define WWDG_BASE (APBPERIPH_BASE + 0x00002C00UL) +#define IWDG_BASE (APBPERIPH_BASE + 0x00003000UL) +#define SPI2_BASE (APBPERIPH_BASE + 0x00003800UL) +#define USART2_BASE (APBPERIPH_BASE + 0x00004400UL) +#define USART3_BASE (APBPERIPH_BASE + 0x00004800UL) +#define USART4_BASE (APBPERIPH_BASE + 0x00004C00UL) +#define I2C1_BASE (APBPERIPH_BASE + 0x00005400UL) +#define I2C2_BASE (APBPERIPH_BASE + 0x00005800UL) +#define USB_BASE (APBPERIPH_BASE + 0x00005C00UL) +#define USB_SRAM_BASE (APBPERIPH_BASE + 0x00006000UL) +#define CAN1_BASE (APBPERIPH_BASE + 0x00006400UL) +#define CTC_BASE (APBPERIPH_BASE + 0x00006C00UL) +#define PWR_BASE (APBPERIPH_BASE + 0x00007000UL) +#define DAC1_BASE (APBPERIPH_BASE + 0x00007400UL) +#define LPTIM1_BASE (APBPERIPH_BASE + 0x00007C00UL) +#define SYSCFG_BASE (APBPERIPH_BASE + 0x00010000UL) +#define COMP1_BASE (APBPERIPH_BASE + 0x00010200UL) +#define COMP2_BASE (APBPERIPH_BASE + 0x00010210UL) +#define COMP3_BASE (APBPERIPH_BASE + 0x00010220UL) +#define ADC1_BASE (APBPERIPH_BASE + 0x00012400UL) +#define OPA_BASE (APBPERIPH_BASE + 0x00010300UL) +#define TIM1_BASE (APBPERIPH_BASE + 0x00012C00UL) +#define SPI1_BASE (APBPERIPH_BASE + 0x00013000UL) +#define USART1_BASE (APBPERIPH_BASE + 0x00013800UL) +#define TIM15_BASE (APBPERIPH_BASE + 0x00014000UL) +#define TIM16_BASE (APBPERIPH_BASE + 0x00014400UL) +#define TIM17_BASE (APBPERIPH_BASE + 0x00014800UL) +#define DBGMCU_BASE (APBPERIPH_BASE + 0x00015800UL) + +/*!< AHB peripherals */ +#define DMA1_BASE (AHBPERIPH_BASE + 0x00000000UL) +#define DMA1_Channel1_BASE (DMA1_BASE + 0x00000008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x0000001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x00000030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x00000044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x00000058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x0000006CUL) +#define DMA1_Channel7_BASE (DMA1_BASE + 0x00000080UL) +#define RCC_BASE (AHBPERIPH_BASE + 0x00001000UL) +#define EXTI_BASE (AHBPERIPH_BASE + 0x00001800UL) +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x00002000UL) /*!< FLASH registers base address */ +#define OB_BASE 0x1FFF3100UL /*!< FLASH Option Bytes base address */ +#define FLASHSIZE_BASE 0x1FFF31FCUL /*!< FLASH Size register base address */ +#define UID_BASE 0x1FFF3000UL /*!< Unique device ID register base address */ +#define CRC_BASE (AHBPERIPH_BASE + 0x00003000UL) +#define DIV_BASE (AHBPERIPH_BASE + 0x00003800UL) + +/*!< IOPORT */ +#define GPIOA_BASE (IOPORT_BASE + 0x00000000UL) +#define GPIOB_BASE (IOPORT_BASE + 0x00000400UL) +#define GPIOC_BASE (IOPORT_BASE + 0x00000800UL) +#define GPIOF_BASE (IOPORT_BASE + 0x00001400UL) + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define TIM14 ((TIM_TypeDef *) TIM14_BASE) +#define LCD ((LCD_TypeDef *) LCD_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define USART4 ((USART_TypeDef *) USART4_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define USB ((USB_TypeDef *) USB_BASE) +#define USB_SRAM ((USB_SRAM_TypeDef *) USB_SRAM_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define CTC ((CTC_TypeDef *) CTC_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define COMP1 ((COMP_TypeDef *) COMP1_BASE) +#define COMP2 ((COMP_TypeDef *) COMP2_BASE) +#define COMP3 ((COMP_TypeDef *) COMP3_BASE) +#define COMP12_COMMON ((COMP_Common_TypeDef *) COMP1_BASE) +#define OPA ((OPA_TypeDef *) OPA_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define OB ((OB_TypeDef *) OB_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define DIV ((DIV_TypeDef *) DIV_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition +* @{ +*/ + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ +/******************** Bits definition for ADC_SR register *******************/ +#define ADC_SR_AWD_Pos (0U) +#define ADC_SR_AWD_Msk (0x1UL << ADC_SR_AWD_Pos) /*!< 0x00000080 */ +#define ADC_SR_AWD ADC_SR_AWD_Msk +#define ADC_SR_EOC_Pos (1U) +#define ADC_SR_EOC_Msk (0x1UL << ADC_SR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_SR_EOC ADC_SR_EOC_Msk +#define ADC_SR_JEOC_Pos (2U) +#define ADC_SR_JEOC_Msk (0x1UL << ADC_SR_JEOC_Pos) /*!< 0x00000004 */ +#define ADC_SR_JEOC ADC_SR_JEOC_Msk +#define ADC_SR_JSTRT_Pos (3U) +#define ADC_SR_JSTRT_Msk (0x1UL << ADC_SR_JSTRT_Pos) /*!< 0x00000004 */ +#define ADC_SR_JSTRT ADC_SR_JSTRT_Msk +#define ADC_SR_STRT_Pos (4U) +#define ADC_SR_STRT_Msk (0x1UL << ADC_SR_STRT_Pos) /*!< 0x00000004 */ +#define ADC_SR_STRT ADC_SR_STRT_Msk +#define ADC_SR_OVER_Pos (5U) +#define ADC_SR_OVER_Msk (0x1UL << ADC_SR_OVER_Pos) /*!< 0x00000004 */ +#define ADC_SR_OVER ADC_SR_OVER_Msk + +/*!< ADC_CR1 */ +#define ADC_CR1_AWDCH_Pos (0U) +#define ADC_CR1_AWDCH_Msk (0x1FUL << ADC_CR1_AWDCH_Pos) /*!< 0x0000001F */ +#define ADC_CR1_AWDCH ADC_CR1_AWDCH_Msk /*!< AWDCH[4:0] bits (desc AWDCH) */ +#define ADC_CR1_AWDCH_0 (0x1UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000001 */ +#define ADC_CR1_AWDCH_1 (0x2UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000002 */ +#define ADC_CR1_AWDCH_2 (0x4UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000004 */ +#define ADC_CR1_AWDCH_3 (0x8UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000008 */ +#define ADC_CR1_AWDCH_4 (0x10UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000010 */ +#define ADC_CR1_EOCIE_Pos (5U) +#define ADC_CR1_EOCIE_Msk (0x1UL << ADC_CR1_EOCIE_Pos) /*!< 0x00000020 */ +#define ADC_CR1_EOCIE ADC_CR1_EOCIE_Msk +#define ADC_CR1_AWDIE_Pos (6U) +#define ADC_CR1_AWDIE_Msk (0x1UL << ADC_CR1_AWDIE_Pos) /*!< 0x00000040 */ +#define ADC_CR1_AWDIE ADC_CR1_AWDIE_Msk /*!< desc AWDIE */ +#define ADC_CR1_JEOCIE_Pos (7U) +#define ADC_CR1_JEOCIE_Msk (0x1UL << ADC_CR1_JEOCIE_Pos) /*!< 0x00000080 */ +#define ADC_CR1_JEOCIE ADC_CR1_JEOCIE_Msk /*!< desc JEOCIE */ +#define ADC_CR1_SCAN_Pos (8U) +#define ADC_CR1_SCAN_Msk (0x1UL << ADC_CR1_SCAN_Pos) /*!< 0x00000100 */ +#define ADC_CR1_SCAN ADC_CR1_SCAN_Msk /*!< desc SCAN */ +#define ADC_CR1_AWDSGL_Pos (9U) +#define ADC_CR1_AWDSGL_Msk (0x1UL << ADC_CR1_AWDSGL_Pos) /*!< 0x00000200 */ +#define ADC_CR1_AWDSGL ADC_CR1_AWDSGL_Msk /*!< desc AWDSGL */ +#define ADC_CR1_JAUTO_Pos (10U) +#define ADC_CR1_JAUTO_Msk (0x1UL << ADC_CR1_JAUTO_Pos) /*!< 0x00000400 */ +#define ADC_CR1_JAUTO ADC_CR1_JAUTO_Msk /*!< desc JAUTO */ +#define ADC_CR1_DISCEN_Pos (11U) +#define ADC_CR1_DISCEN_Msk (0x1UL << ADC_CR1_DISCEN_Pos) /*!< 0x00000800 */ +#define ADC_CR1_DISCEN ADC_CR1_DISCEN_Msk /*!< desc DISCEN */ +#define ADC_CR1_JDISCEN_Pos (12U) +#define ADC_CR1_JDISCEN_Msk (0x1UL << ADC_CR1_JDISCEN_Pos) /*!< 0x00001000 */ +#define ADC_CR1_JDISCEN ADC_CR1_JDISCEN_Msk /*!< desc JDISCEN */ +#define ADC_CR1_DISCNUM_Pos (13U) +#define ADC_CR1_DISCNUM_Msk (0x7UL << ADC_CR1_DISCNUM_Pos) /*!< 0x0000E000 */ +#define ADC_CR1_DISCNUM ADC_CR1_DISCNUM_Msk /*!< DISCNUM[15:13] bits (desc DISCNUM) */ +#define ADC_CR1_DISCNUM_0 (0x1UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00002000 */ +#define ADC_CR1_DISCNUM_1 (0x2UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00004000 */ +#define ADC_CR1_DISCNUM_2 (0x4UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00008000 */ +#define ADC_CR1_JAWDEN_Pos (22U) +#define ADC_CR1_JAWDEN_Msk (0x1UL << ADC_CR1_JAWDEN_Pos) /*!< 0x00400000 */ +#define ADC_CR1_JAWDEN ADC_CR1_JAWDEN_Msk +#define ADC_CR1_AWDEN_Pos (23U) +#define ADC_CR1_AWDEN_Msk (0x1UL << ADC_CR1_AWDEN_Pos) /*!< 0x00800000 */ +#define ADC_CR1_AWDEN ADC_CR1_AWDEN_Msk +#define ADC_CR1_RESSEL_Pos (24U) +#define ADC_CR1_RESSEL_Msk (0x3UL << ADC_CR1_RESSEL_Pos) /*!< 0x03000000 */ +#define ADC_CR1_RESSEL ADC_CR1_RESSEL_Msk +#define ADC_CR1_RESSEL_0 (0x1UL << ADC_CR1_RESSEL_Pos) /*!< 0x01000000 */ +#define ADC_CR1_RESSEL_1 (0x2UL << ADC_CR1_RESSEL_Pos) +#define ADC_CR1_ADSTP_Pos (27U) +#define ADC_CR1_ADSTP_Msk (0x1UL << ADC_CR1_ADSTP_Pos) /*!< 0x08000000 */ +#define ADC_CR1_ADSTP ADC_CR1_ADSTP_Msk +#define ADC_CR1_MSBSEL_Pos (28U) +#define ADC_CR1_MSBSEL_Msk (0x1UL << ADC_CR1_MSBSEL_Pos) /*!< 0x10000000 */ +#define ADC_CR1_MSBSEL ADC_CR1_MSBSEL_Msk +#define ADC_CR1_OVETIE_Pos (29U) +#define ADC_CR1_OVETIE_Msk (0x1UL << ADC_CR1_OVETIE_Pos) /*!< 0x10000000 */ +#define ADC_CR1_OVETIE ADC_CR1_OVETIE_Msk + +/*!< ADC_CR2 */ +#define ADC_CR2_ADON_Pos (0U) +#define ADC_CR2_ADON_Msk (0x1UL << ADC_CR2_ADON_Pos) /*!< 0x00000001 */ +#define ADC_CR2_ADON ADC_CR2_ADON_Msk /*!< desc ADON */ +#define ADC_CR2_CONT_Pos (1U) +#define ADC_CR2_CONT_Msk (0x1UL << ADC_CR2_CONT_Pos) /*!< 0x00000002 */ +#define ADC_CR2_CONT ADC_CR2_CONT_Msk /*!< desc CONT */ +#define ADC_CR2_CAL_Pos (2U) +#define ADC_CR2_CAL_Msk (0x1UL << ADC_CR2_CAL_Pos) /*!< 0x00000004 */ +#define ADC_CR2_CAL ADC_CR2_CAL_Msk /*!< desc CAL */ +#define ADC_CR2_RSTCAL_Pos (3U) +#define ADC_CR2_RSTCAL_Msk (0x1UL << ADC_CR2_RSTCAL_Pos) /*!< 0x00000008 */ +#define ADC_CR2_RSTCAL ADC_CR2_RSTCAL_Msk +#define ADC_CR2_DMA_Pos (8U) +#define ADC_CR2_DMA_Msk (0x1UL << ADC_CR2_DMA_Pos) /*!< 0x00000100 */ +#define ADC_CR2_DMA ADC_CR2_DMA_Msk +#define ADC_CR2_ALIGN_Pos (11U) +#define ADC_CR2_ALIGN_Msk (0x1UL << ADC_CR2_ALIGN_Pos) /*!< 0x00000800 */ +#define ADC_CR2_ALIGN ADC_CR2_ALIGN_Msk /*!< desc ALIGN */ +#define ADC_CR2_JEXTSEL_Pos (12U) +#define ADC_CR2_JEXTSEL_Msk (0x7UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00007000 */ +#define ADC_CR2_JEXTSEL ADC_CR2_JEXTSEL_Msk /*!< JEXTSEL[14:12] bits (desc JEXTSEL) */ +#define ADC_CR2_JEXTSEL_0 (0x1UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00001000 */ +#define ADC_CR2_JEXTSEL_1 (0x2UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00002000 */ +#define ADC_CR2_JEXTSEL_2 (0x4UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00004000 */ +#define ADC_CR2_JEXTTRIG_Pos (15U) +#define ADC_CR2_JEXTTRIG_Msk (0x1UL << ADC_CR2_JEXTTRIG_Pos) /*!< 0x00008000 */ +#define ADC_CR2_JEXTTRIG ADC_CR2_JEXTTRIG_Msk /*!< desc JEXTTRIG */ +#define ADC_CR2_EXTSEL_Pos (17U) +#define ADC_CR2_EXTSEL_Msk (0x7UL << ADC_CR2_EXTSEL_Pos) /*!< 0x000E0000 */ +#define ADC_CR2_EXTSEL ADC_CR2_EXTSEL_Msk /*!< EXTSEL[19:17] bits (desc EXTSEL) */ +#define ADC_CR2_EXTSEL_0 (0x1UL << ADC_CR2_EXTSEL_Pos) /*!< 0x00020000 */ +#define ADC_CR2_EXTSEL_1 (0x2UL << ADC_CR2_EXTSEL_Pos) /*!< 0x00040000 */ +#define ADC_CR2_EXTSEL_2 (0x4UL << ADC_CR2_EXTSEL_Pos) /*!< 0x00080000 */ +#define ADC_CR2_EXTTRIG_Pos (20U) +#define ADC_CR2_EXTTRIG_Msk (0x1UL << ADC_CR2_EXTTRIG_Pos) /*!< 0x00100000 */ +#define ADC_CR2_EXTTRIG ADC_CR2_EXTTRIG_Msk /*!< desc EXTTRIG */ +#define ADC_CR2_JSWSTART_Pos (21U) +#define ADC_CR2_JSWSTART_Msk (0x1UL << ADC_CR2_JSWSTART_Pos) /*!< 0x00200000 */ +#define ADC_CR2_JSWSTART ADC_CR2_JSWSTART_Msk /*!< desc JSWSTART */ +#define ADC_CR2_SWSTART_Pos (22U) +#define ADC_CR2_SWSTART_Msk (0x1UL << ADC_CR2_SWSTART_Pos) /*!< 0x00400000 */ +#define ADC_CR2_SWSTART ADC_CR2_SWSTART_Msk /*!< desc SWSTART */ +#define ADC_CR2_TSVREFE_Pos (23U) +#define ADC_CR2_TSVREFE_Msk (0x1UL << ADC_CR2_TSVREFE_Pos) /*!< 0x00800000 */ +#define ADC_CR2_TSVREFE ADC_CR2_TSVREFE_Msk +#define ADC_CR2_VERFBUFFEREN_Pos (25U) +#define ADC_CR2_VERFBUFFEREN_Msk (0x1UL << ADC_CR2_VERFBUFFEREN_Pos) /*!< 0x00800000 */ +#define ADC_CR2_VERFBUFFEREN ADC_CR2_VERFBUFFEREN_Msk +#define ADC_CR2_VERFBUFFERSEL_Pos (26U) +#define ADC_CR2_VERFBUFFERSEL_Msk (0x3UL << ADC_CR2_VERFBUFFERSEL_Pos) /*!< 0x00800000 */ +#define ADC_CR2_VERFBUFFERSELE ADC_CR2_VERFBUFFERSEL_Msk +#define ADC_CR2_VERFBUFFERSELE_0 (0x1UL << ADC_CR2_VERFBUFFERSEL_Pos) /*!< 0x00001000 */ +#define ADC_CR2_VERFBUFFERSELE_1 (0x2UL << ADC_CR2_VERFBUFFERSEL_Pos) + +/*!< ADC_SMPR1 */ +#define ADC_SMPR1_SMP20_Pos (0U) +#define ADC_SMPR1_SMP20_Msk (0x7UL << ADC_SMPR1_SMP20_Pos) /*!< 0x00000007 */ +#define ADC_SMPR1_SMP20 ADC_SMPR1_SMP20_Msk /*!< SMP10[2:0] bits (desc SMP10) */ +#define ADC_SMPR1_SMP20_0 (0x1UL << ADC_SMPR1_SMP20_Pos) /*!< 0x00000001 */ +#define ADC_SMPR1_SMP20_1 (0x2UL << ADC_SMPR1_SMP20_Pos) /*!< 0x00000002 */ +#define ADC_SMPR1_SMP20_2 (0x4UL << ADC_SMPR1_SMP20_Pos) /*!< 0x00000004 */ +#define ADC_SMPR1_SMP21_Pos (3U) +#define ADC_SMPR1_SMP21_Msk (0x7UL << ADC_SMPR1_SMP21_Pos) /*!< 0x00000038 */ +#define ADC_SMPR1_SMP21 ADC_SMPR1_SMP21_Msk /*!< SMP11[5:3] bits (desc SMP11) */ +#define ADC_SMPR1_SMP21_0 (0x1UL << ADC_SMPR1_SMP21_Pos) /*!< 0x00000008 */ +#define ADC_SMPR1_SMP21_1 (0x2UL << ADC_SMPR1_SMP21_Pos) /*!< 0x00000010 */ +#define ADC_SMPR1_SMP21_2 (0x4UL << ADC_SMPR1_SMP21_Pos) /*!< 0x00000020 */ +#define ADC_SMPR1_SMP22_Pos (6U) +#define ADC_SMPR1_SMP22_Msk (0x7UL << ADC_SMPR1_SMP22_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR1_SMP22 ADC_SMPR1_SMP22_Msk /*!< SMP12[8:6] bits (desc SMP12) */ +#define ADC_SMPR1_SMP22_0 (0x1UL << ADC_SMPR1_SMP22_Pos) /*!< 0x00000040 */ +#define ADC_SMPR1_SMP22_1 (0x2UL << ADC_SMPR1_SMP22_Pos) /*!< 0x00000080 */ +#define ADC_SMPR1_SMP22_2 (0x4UL << ADC_SMPR1_SMP22_Pos) /*!< 0x00000100 */ +#define ADC_SMPR1_SMP23_Pos (9U) +#define ADC_SMPR1_SMP23_Msk (0x7UL << ADC_SMPR1_SMP23_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR1_SMP23 ADC_SMPR1_SMP23_Msk /*!< SMP13[11:9] bits (desc SMP13) */ +#define ADC_SMPR1_SMP23_0 (0x1UL << ADC_SMPR1_SMP23_Pos) /*!< 0x00000200 */ +#define ADC_SMPR1_SMP23_1 (0x2UL << ADC_SMPR1_SMP23_Pos) /*!< 0x00000400 */ +#define ADC_SMPR1_SMP23_2 (0x4UL << ADC_SMPR1_SMP23_Pos) /*!< 0x00000800 */ + +/*!< ADC_SMPR2 */ +#define ADC_SMPR2_SMP10_Pos (0U) +#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< SMP0[2:0] bits (desc SMP0) */ +#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) +#define ADC_SMPR2_SMP11_Pos (3U) +#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< SMP0[2:0] bits (desc SMP0) */ +#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) +#define ADC_SMPR2_SMP12_Pos (6U) +#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< SMP0[2:0] bits (desc SMP0) */ +#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) +#define ADC_SMPR2_SMP13_Pos (9U) +#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< SMP0[2:0] bits (desc SMP0) */ +#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) +#define ADC_SMPR2_SMP14_Pos (12U) +#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< SMP0[2:0] bits (desc SMP0) */ +#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) +#define ADC_SMPR2_SMP15_Pos (15U) +#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */ +#define ADC_SMPR2_SMP16_Pos (18U) +#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) +#define ADC_SMPR2_SMP17_Pos (21U) +#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) +#define ADC_SMPR2_SMP18_Pos (24U) +#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) +#define ADC_SMPR2_SMP19_Pos (27U) +#define ADC_SMPR2_SMP19_Msk (0x7UL << ADC_SMPR2_SMP19_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP19 ADC_SMPR2_SMP19_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR2_SMP19_0 (0x1UL << ADC_SMPR2_SMP19_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP19_1 (0x2UL << ADC_SMPR2_SMP19_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP19_2 (0x4UL << ADC_SMPR2_SMP19_Pos) +#define ADC_SMPR3_SMP0_Pos (0U) +#define ADC_SMPR3_SMP0_Msk (0x7UL << ADC_SMPR3_SMP0_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP0 ADC_SMPR3_SMP0_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP0_0 (0x1UL << ADC_SMPR3_SMP0_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP0_1 (0x2UL << ADC_SMPR3_SMP0_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP0_2 (0x4UL << ADC_SMPR3_SMP0_Pos) +#define ADC_SMPR3_SMP1_Pos (3U) +#define ADC_SMPR3_SMP1_Msk (0x7UL << ADC_SMPR3_SMP1_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP1 ADC_SMPR3_SMP1_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP1_0 (0x1UL << ADC_SMPR3_SMP1_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP1_1 (0x2UL << ADC_SMPR3_SMP1_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP1_2 (0x4UL << ADC_SMPR3_SMP1_Pos) +#define ADC_SMPR3_SMP2_Pos (6U) +#define ADC_SMPR3_SMP2_Msk (0x7UL << ADC_SMPR3_SMP2_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP2 ADC_SMPR3_SMP2_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP2_0 (0x1UL << ADC_SMPR3_SMP2_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP2_1 (0x2UL << ADC_SMPR3_SMP2_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP2_2 (0x4UL << ADC_SMPR3_SMP2_Pos) +#define ADC_SMPR3_SMP3_Pos (9U) +#define ADC_SMPR3_SMP3_Msk (0x7UL << ADC_SMPR3_SMP3_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP3 ADC_SMPR3_SMP3_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP3_0 (0x1UL << ADC_SMPR3_SMP3_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP3_1 (0x2UL << ADC_SMPR3_SMP3_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP3_2 (0x4UL << ADC_SMPR3_SMP3_Pos) +#define ADC_SMPR3_SMP4_Pos (12U) +#define ADC_SMPR3_SMP4_Msk (0x7UL << ADC_SMPR3_SMP4_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP4 ADC_SMPR3_SMP4_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP4_0 (0x1UL << ADC_SMPR3_SMP4_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP4_1 (0x2UL << ADC_SMPR3_SMP4_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP4_2 (0x4UL << ADC_SMPR3_SMP4_Pos) +#define ADC_SMPR3_SMP5_Pos (15U) +#define ADC_SMPR3_SMP5_Msk (0x7UL << ADC_SMPR3_SMP5_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP5 ADC_SMPR3_SMP5_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP5_0 (0x1UL << ADC_SMPR3_SMP5_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP5_1 (0x2UL << ADC_SMPR3_SMP5_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP5_2 (0x4UL << ADC_SMPR3_SMP5_Pos) +#define ADC_SMPR3_SMP6_Pos (18U) +#define ADC_SMPR3_SMP6_Msk (0x7UL << ADC_SMPR3_SMP6_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP6 ADC_SMPR3_SMP6_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP6_0 (0x1UL << ADC_SMPR3_SMP6_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP6_1 (0x2UL << ADC_SMPR3_SMP6_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP6_2 (0x4UL << ADC_SMPR3_SMP6_Pos) +#define ADC_SMPR3_SMP7_Pos (21U) +#define ADC_SMPR3_SMP7_Msk (0x7UL << ADC_SMPR3_SMP7_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP7 ADC_SMPR3_SMP7_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP7_0 (0x1UL << ADC_SMPR3_SMP7_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP7_1 (0x2UL << ADC_SMPR3_SMP7_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP7_2 (0x4UL << ADC_SMPR3_SMP7_Pos) +#define ADC_SMPR3_SMP8_Pos (24U) +#define ADC_SMPR3_SMP8_Msk (0x7UL << ADC_SMPR3_SMP8_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP8 ADC_SMPR3_SMP8_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP8_0 (0x1UL << ADC_SMPR3_SMP8_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP8_1 (0x2UL << ADC_SMPR3_SMP8_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP8_2 (0x4UL << ADC_SMPR3_SMP8_Pos) +#define ADC_SMPR3_SMP9_Pos (27U) +#define ADC_SMPR3_SMP9_Msk (0x7UL << ADC_SMPR3_SMP9_Pos) /*!< 0x00038000 */ +#define ADC_SMPR3_SMP9 ADC_SMPR3_SMP9_Msk /*!< SMP15[17:15] bits (desc SMP15) */ +#define ADC_SMPR3_SMP9_0 (0x1UL << ADC_SMPR3_SMP9_Pos) /*!< 0x00008000 */ +#define ADC_SMPR3_SMP9_1 (0x2UL << ADC_SMPR3_SMP9_Pos) /*!< 0x00010000 */ +#define ADC_SMPR3_SMP9_2 (0x4UL << ADC_SMPR3_SMP9_Pos) + +/*!< ADC_JOFR1 */ +#define ADC_JOFR1_JOFFSET1_Pos (0U) +#define ADC_JOFR1_JOFFSET1_Msk (0xFFFUL << ADC_JOFR1_JOFFSET1_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR1_JOFFSET1 ADC_JOFR1_JOFFSET1_Msk /*!< JOFFSET1[11:0] bits (desc JOFFSET1) */ + +/*!< ADC_JOFR2 */ +#define ADC_JOFR2_JOFFSET2_Pos (0U) +#define ADC_JOFR2_JOFFSET2_Msk (0xFFFUL << ADC_JOFR2_JOFFSET2_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR2_JOFFSET2 ADC_JOFR2_JOFFSET2_Msk /*!< JOFFSET2[11:0] bits (desc JOFFSET2) */ + +/*!< ADC_JOFR3 */ +#define ADC_JOFR3_JOFFSET3_Pos (0U) +#define ADC_JOFR3_JOFFSET3_Msk (0xFFFUL << ADC_JOFR3_JOFFSET3_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR3_JOFFSET3 ADC_JOFR3_JOFFSET3_Msk /*!< JOFFSET3[11:0] bits (desc JOFFSET3) */ + +/*!< ADC_JOFR4 */ +#define ADC_JOFR4_JOFFSET4_Pos (0U) +#define ADC_JOFR4_JOFFSET4_Msk (0xFFFUL << ADC_JOFR4_JOFFSET4_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR4_JOFFSET4 ADC_JOFR4_JOFFSET4_Msk /*!< JOFFSET4[11:0] bits (desc JOFFSET4) */ + +/*!< ADC_HTR */ +#define ADC_HTR_HT_Pos (0U) +#define ADC_HTR_HT_Msk (0xFFFUL << ADC_HTR_HT_Pos) /*!< 0x00000FFF */ +#define ADC_HTR_HT ADC_HTR_HT_Msk /*!< HT[11:0] bits (desc HT) */ + +/*!< ADC_LTR */ +#define ADC_LTR_LT_Pos (0U) +#define ADC_LTR_LT_Msk (0xFFFUL << ADC_LTR_LT_Pos) /*!< 0x00000FFF */ +#define ADC_LTR_LT ADC_LTR_LT_Msk + +/*!< ADC_SQR1 */ +#define ADC_SQR1_SQ13_Pos (0U) +#define ADC_SQR1_SQ13_Msk (0x1FUL << ADC_SQR1_SQ13_Pos) /*!< 0x0000001F */ +#define ADC_SQR1_SQ13 ADC_SQR1_SQ13_Msk /*!< SQ13[4:0] bits (desc SQ13) */ +#define ADC_SQR1_SQ13_0 (0x1UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000001 */ +#define ADC_SQR1_SQ13_1 (0x2UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000002 */ +#define ADC_SQR1_SQ13_2 (0x4UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000004 */ +#define ADC_SQR1_SQ13_3 (0x8UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000008 */ +#define ADC_SQR1_SQ13_4 (0x10UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000010 */ +#define ADC_SQR1_SQ14_Pos (5U) +#define ADC_SQR1_SQ14_Msk (0x1FUL << ADC_SQR1_SQ14_Pos) /*!< 0x000003E0 */ +#define ADC_SQR1_SQ14 ADC_SQR1_SQ14_Msk /*!< SQ14[9:5] bits (desc SQ14) */ +#define ADC_SQR1_SQ14_0 (0x1UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000020 */ +#define ADC_SQR1_SQ14_1 (0x2UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000040 */ +#define ADC_SQR1_SQ14_2 (0x4UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000080 */ +#define ADC_SQR1_SQ14_3 (0x8UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000100 */ +#define ADC_SQR1_SQ14_4 (0x10UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000200 */ +#define ADC_SQR1_SQ15_Pos (10U) +#define ADC_SQR1_SQ15_Msk (0x1FUL << ADC_SQR1_SQ15_Pos) /*!< 0x00007C00 */ +#define ADC_SQR1_SQ15 ADC_SQR1_SQ15_Msk /*!< SQ15[14:10] bits (desc SQ15) */ +#define ADC_SQR1_SQ15_0 (0x1UL << ADC_SQR1_SQ15_Pos) /*!< 0x00000400 */ +#define ADC_SQR1_SQ15_1 (0x2UL << ADC_SQR1_SQ15_Pos) /*!< 0x00000800 */ +#define ADC_SQR1_SQ15_2 (0x4UL << ADC_SQR1_SQ15_Pos) /*!< 0x00001000 */ +#define ADC_SQR1_SQ15_3 (0x8UL << ADC_SQR1_SQ15_Pos) /*!< 0x00002000 */ +#define ADC_SQR1_SQ15_4 (0x10UL << ADC_SQR1_SQ15_Pos) /*!< 0x00004000 */ +#define ADC_SQR1_SQ16_Pos (15U) +#define ADC_SQR1_SQ16_Msk (0x1FUL << ADC_SQR1_SQ16_Pos) /*!< 0x000F8000 */ +#define ADC_SQR1_SQ16 ADC_SQR1_SQ16_Msk /*!< SQ16[19:15] bits (desc SQ16) */ +#define ADC_SQR1_SQ16_0 (0x1UL << ADC_SQR1_SQ16_Pos) /*!< 0x00008000 */ +#define ADC_SQR1_SQ16_1 (0x2UL << ADC_SQR1_SQ16_Pos) /*!< 0x00010000 */ +#define ADC_SQR1_SQ16_2 (0x4UL << ADC_SQR1_SQ16_Pos) /*!< 0x00020000 */ +#define ADC_SQR1_SQ16_3 (0x8UL << ADC_SQR1_SQ16_Pos) /*!< 0x00040000 */ +#define ADC_SQR1_SQ16_4 (0x10UL << ADC_SQR1_SQ16_Pos) /*!< 0x00080000 */ +#define ADC_SQR1_L_Pos (20U) +#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x00F00000 */ +#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< L[23:20] bits (desc L) */ +#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00100000 */ +#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00200000 */ +#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00400000 */ +#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) + +/*!< ADC_SQR2 */ +#define ADC_SQR2_SQ7_Pos (0U) +#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0000001F */ +#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< SQ7[4:0] bits (desc SQ7) */ +#define ADC_SQR2_SQ7_0 (0x1UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000001 */ +#define ADC_SQR2_SQ7_1 (0x2UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000002 */ +#define ADC_SQR2_SQ7_2 (0x4UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000004 */ +#define ADC_SQR2_SQ7_3 (0x8UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000008 */ +#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000010 */ +#define ADC_SQR2_SQ8_Pos (5U) +#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x000003E0 */ +#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< SQ8[9:5] bits (desc SQ8) */ +#define ADC_SQR2_SQ8_0 (0x1UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000020 */ +#define ADC_SQR2_SQ8_1 (0x2UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000040 */ +#define ADC_SQR2_SQ8_2 (0x4UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000080 */ +#define ADC_SQR2_SQ8_3 (0x8UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000100 */ +#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000200 */ +#define ADC_SQR2_SQ9_Pos (10U) +#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x00007C00 */ +#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< SQ9[14:10] bits (desc SQ9) */ +#define ADC_SQR2_SQ9_0 (0x1UL << ADC_SQR2_SQ9_Pos) /*!< 0x00000400 */ +#define ADC_SQR2_SQ9_1 (0x2UL << ADC_SQR2_SQ9_Pos) /*!< 0x00000800 */ +#define ADC_SQR2_SQ9_2 (0x4UL << ADC_SQR2_SQ9_Pos) /*!< 0x00001000 */ +#define ADC_SQR2_SQ9_3 (0x8UL << ADC_SQR2_SQ9_Pos) /*!< 0x00002000 */ +#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x00004000 */ +#define ADC_SQR2_SQ10_Pos (15U) +#define ADC_SQR2_SQ10_Msk (0x1FUL << ADC_SQR2_SQ10_Pos) /*!< 0x000F8000 */ +#define ADC_SQR2_SQ10 ADC_SQR2_SQ10_Msk /*!< SQ10[19:15] bits (desc SQ10) */ +#define ADC_SQR2_SQ10_0 (0x1UL << ADC_SQR2_SQ10_Pos) /*!< 0x00008000 */ +#define ADC_SQR2_SQ10_1 (0x2UL << ADC_SQR2_SQ10_Pos) /*!< 0x00010000 */ +#define ADC_SQR2_SQ10_2 (0x4UL << ADC_SQR2_SQ10_Pos) /*!< 0x00020000 */ +#define ADC_SQR2_SQ10_3 (0x8UL << ADC_SQR2_SQ10_Pos) /*!< 0x00040000 */ +#define ADC_SQR2_SQ10_4 (0x10UL << ADC_SQR2_SQ10_Pos) /*!< 0x00080000 */ +#define ADC_SQR2_SQ11_Pos (20U) +#define ADC_SQR2_SQ11_Msk (0x1FUL << ADC_SQR2_SQ11_Pos) /*!< 0x01F00000 */ +#define ADC_SQR2_SQ11 ADC_SQR2_SQ11_Msk /*!< SQ11[24:20] bits (desc SQ11) */ +#define ADC_SQR2_SQ11_0 (0x1UL << ADC_SQR2_SQ11_Pos) /*!< 0x00100000 */ +#define ADC_SQR2_SQ11_1 (0x2UL << ADC_SQR2_SQ11_Pos) /*!< 0x00200000 */ +#define ADC_SQR2_SQ11_2 (0x4UL << ADC_SQR2_SQ11_Pos) /*!< 0x00400000 */ +#define ADC_SQR2_SQ11_3 (0x8UL << ADC_SQR2_SQ11_Pos) /*!< 0x00800000 */ +#define ADC_SQR2_SQ11_4 (0x10UL << ADC_SQR2_SQ11_Pos) /*!< 0x01000000 */ +#define ADC_SQR2_SQ12_Pos (25U) +#define ADC_SQR2_SQ12_Msk (0x1FUL << ADC_SQR2_SQ12_Pos) /*!< 0x3E000000 */ +#define ADC_SQR2_SQ12 ADC_SQR2_SQ12_Msk /*!< SQ12[29:25] bits (desc SQ12) */ +#define ADC_SQR2_SQ12_0 (0x1UL << ADC_SQR2_SQ12_Pos) /*!< 0x02000000 */ +#define ADC_SQR2_SQ12_1 (0x2UL << ADC_SQR2_SQ12_Pos) /*!< 0x04000000 */ +#define ADC_SQR2_SQ12_2 (0x4UL << ADC_SQR2_SQ12_Pos) /*!< 0x08000000 */ +#define ADC_SQR2_SQ12_3 (0x8UL << ADC_SQR2_SQ12_Pos) /*!< 0x10000000 */ +#define ADC_SQR2_SQ12_4 (0x10UL << ADC_SQR2_SQ12_Pos) /*!< 0x20000000 */ + +/*!< ADC_SQR3 */ +#define ADC_SQR3_SQ1_Pos (0U) +#define ADC_SQR3_SQ1_Msk (0x1FUL << ADC_SQR3_SQ1_Pos) /*!< 0x0000001F */ +#define ADC_SQR3_SQ1 ADC_SQR3_SQ1_Msk /*!< SQ1[4:0] bits (desc SQ1) */ +#define ADC_SQR3_SQ1_0 (0x1UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000001 */ +#define ADC_SQR3_SQ1_1 (0x2UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000002 */ +#define ADC_SQR3_SQ1_2 (0x4UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000004 */ +#define ADC_SQR3_SQ1_3 (0x8UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000008 */ +#define ADC_SQR3_SQ1_4 (0x10UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000010 */ +#define ADC_SQR3_SQ2_Pos (5U) +#define ADC_SQR3_SQ2_Msk (0x1FUL << ADC_SQR3_SQ2_Pos) /*!< 0x000003E0 */ +#define ADC_SQR3_SQ2 ADC_SQR3_SQ2_Msk /*!< SQ2[9:5] bits (desc SQ2) */ +#define ADC_SQR3_SQ2_0 (0x1UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000020 */ +#define ADC_SQR3_SQ2_1 (0x2UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000040 */ +#define ADC_SQR3_SQ2_2 (0x4UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000080 */ +#define ADC_SQR3_SQ2_3 (0x8UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000100 */ +#define ADC_SQR3_SQ2_4 (0x10UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000200 */ +#define ADC_SQR3_SQ3_Pos (10U) +#define ADC_SQR3_SQ3_Msk (0x1FUL << ADC_SQR3_SQ3_Pos) /*!< 0x00007C00 */ +#define ADC_SQR3_SQ3 ADC_SQR3_SQ3_Msk /*!< SQ3[14:10] bits (desc SQ3) */ +#define ADC_SQR3_SQ3_0 (0x1UL << ADC_SQR3_SQ3_Pos) /*!< 0x00000400 */ +#define ADC_SQR3_SQ3_1 (0x2UL << ADC_SQR3_SQ3_Pos) /*!< 0x00000800 */ +#define ADC_SQR3_SQ3_2 (0x4UL << ADC_SQR3_SQ3_Pos) /*!< 0x00001000 */ +#define ADC_SQR3_SQ3_3 (0x8UL << ADC_SQR3_SQ3_Pos) /*!< 0x00002000 */ +#define ADC_SQR3_SQ3_4 (0x10UL << ADC_SQR3_SQ3_Pos) /*!< 0x00004000 */ +#define ADC_SQR3_SQ4_Pos (15U) +#define ADC_SQR3_SQ4_Msk (0x1FUL << ADC_SQR3_SQ4_Pos) /*!< 0x000F8000 */ +#define ADC_SQR3_SQ4 ADC_SQR3_SQ4_Msk /*!< SQ4[19:15] bits (desc SQ4) */ +#define ADC_SQR3_SQ4_0 (0x1UL << ADC_SQR3_SQ4_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ4_1 (0x2UL << ADC_SQR3_SQ4_Pos) /*!< 0x00010000 */ +#define ADC_SQR3_SQ4_2 (0x4UL << ADC_SQR3_SQ4_Pos) /*!< 0x00020000 */ +#define ADC_SQR3_SQ4_3 (0x8UL << ADC_SQR3_SQ4_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ4_4 (0x10UL << ADC_SQR3_SQ4_Pos) +#define ADC_SQR3_SQ5_Pos (20U) +#define ADC_SQR3_SQ5_Msk (0x1UL << ADC_SQR3_SQ5_Pos) /*!< 0x01000000 */ +#define ADC_SQR3_SQ5 ADC_SQR3_SQ5_Msk +#define ADC_SQR3_SQ5_0 (0x1UL << ADC_SQR3_SQ5_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ5_1 (0x2UL << ADC_SQR3_SQ5_Pos) /*!< 0x00010000 */ +#define ADC_SQR3_SQ5_2 (0x4UL << ADC_SQR3_SQ5_Pos) /*!< 0x00020000 */ +#define ADC_SQR3_SQ5_3 (0x8UL << ADC_SQR3_SQ5_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ5_4 (0x10UL << ADC_SQR3_SQ5_Pos) +#define ADC_SQR3_SQ6_Pos (25U) +#define ADC_SQR3_SQ6_Msk (0x1FUL << ADC_SQR3_SQ6_Pos) /*!< 0x3E000000 */ +#define ADC_SQR3_SQ6 ADC_SQR3_SQ6_Msk /*!< SQ6[29:25] bits (desc SQ6) */ +#define ADC_SQR3_SQ6_0 (0x1UL << ADC_SQR3_SQ6_Pos) /*!< 0x02000000 */ +#define ADC_SQR3_SQ6_1 (0x2UL << ADC_SQR3_SQ6_Pos) /*!< 0x04000000 */ +#define ADC_SQR3_SQ6_2 (0x4UL << ADC_SQR3_SQ6_Pos) /*!< 0x08000000 */ +#define ADC_SQR3_SQ6_3 (0x8UL << ADC_SQR3_SQ6_Pos) /*!< 0x10000000 */ +#define ADC_SQR3_SQ6_4 (0x10UL << ADC_SQR3_SQ6_Pos) + +/*!< ADC_JSQR */ +#define ADC_JSQR_JSQ1_Pos (0U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x0000001F */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< JSQ1[4:0] bits (desc JSQ1) */ +#define ADC_JSQR_JSQ1_0 (0x1UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000001 */ +#define ADC_JSQR_JSQ1_1 (0x2UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000002 */ +#define ADC_JSQR_JSQ1_2 (0x4UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000004 */ +#define ADC_JSQR_JSQ1_3 (0x8UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000008 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000010 */ +#define ADC_JSQR_JSQ2_Pos (5U) +#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x000003E0 */ +#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< JSQ2[9:5] bits (desc JSQ2) */ +#define ADC_JSQR_JSQ2_0 (0x1UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000020 */ +#define ADC_JSQR_JSQ2_1 (0x2UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000040 */ +#define ADC_JSQR_JSQ2_2 (0x4UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000080 */ +#define ADC_JSQR_JSQ2_3 (0x8UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000100 */ +#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000200 */ +#define ADC_JSQR_JSQ3_Pos (10U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x00007C00 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< JSQ3[14:10] bits (desc JSQ3) */ +#define ADC_JSQR_JSQ3_0 (0x1UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ3_1 (0x2UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ3_2 (0x4UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00001000 */ +#define ADC_JSQR_JSQ3_3 (0x8UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00002000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00004000 */ +#define ADC_JSQR_JSQ4_Pos (15U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0x000F8000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< JSQ4[19:15] bits (desc JSQ4) */ +#define ADC_JSQR_JSQ4_0 (0x1UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00008000 */ +#define ADC_JSQR_JSQ4_1 (0x2UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00010000 */ +#define ADC_JSQR_JSQ4_2 (0x4UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00020000 */ +#define ADC_JSQR_JSQ4_3 (0x8UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00040000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00080000 */ +#define ADC_JSQR_JL_Pos (20U) +#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00300000 */ +#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< JL[21:20] bits (desc JL) */ +#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00100000 */ +#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00200000 */ + +/*!< ADC_JDR1 */ +#define ADC_JDR1_JDR1_Pos (0U) +#define ADC_JDR1_JDR1_Msk (0xFFFFUL << ADC_JDR1_JDR1_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR1_JDR1 ADC_JDR1_JDR1_Msk /*!< JDR1[15:0] bits (desc JDR1) */ + +/*!< ADC_JDR2 */ +#define ADC_JDR2_JDR2_Pos (0U) +#define ADC_JDR2_JDR2_Msk (0xFFFFUL << ADC_JDR2_JDR2_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR2_JDR2 ADC_JDR2_JDR2_Msk /*!< JDR2[15:0] bits (desc JDR2) */ + +/*!< ADC_JDR3 */ +#define ADC_JDR3_JDR3_Pos (0U) +#define ADC_JDR3_JDR3_Msk (0xFFFFUL << ADC_JDR3_JDR3_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR3_JDR3 ADC_JDR3_JDR3_Msk /*!< JDR3[15:0] bits (desc JDR3) */ + +/*!< ADC_JDR4 */ +#define ADC_JDR4_JDR4_Pos (0U) +#define ADC_JDR4_JDR4_Msk (0xFFFFUL << ADC_JDR4_JDR4_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR4_JDR4 ADC_JDR4_JDR4_Msk + +/*!< ADC_DR */ +#define ADC_DR_DATA_Pos (0U) +#define ADC_DR_DATA_Msk (0xFFFFUL << ADC_DR_DATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_DATA ADC_DR_DATA_Msk + +/*!< ADC_CCSR */ +#define ADC_CCSR_CALSEL_Pos (11U) +#define ADC_CCSR_CALSEL_Msk (0x1UL << ADC_CCSR_CALSEL_Pos) /*!< 0x00000800 */ +#define ADC_CCSR_CALSEL ADC_CCSR_CALSEL_Msk /*!< desc CALSEL */ +#define ADC_CCSR_CALSMP_Pos (12U) +#define ADC_CCSR_CALSMP_Msk (0x3UL << ADC_CCSR_CALSMP_Pos) /*!< 0x00003000 */ +#define ADC_CCSR_CALSMP ADC_CCSR_CALSMP_Msk /*!< CALSMP[13:12] bits (desc CALSMP) */ +#define ADC_CCSR_CALSMP_0 (0x1UL << ADC_CCSR_CALSMP_Pos) /*!< 0x00001000 */ +#define ADC_CCSR_CALSMP_1 (0x2UL << ADC_CCSR_CALSMP_Pos) /*!< 0x00002000 */ +#define ADC_CCSR_CALBYP_Pos (14U) +#define ADC_CCSR_CALBYP_Msk (0x1UL << ADC_CCSR_CALBYP_Pos) /*!< 0x00004000 */ +#define ADC_CCSR_CALBYP ADC_CCSR_CALBYP_Msk /*!< desc CALBYP */ +#define ADC_CCSR_CALSET_Pos (15U) +#define ADC_CCSR_CALSET_Msk (0x1UL << ADC_CCSR_CALSET_Pos) /*!< 0x00008000 */ +#define ADC_CCSR_CALSET ADC_CCSR_CALSET_Msk /*!< desc CALSET */ +#define ADC_CCSR_CALFAIL_Pos (30U) +#define ADC_CCSR_CALFAIL_Msk (0x1UL << ADC_CCSR_CALFAIL_Pos) /*!< 0x40000000 */ +#define ADC_CCSR_CALFAIL ADC_CCSR_CALFAIL_Msk /*!< desc CALFAIL */ +#define ADC_CCSR_CALON_Pos (31U) +#define ADC_CCSR_CALON_Msk (0x1UL << ADC_CCSR_CALON_Pos) /*!< 0x80000000 */ +#define ADC_CCSR_CALON ADC_CCSR_CALON_Msk + +/*!< ADC_CALRR1 */ +#define ADC_CALRR1_CALC10OUT_Pos (0U) +#define ADC_CALRR1_CALC10OUT_Msk (0xFFUL << ADC_CALRR1_CALC10OUT_Pos) /*!< 0x000000FF */ +#define ADC_CALRR1_CALC10OUT ADC_CALRR1_CALC10OUT_Msk /*!< CALC10OUT[7:0] bits (desc CALC10OUT) */ +#define ADC_CALRR1_CALC11OUT_Pos (8U) +#define ADC_CALRR1_CALC11OUT_Msk (0xFFUL << ADC_CALRR1_CALC11OUT_Pos) /*!< 0x0000FF00 */ +#define ADC_CALRR1_CALC11OUT ADC_CALRR1_CALC11OUT_Msk /*!< CALC11OUT[15:8] bits (desc CALC11OUT) */ +#define ADC_CALRR1_CALBOUT_Pos (16U) +#define ADC_CALRR1_CALBOUT_Msk (0x1FFUL << ADC_CALRR1_CALBOUT_Pos) /*!< 0x00FF0000 */ +#define ADC_CALRR1_CALBOUT ADC_CALRR1_CALBOUT_Msk + +/*!< ADC_CALRR2 */ +#define ADC_CALRR2_CALC6OUT_Pos (0U) +#define ADC_CALRR2_CALC6OUT_Msk (0xFFUL << ADC_CALRR2_CALC6OUT_Pos) /*!< 0x000000FF */ +#define ADC_CALRR2_CALC6OUT ADC_CALRR2_CALC6OUT_Msk /*!< CALC6OUT[7:0] bits (desc CALC6OUT) */ +#define ADC_CALRR2_CALC7OUT_Pos (8U) +#define ADC_CALRR2_CALC7OUT_Msk (0xFFUL << ADC_CALRR2_CALC7OUT_Pos) /*!< 0x0000FF00 */ +#define ADC_CALRR2_CALC7OUT ADC_CALRR2_CALC7OUT_Msk /*!< CALC7OUT[15:8] bits (desc CALC7OUT) */ +#define ADC_CALRR2_CALC8OUT_Pos (16U) +#define ADC_CALRR2_CALC8OUT_Msk (0xFFUL << ADC_CALRR2_CALC8OUT_Pos) /*!< 0x00FF0000 */ +#define ADC_CALRR2_CALC8OUT ADC_CALRR2_CALC8OUT_Msk /*!< CALC8OUT[23:16] bits (desc CALC8OUT) */ +#define ADC_CALRR2_CALC9OUT_Pos (24U) +#define ADC_CALRR2_CALC9OUT_Msk (0xFFUL << ADC_CALRR2_CALC9OUT_Pos) /*!< 0xFF000000 */ +#define ADC_CALRR2_CALC9OUT ADC_CALRR2_CALC9OUT_Msk /*!< CALC9OUT[31:24] bits (desc CALC9OUT) */ + +/*!< ADC_CALFIR1 */ +#define ADC_CALFIR1_CALC10IO_Pos (0U) +#define ADC_CALFIR1_CALC10IO_Msk (0xFFUL << ADC_CALFIR1_CALC10IO_Pos) /*!< 0x000000FF */ +#define ADC_CALFIR1_CALC10IO ADC_CALFIR1_CALC10IO_Msk /*!< CALC10IO[7:0] bits (desc CALC10IO) */ +#define ADC_CALFIR1_CALC11IO_Pos (8U) +#define ADC_CALFIR1_CALC11IO_Msk (0xFFUL << ADC_CALFIR1_CALC11IO_Pos) /*!< 0x0000FF00 */ +#define ADC_CALFIR1_CALC11IO ADC_CALFIR1_CALC11IO_Msk /*!< CALC11IO[15:8] bits (desc CALC11IO) */ +#define ADC_CALFIR1_CALBIO_Pos (16U) +#define ADC_CALFIR1_CALBIO_Msk (0x1FFUL << ADC_CALFIR1_CALBIO_Pos) /*!< 0x00FF0000 */ +#define ADC_CALFIR1_CALBIO ADC_CALFIR1_CALBIO_Msk + +/*!< ADC_CALFIR2 */ +#define ADC_CALFIR2_CALC6IO_Pos (0U) +#define ADC_CALFIR2_CALC6IO_Msk (0xFFUL << ADC_CALFIR2_CALC6IO_Pos) /*!< 0x000000FF */ +#define ADC_CALFIR2_CALC6IO ADC_CALFIR2_CALC6IO_Msk /*!< CALC6IO[7:0] bits (desc CALC6IO) */ +#define ADC_CALFIR2_CALC7IO_Pos (8U) +#define ADC_CALFIR2_CALC7IO_Msk (0xFFUL << ADC_CALFIR2_CALC7IO_Pos) /*!< 0x0000FF00 */ +#define ADC_CALFIR2_CALC7IO ADC_CALFIR2_CALC7IO_Msk /*!< CALC7IO[15:8] bits (desc CALC7IO) */ +#define ADC_CALFIR2_CALC8IO_Pos (16U) +#define ADC_CALFIR2_CALC8IO_Msk (0xFFUL << ADC_CALFIR2_CALC8IO_Pos) /*!< 0x00FF0000 */ +#define ADC_CALFIR2_CALC8IO ADC_CALFIR2_CALC8IO_Msk /*!< CALC8IO[23:16] bits (desc CALC8IO) */ +#define ADC_CALFIR2_CALC9IO_Pos (24U) +#define ADC_CALFIR2_CALC9IO_Msk (0xFFUL << ADC_CALFIR2_CALC9IO_Pos) /*!< 0xFF000000 */ +#define ADC_CALFIR2_CALC9IO ADC_CALFIR2_CALC9IO_Msk + +/****************************************************************************/ +/* */ +/* Controller Area Network(CAN) */ +/* */ +/****************************************************************************/ +/********************* Bits Define For Peripheral CAN *********************/ +/*!< CAN_TSNCR */ +#define CAN_TSNCR_VERSION_Pos (0U) +#define CAN_TSNCR_VERSION_Msk (0xFFFFUL << CAN_TSNCR_VERSION_Pos) /*!< 0x0000FFFF */ +#define CAN_TSNCR_VERSION CAN_TSNCR_VERSION_Msk /*!< VERSION[15:0] bits (desc VERSION) */ +#define CAN_TSNCR_CES_Pos (16U) +#define CAN_TSNCR_CES_Msk (0x1UL << CAN_TSNCR_CES_Pos) /*!< 0x00010000 */ +#define CAN_TSNCR_CES CAN_TSNCR_CES_Msk /*!< desc CES */ +#define CAN_TSNCR_ROP_Pos (17U) +#define CAN_TSNCR_ROP_Msk (0x1UL << CAN_TSNCR_ROP_Pos) /*!< 0x00020000 */ +#define CAN_TSNCR_ROP CAN_TSNCR_ROP_Msk /*!< desc ROP */ +#define CAN_TSNCR_TMSE_Pos (18U) +#define CAN_TSNCR_TMSE_Msk (0x1UL << CAN_TSNCR_TMSE_Pos) /*!< 0x00040000 */ +#define CAN_TSNCR_TMSE CAN_TSNCR_TMSE_Msk /*!< desc TMSE */ +#define CAN_TSNCR_TSEN_Pos (24U) +#define CAN_TSNCR_TSEN_Msk (0x1UL << CAN_TSNCR_TSEN_Pos) /*!< 0x01000000 */ +#define CAN_TSNCR_TSEN CAN_TSNCR_TSEN_Msk /*!< desc TSEN */ +#define CAN_TSNCR_TSPOS_Pos (25U) +#define CAN_TSNCR_TSPOS_Msk (0x1UL << CAN_TSNCR_TSPOS_Pos) /*!< 0x02000000 */ +#define CAN_TSNCR_TSPOS CAN_TSNCR_TSPOS_Msk /*!< desc TSPOS */ + +/*!< CAN_ACBTR */ +#define CAN_ACBTR_AC_SEG_1_Pos (0U) +#define CAN_ACBTR_AC_SEG_1_Msk (0x1FFUL << CAN_ACBTR_AC_SEG_1_Pos) /*!< 0x000001FF */ +#define CAN_ACBTR_AC_SEG_1 CAN_ACBTR_AC_SEG_1_Msk /*!< AC_SEG_1[8:0] bits (desc AC_SEG_1) */ +#define CAN_ACBTR_AC_SEG_2_Pos (16U) +#define CAN_ACBTR_AC_SEG_2_Msk (0x7FUL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x007F0000 */ +#define CAN_ACBTR_AC_SEG_2 CAN_ACBTR_AC_SEG_2_Msk /*!< AC_SEG_2[22:16] bits (desc AC_SEG_2) */ +#define CAN_ACBTR_AC_SEG_2_0 (0x1UL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x00010000 */ +#define CAN_ACBTR_AC_SEG_2_1 (0x2UL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x00020000 */ +#define CAN_ACBTR_AC_SEG_2_2 (0x4UL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x00040000 */ +#define CAN_ACBTR_AC_SEG_2_3 (0x8UL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x00080000 */ +#define CAN_ACBTR_AC_SEG_2_4 (0x10UL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x00100000 */ +#define CAN_ACBTR_AC_SEG_2_5 (0x20UL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x00200000 */ +#define CAN_ACBTR_AC_SEG_2_6 (0x40UL << CAN_ACBTR_AC_SEG_2_Pos) /*!< 0x00400000 */ +#define CAN_ACBTR_AC_SJW_Pos (24U) +#define CAN_ACBTR_AC_SJW_Msk (0x7FUL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x7F000000 */ +#define CAN_ACBTR_AC_SJW CAN_ACBTR_AC_SJW_Msk /*!< AC_SJW[30:24] bits (desc AC_SJW) */ +#define CAN_ACBTR_AC_SJW_0 (0x1UL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x01000000 */ +#define CAN_ACBTR_AC_SJW_1 (0x2UL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x02000000 */ +#define CAN_ACBTR_AC_SJW_2 (0x4UL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x04000000 */ +#define CAN_ACBTR_AC_SJW_3 (0x8UL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x08000000 */ +#define CAN_ACBTR_AC_SJW_4 (0x10UL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x10000000 */ +#define CAN_ACBTR_AC_SJW_5 (0x20UL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x20000000 */ +#define CAN_ACBTR_AC_SJW_6 (0x40UL << CAN_ACBTR_AC_SJW_Pos) /*!< 0x40000000 */ + +/*!< CAN_FDBTR */ +#define CAN_FDBTR_FD_SEG_1_Pos (0U) +#define CAN_FDBTR_FD_SEG_1_Msk (0xFFUL << CAN_FDBTR_FD_SEG_1_Pos) /*!< 0x000000FF */ +#define CAN_FDBTR_FD_SEG_1 CAN_FDBTR_FD_SEG_1_Msk /*!< FD_SEG_1[7:0] bits (desc FD_SEG_1) */ +#define CAN_FDBTR_FD_SEG_2_Pos (16U) +#define CAN_FDBTR_FD_SEG_2_Msk (0x7FUL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x007F0000 */ +#define CAN_FDBTR_FD_SEG_2 CAN_FDBTR_FD_SEG_2_Msk /*!< FD_SEG_2[22:16] bits (desc FD_SEG_2) */ +#define CAN_FDBTR_FD_SEG_2_0 (0x1UL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x00010000 */ +#define CAN_FDBTR_FD_SEG_2_1 (0x2UL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x00020000 */ +#define CAN_FDBTR_FD_SEG_2_2 (0x4UL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x00040000 */ +#define CAN_FDBTR_FD_SEG_2_3 (0x8UL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x00080000 */ +#define CAN_FDBTR_FD_SEG_2_4 (0x10UL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x00100000 */ +#define CAN_FDBTR_FD_SEG_2_5 (0x20UL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x00200000 */ +#define CAN_FDBTR_FD_SEG_2_6 (0x40UL << CAN_FDBTR_FD_SEG_2_Pos) /*!< 0x00400000 */ +#define CAN_FDBTR_FD_SJW_Pos (24U) +#define CAN_FDBTR_FD_SJW_Msk (0x7FUL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x7F000000 */ +#define CAN_FDBTR_FD_SJW CAN_FDBTR_FD_SJW_Msk /*!< FD_SJW[30:24] bits (desc FD_SJW) */ +#define CAN_FDBTR_FD_SJW_0 (0x1UL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x01000000 */ +#define CAN_FDBTR_FD_SJW_1 (0x2UL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x02000000 */ +#define CAN_FDBTR_FD_SJW_2 (0x4UL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x04000000 */ +#define CAN_FDBTR_FD_SJW_3 (0x8UL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x08000000 */ +#define CAN_FDBTR_FD_SJW_4 (0x10UL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x10000000 */ +#define CAN_FDBTR_FD_SJW_5 (0x20UL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x20000000 */ +#define CAN_FDBTR_FD_SJW_6 (0x40UL << CAN_FDBTR_FD_SJW_Pos) /*!< 0x40000000 */ + +/*!< CAN_XLBTR */ +#define CAN_XLBTR_XL_SEG_1_Pos (0U) +#define CAN_XLBTR_XL_SEG_1_Msk (0xFFUL << CAN_XLBTR_XL_SEG_1_Pos) /*!< 0x000000FF */ +#define CAN_XLBTR_XL_SEG_1 CAN_XLBTR_XL_SEG_1_Msk /*!< XL_SEG_1[7:0] bits (desc XL_SEG_1) */ +#define CAN_XLBTR_XL_SEG_2_Pos (16U) +#define CAN_XLBTR_XL_SEG_2_Msk (0x7FUL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x007F0000 */ +#define CAN_XLBTR_XL_SEG_2 CAN_XLBTR_XL_SEG_2_Msk /*!< XL_SEG_2[22:16] bits (desc XL_SEG_2) */ +#define CAN_XLBTR_XL_SEG_2_0 (0x1UL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x00010000 */ +#define CAN_XLBTR_XL_SEG_2_1 (0x2UL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x00020000 */ +#define CAN_XLBTR_XL_SEG_2_2 (0x4UL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x00040000 */ +#define CAN_XLBTR_XL_SEG_2_3 (0x8UL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x00080000 */ +#define CAN_XLBTR_XL_SEG_2_4 (0x10UL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x00100000 */ +#define CAN_XLBTR_XL_SEG_2_5 (0x20UL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x00200000 */ +#define CAN_XLBTR_XL_SEG_2_6 (0x40UL << CAN_XLBTR_XL_SEG_2_Pos) /*!< 0x00400000 */ +#define CAN_XLBTR_XL_SJW_Pos (24U) +#define CAN_XLBTR_XL_SJW_Msk (0x7FUL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x7F000000 */ +#define CAN_XLBTR_XL_SJW CAN_XLBTR_XL_SJW_Msk /*!< XL_SJW[30:24] bits (desc XL_SJW) */ +#define CAN_XLBTR_XL_SJW_0 (0x1UL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x01000000 */ +#define CAN_XLBTR_XL_SJW_1 (0x2UL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x02000000 */ +#define CAN_XLBTR_XL_SJW_2 (0x4UL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x04000000 */ +#define CAN_XLBTR_XL_SJW_3 (0x8UL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x08000000 */ +#define CAN_XLBTR_XL_SJW_4 (0x10UL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x10000000 */ +#define CAN_XLBTR_XL_SJW_5 (0x20UL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x20000000 */ +#define CAN_XLBTR_XL_SJW_6 (0x40UL << CAN_XLBTR_XL_SJW_Pos) /*!< 0x40000000 */ + +/*!< CAN_RLSSP */ +#define CAN_RLSSP_PRESC_Pos (0U) +#define CAN_RLSSP_PRESC_Msk (0x1FUL << CAN_RLSSP_PRESC_Pos) /*!< 0x0000001F */ +#define CAN_RLSSP_PRESC CAN_RLSSP_PRESC_Msk /*!< PRESC[4:0] bits (desc PRESC) */ +#define CAN_RLSSP_PRESC_0 (0x1UL << CAN_RLSSP_PRESC_Pos) /*!< 0x00000001 */ +#define CAN_RLSSP_PRESC_1 (0x2UL << CAN_RLSSP_PRESC_Pos) /*!< 0x00000002 */ +#define CAN_RLSSP_PRESC_2 (0x4UL << CAN_RLSSP_PRESC_Pos) /*!< 0x00000004 */ +#define CAN_RLSSP_PRESC_3 (0x8UL << CAN_RLSSP_PRESC_Pos) /*!< 0x00000008 */ +#define CAN_RLSSP_PRESC_4 (0x10UL << CAN_RLSSP_PRESC_Pos) /*!< 0x00000010 */ +#define CAN_RLSSP_FD_SSPOFF_Pos (8U) +#define CAN_RLSSP_FD_SSPOFF_Msk (0xFFUL << CAN_RLSSP_FD_SSPOFF_Pos) /*!< 0x0000FF00 */ +#define CAN_RLSSP_FD_SSPOFF CAN_RLSSP_FD_SSPOFF_Msk /*!< FD_SSPOFF[15:8] bits (desc FD_SSPOFF) */ +#define CAN_RLSSP_XL_SSPOFF_Pos (16U) +#define CAN_RLSSP_XL_SSPOFF_Msk (0xFFUL << CAN_RLSSP_XL_SSPOFF_Pos) /*!< 0x00FF0000 */ +#define CAN_RLSSP_XL_SSPOFF CAN_RLSSP_XL_SSPOFF_Msk /*!< XL_SSPOFF[23:16] bits (desc XL_SSPOFF) */ +#define CAN_RLSSP_REALIM_Pos (24U) +#define CAN_RLSSP_REALIM_Msk (0x7UL << CAN_RLSSP_REALIM_Pos) /*!< 0x07000000 */ +#define CAN_RLSSP_REALIM CAN_RLSSP_REALIM_Msk /*!< REALIM[26:24] bits (desc REALIM) */ +#define CAN_RLSSP_REALIM_0 (0x1UL << CAN_RLSSP_REALIM_Pos) /*!< 0x01000000 */ +#define CAN_RLSSP_REALIM_1 (0x2UL << CAN_RLSSP_REALIM_Pos) /*!< 0x02000000 */ +#define CAN_RLSSP_REALIM_2 (0x4UL << CAN_RLSSP_REALIM_Pos) /*!< 0x04000000 */ +#define CAN_RLSSP_RETLIM_Pos (28U) +#define CAN_RLSSP_RETLIM_Msk (0x7UL << CAN_RLSSP_RETLIM_Pos) /*!< 0x70000000 */ +#define CAN_RLSSP_RETLIM CAN_RLSSP_RETLIM_Msk /*!< RETLIM[30:28] bits (desc RETLIM) */ +#define CAN_RLSSP_RETLIM_0 (0x1UL << CAN_RLSSP_RETLIM_Pos) /*!< 0x10000000 */ +#define CAN_RLSSP_RETLIM_1 (0x2UL << CAN_RLSSP_RETLIM_Pos) /*!< 0x20000000 */ +#define CAN_RLSSP_RETLIM_2 (0x4UL << CAN_RLSSP_RETLIM_Pos) /*!< 0x40000000 */ + +/*!< CAN_IFR */ +#define CAN_IFR_AIF_Pos (0U) +#define CAN_IFR_AIF_Msk (0x1UL << CAN_IFR_AIF_Pos) /*!< 0x00000001 */ +#define CAN_IFR_AIF CAN_IFR_AIF_Msk /*!< desc AIF */ +#define CAN_IFR_EIF_Pos (1U) +#define CAN_IFR_EIF_Msk (0x1UL << CAN_IFR_EIF_Pos) /*!< 0x00000002 */ +#define CAN_IFR_EIF CAN_IFR_EIF_Msk /*!< desc EIF */ +#define CAN_IFR_TSIF_Pos (2U) +#define CAN_IFR_TSIF_Msk (0x1UL << CAN_IFR_TSIF_Pos) /*!< 0x00000004 */ +#define CAN_IFR_TSIF CAN_IFR_TSIF_Msk /*!< desc TSIF */ +#define CAN_IFR_TPIF_Pos (3U) +#define CAN_IFR_TPIF_Msk (0x1UL << CAN_IFR_TPIF_Pos) /*!< 0x00000008 */ +#define CAN_IFR_TPIF CAN_IFR_TPIF_Msk /*!< desc TPIF */ +#define CAN_IFR_RAFIF_Pos (4U) +#define CAN_IFR_RAFIF_Msk (0x1UL << CAN_IFR_RAFIF_Pos) /*!< 0x00000010 */ +#define CAN_IFR_RAFIF CAN_IFR_RAFIF_Msk /*!< desc RAFIF */ +#define CAN_IFR_RFIF_Pos (5U) +#define CAN_IFR_RFIF_Msk (0x1UL << CAN_IFR_RFIF_Pos) /*!< 0x00000020 */ +#define CAN_IFR_RFIF CAN_IFR_RFIF_Msk /*!< desc RFIF */ +#define CAN_IFR_ROIF_Pos (6U) +#define CAN_IFR_ROIF_Msk (0x1UL << CAN_IFR_ROIF_Pos) /*!< 0x00000040 */ +#define CAN_IFR_ROIF CAN_IFR_ROIF_Msk /*!< desc ROIF */ +#define CAN_IFR_RIF_Pos (7U) +#define CAN_IFR_RIF_Msk (0x1UL << CAN_IFR_RIF_Pos) /*!< 0x00000080 */ +#define CAN_IFR_RIF CAN_IFR_RIF_Msk /*!< desc RIF */ +#define CAN_IFR_BEIF_Pos (8U) +#define CAN_IFR_BEIF_Msk (0x1UL << CAN_IFR_BEIF_Pos) /*!< 0x00000100 */ +#define CAN_IFR_BEIF CAN_IFR_BEIF_Msk /*!< desc BEIF */ +#define CAN_IFR_ALIF_Pos (9U) +#define CAN_IFR_ALIF_Msk (0x1UL << CAN_IFR_ALIF_Pos) /*!< 0x00000200 */ +#define CAN_IFR_ALIF CAN_IFR_ALIF_Msk /*!< desc ALIF */ +#define CAN_IFR_EPIF_Pos (10U) +#define CAN_IFR_EPIF_Msk (0x1UL << CAN_IFR_EPIF_Pos) /*!< 0x00000400 */ +#define CAN_IFR_EPIF CAN_IFR_EPIF_Msk /*!< desc EPIF */ +#define CAN_IFR_TTIF_Pos (11U) +#define CAN_IFR_TTIF_Msk (0x1UL << CAN_IFR_TTIF_Pos) /*!< 0x00000800 */ +#define CAN_IFR_TTIF CAN_IFR_TTIF_Msk /*!< desc TTIF */ +#define CAN_IFR_TEIF_Pos (12U) +#define CAN_IFR_TEIF_Msk (0x1UL << CAN_IFR_TEIF_Pos) /*!< 0x00001000 */ +#define CAN_IFR_TEIF CAN_IFR_TEIF_Msk /*!< desc TEIF */ +#define CAN_IFR_WTIF_Pos (13U) +#define CAN_IFR_WTIF_Msk (0x1UL << CAN_IFR_WTIF_Pos) /*!< 0x00002000 */ +#define CAN_IFR_WTIF CAN_IFR_WTIF_Msk /*!< desc WTIF */ +#define CAN_IFR_MDWIF_Pos (14U) +#define CAN_IFR_MDWIF_Msk (0x1UL << CAN_IFR_MDWIF_Pos) /*!< 0x00004000 */ +#define CAN_IFR_MDWIF CAN_IFR_MDWIF_Msk /*!< desc MDWIF */ +#define CAN_IFR_MDEIF_Pos (15U) +#define CAN_IFR_MDEIF_Msk (0x1UL << CAN_IFR_MDEIF_Pos) /*!< 0x00008000 */ +#define CAN_IFR_MDEIF CAN_IFR_MDEIF_Msk /*!< desc MDEIF */ +#define CAN_IFR_MAEIF_Pos (16U) +#define CAN_IFR_MAEIF_Msk (0x1UL << CAN_IFR_MAEIF_Pos) /*!< 0x00010000 */ +#define CAN_IFR_MAEIF CAN_IFR_MAEIF_Msk /*!< desc MAEIF */ +#define CAN_IFR_SEIF_Pos (17U) +#define CAN_IFR_SEIF_Msk (0x1UL << CAN_IFR_SEIF_Pos) /*!< 0x00020000 */ +#define CAN_IFR_SEIF CAN_IFR_SEIF_Msk /*!< desc SEIF */ +#define CAN_IFR_SWIF_Pos (18U) +#define CAN_IFR_SWIF_Msk (0x1UL << CAN_IFR_SWIF_Pos) /*!< 0x00040000 */ +#define CAN_IFR_SWIF CAN_IFR_SWIF_Msk /*!< desc SWIF */ +#define CAN_IFR_EPASS_Pos (30U) +#define CAN_IFR_EPASS_Msk (0x1UL << CAN_IFR_EPASS_Pos) /*!< 0x40000000 */ +#define CAN_IFR_EPASS CAN_IFR_EPASS_Msk /*!< desc EPASS */ +#define CAN_IFR_EWARN_Pos (31U) +#define CAN_IFR_EWARN_Msk (0x1UL << CAN_IFR_EWARN_Pos) /*!< 0x80000000 */ +#define CAN_IFR_EWARN CAN_IFR_EWARN_Msk /*!< desc EWARN */ + +/*!< CAN_IER */ +#define CAN_IER_EIE_Pos (1U) +#define CAN_IER_EIE_Msk (0x1UL << CAN_IER_EIE_Pos) /*!< 0x00000002 */ +#define CAN_IER_EIE CAN_IER_EIE_Msk /*!< desc EIE */ +#define CAN_IER_TSIE_Pos (2U) +#define CAN_IER_TSIE_Msk (0x1UL << CAN_IER_TSIE_Pos) /*!< 0x00000004 */ +#define CAN_IER_TSIE CAN_IER_TSIE_Msk /*!< desc TSIE */ +#define CAN_IER_TPIE_Pos (3U) +#define CAN_IER_TPIE_Msk (0x1UL << CAN_IER_TPIE_Pos) /*!< 0x00000008 */ +#define CAN_IER_TPIE CAN_IER_TPIE_Msk /*!< desc TPIE */ +#define CAN_IER_RAFIE_Pos (4U) +#define CAN_IER_RAFIE_Msk (0x1UL << CAN_IER_RAFIE_Pos) /*!< 0x00000010 */ +#define CAN_IER_RAFIE CAN_IER_RAFIE_Msk /*!< desc RAFIE */ +#define CAN_IER_RFIE_Pos (5U) +#define CAN_IER_RFIE_Msk (0x1UL << CAN_IER_RFIE_Pos) /*!< 0x00000020 */ +#define CAN_IER_RFIE CAN_IER_RFIE_Msk /*!< desc RFIE */ +#define CAN_IER_ROIE_Pos (6U) +#define CAN_IER_ROIE_Msk (0x1UL << CAN_IER_ROIE_Pos) /*!< 0x00000040 */ +#define CAN_IER_ROIE CAN_IER_ROIE_Msk /*!< desc ROIE */ +#define CAN_IER_RIE_Pos (7U) +#define CAN_IER_RIE_Msk (0x1UL << CAN_IER_RIE_Pos) /*!< 0x00000080 */ +#define CAN_IER_RIE CAN_IER_RIE_Msk /*!< desc RIE */ +#define CAN_IER_BEIE_Pos (8U) +#define CAN_IER_BEIE_Msk (0x1UL << CAN_IER_BEIE_Pos) /*!< 0x00000100 */ +#define CAN_IER_BEIE CAN_IER_BEIE_Msk /*!< desc BEIE */ +#define CAN_IER_ALIE_Pos (9U) +#define CAN_IER_ALIE_Msk (0x1UL << CAN_IER_ALIE_Pos) /*!< 0x00000200 */ +#define CAN_IER_ALIE CAN_IER_ALIE_Msk /*!< desc ALIE */ +#define CAN_IER_EPIE_Pos (10U) +#define CAN_IER_EPIE_Msk (0x1UL << CAN_IER_EPIE_Pos) /*!< 0x00000400 */ +#define CAN_IER_EPIE CAN_IER_EPIE_Msk /*!< desc EPIE */ +#define CAN_IER_TTIE_Pos (11U) +#define CAN_IER_TTIE_Msk (0x1UL << CAN_IER_TTIE_Pos) /*!< 0x00000800 */ +#define CAN_IER_TTIE CAN_IER_TTIE_Msk /*!< desc TTIE */ +#define CAN_IER_WTIE_Pos (13U) +#define CAN_IER_WTIE_Msk (0x1UL << CAN_IER_WTIE_Pos) /*!< 0x00002000 */ +#define CAN_IER_WTIE CAN_IER_WTIE_Msk /*!< desc WTIE */ +#define CAN_IER_MDWIE_Pos (14U) +#define CAN_IER_MDWIE_Msk (0x1UL << CAN_IER_MDWIE_Pos) /*!< 0x00004000 */ +#define CAN_IER_MDWIE CAN_IER_MDWIE_Msk /*!< desc MDWIE */ +#define CAN_IER_SWIE_Pos (18U) +#define CAN_IER_SWIE_Msk (0x1UL << CAN_IER_SWIE_Pos) /*!< 0x00040000 */ +#define CAN_IER_SWIE CAN_IER_SWIE_Msk /*!< desc SWIE */ + +/*!< CAN_TSR */ +#define CAN_TSR_HANDLE_L_Pos (0U) +#define CAN_TSR_HANDLE_L_Msk (0xFFUL << CAN_TSR_HANDLE_L_Pos) /*!< 0x000000FF */ +#define CAN_TSR_HANDLE_L CAN_TSR_HANDLE_L_Msk /*!< HANDLE_L[7:0] bits (desc HANDLE_L) */ +#define CAN_TSR_TSTAT_L_Pos (8U) +#define CAN_TSR_TSTAT_L_Msk (0x7UL << CAN_TSR_TSTAT_L_Pos) /*!< 0x00000700 */ +#define CAN_TSR_TSTAT_L CAN_TSR_TSTAT_L_Msk /*!< TSTAT_L[10:8] bits (desc TSTAT_L) */ +#define CAN_TSR_TSTAT_L_0 (0x1UL << CAN_TSR_TSTAT_L_Pos) /*!< 0x00000100 */ +#define CAN_TSR_TSTAT_L_1 (0x2UL << CAN_TSR_TSTAT_L_Pos) /*!< 0x00000200 */ +#define CAN_TSR_TSTAT_L_2 (0x4UL << CAN_TSR_TSTAT_L_Pos) /*!< 0x00000400 */ +#define CAN_TSR_HANDLE_H_Pos (16U) +#define CAN_TSR_HANDLE_H_Msk (0xFFUL << CAN_TSR_HANDLE_H_Pos) /*!< 0x00FF0000 */ +#define CAN_TSR_HANDLE_H CAN_TSR_HANDLE_H_Msk /*!< HANDLE_H[23:16] bits (desc HANDLE_H) */ +#define CAN_TSR_TSTAT_H_Pos (24U) +#define CAN_TSR_TSTAT_H_Msk (0x7UL << CAN_TSR_TSTAT_H_Pos) /*!< 0x07000000 */ +#define CAN_TSR_TSTAT_H CAN_TSR_TSTAT_H_Msk /*!< TSTAT_H[26:24] bits (desc TSTAT_H) */ +#define CAN_TSR_TSTAT_H_0 (0x1UL << CAN_TSR_TSTAT_H_Pos) /*!< 0x01000000 */ +#define CAN_TSR_TSTAT_H_1 (0x2UL << CAN_TSR_TSTAT_H_Pos) /*!< 0x02000000 */ +#define CAN_TSR_TSTAT_H_2 (0x4UL << CAN_TSR_TSTAT_H_Pos) /*!< 0x04000000 */ + +/*!< CAN_TTSL */ +#define CAN_TTSL_TTS_Pos (0U) +#define CAN_TTSL_TTS_Msk (0xFFFFFFFFUL << CAN_TTSL_TTS_Pos) /*!< 0xFFFFFFFF */ +#define CAN_TTSL_TTS CAN_TTSL_TTS_Msk /*!< TTS[31:0] bits (desc TTS) */ + +/*!< CAN_TTSH */ +#define CAN_TTSH_TTS_Pos (0U) +#define CAN_TTSH_TTS_Msk (0xFFFFFFFFUL << CAN_TTSH_TTS_Pos) /*!< 0xFFFFFFFF */ +#define CAN_TTSH_TTS CAN_TTSH_TTS_Msk /*!< TTS[31:0] bits (desc TTS) */ + +/*!< CAN_MCR */ +#define CAN_MCR_BUSOFF_Pos (0U) +#define CAN_MCR_BUSOFF_Msk (0x1UL << CAN_MCR_BUSOFF_Pos) /*!< 0x00000001 */ +#define CAN_MCR_BUSOFF CAN_MCR_BUSOFF_Msk /*!< desc BUSOFF */ +#define CAN_MCR_LBMI_Pos (5U) +#define CAN_MCR_LBMI_Msk (0x1UL << CAN_MCR_LBMI_Pos) /*!< 0x00000020 */ +#define CAN_MCR_LBMI CAN_MCR_LBMI_Msk /*!< desc LBMI */ +#define CAN_MCR_LBME_Pos (6U) +#define CAN_MCR_LBME_Msk (0x1UL << CAN_MCR_LBME_Pos) /*!< 0x00000040 */ +#define CAN_MCR_LBME CAN_MCR_LBME_Msk /*!< desc LBME */ +#define CAN_MCR_RESET_Pos (7U) +#define CAN_MCR_RESET_Msk (0x1UL << CAN_MCR_RESET_Pos) /*!< 0x00000080 */ +#define CAN_MCR_RESET CAN_MCR_RESET_Msk /*!< desc RESET */ +#define CAN_MCR_TSA_Pos (8U) +#define CAN_MCR_TSA_Msk (0x1UL << CAN_MCR_TSA_Pos) /*!< 0x00000100 */ +#define CAN_MCR_TSA CAN_MCR_TSA_Msk /*!< desc TSA */ +#define CAN_MCR_TSALL_Pos (9U) +#define CAN_MCR_TSALL_Msk (0x1UL << CAN_MCR_TSALL_Pos) /*!< 0x00000200 */ +#define CAN_MCR_TSALL CAN_MCR_TSALL_Msk /*!< desc TSALL */ +#define CAN_MCR_TSONE_Pos (10U) +#define CAN_MCR_TSONE_Msk (0x1UL << CAN_MCR_TSONE_Pos) /*!< 0x00000400 */ +#define CAN_MCR_TSONE CAN_MCR_TSONE_Msk /*!< desc TSONE */ +#define CAN_MCR_TPA_Pos (11U) +#define CAN_MCR_TPA_Msk (0x1UL << CAN_MCR_TPA_Pos) /*!< 0x00000800 */ +#define CAN_MCR_TPA CAN_MCR_TPA_Msk /*!< desc TPA */ +#define CAN_MCR_TPE_Pos (12U) +#define CAN_MCR_TPE_Msk (0x1UL << CAN_MCR_TPE_Pos) /*!< 0x00001000 */ +#define CAN_MCR_TPE CAN_MCR_TPE_Msk /*!< desc TPE */ +#define CAN_MCR_STBY_Pos (13U) +#define CAN_MCR_STBY_Msk (0x1UL << CAN_MCR_STBY_Pos) /*!< 0x00002000 */ +#define CAN_MCR_STBY CAN_MCR_STBY_Msk /*!< desc STBY */ +#define CAN_MCR_LOM_Pos (14U) +#define CAN_MCR_LOM_Msk (0x1UL << CAN_MCR_LOM_Pos) /*!< 0x00004000 */ +#define CAN_MCR_LOM CAN_MCR_LOM_Msk /*!< desc LOM */ +#define CAN_MCR_TBSEL_Pos (15U) +#define CAN_MCR_TBSEL_Msk (0x1UL << CAN_MCR_TBSEL_Pos) /*!< 0x00008000 */ +#define CAN_MCR_TBSEL CAN_MCR_TBSEL_Msk /*!< desc TBSEL */ +#define CAN_MCR_TSSTAT_Pos (16U) +#define CAN_MCR_TSSTAT_Msk (0x3UL << CAN_MCR_TSSTAT_Pos) /*!< 0x00030000 */ +#define CAN_MCR_TSSTAT CAN_MCR_TSSTAT_Msk /*!< TSSTAT[17:16] bits (desc TSSTAT) */ +#define CAN_MCR_TSSTAT_0 (0x1UL << CAN_MCR_TSSTAT_Pos) /*!< 0x00010000 */ +#define CAN_MCR_TSSTAT_1 (0x2UL << CAN_MCR_TSSTAT_Pos) /*!< 0x00020000 */ +#define CAN_MCR_TSFF_Pos (18U) +#define CAN_MCR_TSFF_Msk (0x1UL << CAN_MCR_TSFF_Pos) /*!< 0x00040000 */ +#define CAN_MCR_TSFF CAN_MCR_TSFF_Msk /*!< desc TSFF */ +#define CAN_MCR_TTTBM_Pos (20U) +#define CAN_MCR_TTTBM_Msk (0x1UL << CAN_MCR_TTTBM_Pos) /*!< 0x00100000 */ +#define CAN_MCR_TTTBM CAN_MCR_TTTBM_Msk /*!< desc TTTBM */ +#define CAN_MCR_TSMODE_Pos (21U) +#define CAN_MCR_TSMODE_Msk (0x1UL << CAN_MCR_TSMODE_Pos) /*!< 0x00200000 */ +#define CAN_MCR_TSMODE CAN_MCR_TSMODE_Msk /*!< desc TSMODE */ +#define CAN_MCR_TSNEXT_Pos (22U) +#define CAN_MCR_TSNEXT_Msk (0x1UL << CAN_MCR_TSNEXT_Pos) /*!< 0x00400000 */ +#define CAN_MCR_TSNEXT CAN_MCR_TSNEXT_Msk /*!< desc TSNEXT */ +#define CAN_MCR_FD_ISO_Pos (23U) +#define CAN_MCR_FD_ISO_Msk (0x1UL << CAN_MCR_FD_ISO_Pos) /*!< 0x00800000 */ +#define CAN_MCR_FD_ISO CAN_MCR_FD_ISO_Msk /*!< desc FD_ISO */ +#define CAN_MCR_RSTAT_Pos (24U) +#define CAN_MCR_RSTAT_Msk (0x3UL << CAN_MCR_RSTAT_Pos) /*!< 0x03000000 */ +#define CAN_MCR_RSTAT CAN_MCR_RSTAT_Msk /*!< RSTAT[25:24] bits (desc RSTAT) */ +#define CAN_MCR_RSTAT_0 (0x1UL << CAN_MCR_RSTAT_Pos) /*!< 0x01000000 */ +#define CAN_MCR_RSTAT_1 (0x2UL << CAN_MCR_RSTAT_Pos) /*!< 0x02000000 */ +#define CAN_MCR_RBALL_Pos (27U) +#define CAN_MCR_RBALL_Msk (0x1UL << CAN_MCR_RBALL_Pos) /*!< 0x08000000 */ +#define CAN_MCR_RBALL CAN_MCR_RBALL_Msk /*!< desc RBALL */ +#define CAN_MCR_RREL_Pos (28U) +#define CAN_MCR_RREL_Msk (0x1UL << CAN_MCR_RREL_Pos) /*!< 0x10000000 */ +#define CAN_MCR_RREL CAN_MCR_RREL_Msk /*!< desc RREL */ +#define CAN_MCR_ROV_Pos (29U) +#define CAN_MCR_ROV_Msk (0x1UL << CAN_MCR_ROV_Pos) /*!< 0x20000000 */ +#define CAN_MCR_ROV CAN_MCR_ROV_Msk /*!< desc ROV */ +#define CAN_MCR_ROM_Pos (30U) +#define CAN_MCR_ROM_Msk (0x1UL << CAN_MCR_ROM_Pos) /*!< 0x40000000 */ +#define CAN_MCR_ROM CAN_MCR_ROM_Msk /*!< desc ROM */ +#define CAN_MCR_SACK_Pos (31U) +#define CAN_MCR_SACK_Msk (0x1UL << CAN_MCR_SACK_Pos) /*!< 0x80000000 */ +#define CAN_MCR_SACK CAN_MCR_SACK_Msk /*!< desc SACK */ + +/*!< CAN_WECR */ +#define CAN_WECR_EWL_Pos (0U) +#define CAN_WECR_EWL_Msk (0xFUL << CAN_WECR_EWL_Pos) /*!< 0x0000000F */ +#define CAN_WECR_EWL CAN_WECR_EWL_Msk /*!< EWL[3:0] bits (desc EWL) */ +#define CAN_WECR_EWL_0 (0x1UL << CAN_WECR_EWL_Pos) /*!< 0x00000001 */ +#define CAN_WECR_EWL_1 (0x2UL << CAN_WECR_EWL_Pos) /*!< 0x00000002 */ +#define CAN_WECR_EWL_2 (0x4UL << CAN_WECR_EWL_Pos) /*!< 0x00000004 */ +#define CAN_WECR_EWL_3 (0x8UL << CAN_WECR_EWL_Pos) /*!< 0x00000008 */ +#define CAN_WECR_AFWL_Pos (4U) +#define CAN_WECR_AFWL_Msk (0xFUL << CAN_WECR_AFWL_Pos) /*!< 0x000000F0 */ +#define CAN_WECR_AFWL CAN_WECR_AFWL_Msk /*!< AFWL[7:4] bits (desc AFWL) */ +#define CAN_WECR_AFWL_0 (0x1UL << CAN_WECR_AFWL_Pos) /*!< 0x00000010 */ +#define CAN_WECR_AFWL_1 (0x2UL << CAN_WECR_AFWL_Pos) /*!< 0x00000020 */ +#define CAN_WECR_AFWL_2 (0x4UL << CAN_WECR_AFWL_Pos) /*!< 0x00000040 */ +#define CAN_WECR_AFWL_3 (0x8UL << CAN_WECR_AFWL_Pos) /*!< 0x00000080 */ +#define CAN_WECR_ALC_Pos (8U) +#define CAN_WECR_ALC_Msk (0x1FUL << CAN_WECR_ALC_Pos) /*!< 0x00001F00 */ +#define CAN_WECR_ALC CAN_WECR_ALC_Msk /*!< ALC[12:8] bits (desc ALC) */ +#define CAN_WECR_ALC_0 (0x1UL << CAN_WECR_ALC_Pos) /*!< 0x00000100 */ +#define CAN_WECR_ALC_1 (0x2UL << CAN_WECR_ALC_Pos) /*!< 0x00000200 */ +#define CAN_WECR_ALC_2 (0x4UL << CAN_WECR_ALC_Pos) /*!< 0x00000400 */ +#define CAN_WECR_ALC_3 (0x8UL << CAN_WECR_ALC_Pos) /*!< 0x00000800 */ +#define CAN_WECR_ALC_4 (0x10UL << CAN_WECR_ALC_Pos) /*!< 0x00001000 */ +#define CAN_WECR_KOER_Pos (13U) +#define CAN_WECR_KOER_Msk (0x7UL << CAN_WECR_KOER_Pos) /*!< 0x0000E000 */ +#define CAN_WECR_KOER CAN_WECR_KOER_Msk /*!< KOER[15:13] bits (desc KOER) */ +#define CAN_WECR_KOER_0 (0x1UL << CAN_WECR_KOER_Pos) /*!< 0x00002000 */ +#define CAN_WECR_KOER_1 (0x2UL << CAN_WECR_KOER_Pos) /*!< 0x00004000 */ +#define CAN_WECR_KOER_2 (0x4UL << CAN_WECR_KOER_Pos) /*!< 0x00008000 */ +#define CAN_WECR_RECNT_Pos (16U) +#define CAN_WECR_RECNT_Msk (0xFFUL << CAN_WECR_RECNT_Pos) /*!< 0x00FF0000 */ +#define CAN_WECR_RECNT CAN_WECR_RECNT_Msk /*!< RECNT[23:16] bits (desc RECNT) */ +#define CAN_WECR_TECNT_Pos (24U) +#define CAN_WECR_TECNT_Msk (0xFFUL << CAN_WECR_TECNT_Pos) /*!< 0xFF000000 */ +#define CAN_WECR_TECNT CAN_WECR_TECNT_Msk /*!< TECNT[31:24] bits (desc TECNT) */ + +/*!< CAN_REFMSG */ +#define CAN_REFMSG_REF_ID_Pos (0U) +#define CAN_REFMSG_REF_ID_Msk (0x1FFFFFFFUL << CAN_REFMSG_REF_ID_Pos) /*!< 0x1FFFFFFF */ +#define CAN_REFMSG_REF_ID CAN_REFMSG_REF_ID_Msk /*!< REF_ID[28:0] bits (desc REF_ID) */ +#define CAN_REFMSG_REF_IDE_Pos (31U) +#define CAN_REFMSG_REF_IDE_Msk (0x1UL << CAN_REFMSG_REF_IDE_Pos) /*!< 0x80000000 */ +#define CAN_REFMSG_REF_IDE CAN_REFMSG_REF_IDE_Msk /*!< desc REF_IDE */ + +/*!< CAN_TTCR */ +#define CAN_TTCR_TTPTR_Pos (0U) +#define CAN_TTCR_TTPTR_Msk (0x3FUL << CAN_TTCR_TTPTR_Pos) /*!< 0x0000003F */ +#define CAN_TTCR_TTPTR CAN_TTCR_TTPTR_Msk /*!< TTPTR[5:0] bits (desc TTPTR) */ +#define CAN_TTCR_TTPTR_0 (0x1UL << CAN_TTCR_TTPTR_Pos) /*!< 0x00000001 */ +#define CAN_TTCR_TTPTR_1 (0x2UL << CAN_TTCR_TTPTR_Pos) /*!< 0x00000002 */ +#define CAN_TTCR_TTPTR_2 (0x4UL << CAN_TTCR_TTPTR_Pos) /*!< 0x00000004 */ +#define CAN_TTCR_TTPTR_3 (0x8UL << CAN_TTCR_TTPTR_Pos) /*!< 0x00000008 */ +#define CAN_TTCR_TTPTR_4 (0x10UL << CAN_TTCR_TTPTR_Pos) /*!< 0x00000010 */ +#define CAN_TTCR_TTPTR_5 (0x20UL << CAN_TTCR_TTPTR_Pos) /*!< 0x00000020 */ +#define CAN_TTCR_TTYPE_Pos (8U) +#define CAN_TTCR_TTYPE_Msk (0x7UL << CAN_TTCR_TTYPE_Pos) /*!< 0x00000700 */ +#define CAN_TTCR_TTYPE CAN_TTCR_TTYPE_Msk /*!< TTYPE[10:8] bits (desc TTYPE) */ +#define CAN_TTCR_TTYPE_0 (0x1UL << CAN_TTCR_TTYPE_Pos) /*!< 0x00000100 */ +#define CAN_TTCR_TTYPE_1 (0x2UL << CAN_TTCR_TTYPE_Pos) /*!< 0x00000200 */ +#define CAN_TTCR_TTYPE_2 (0x4UL << CAN_TTCR_TTYPE_Pos) /*!< 0x00000400 */ +#define CAN_TTCR_TEW_Pos (12U) +#define CAN_TTCR_TEW_Msk (0xFUL << CAN_TTCR_TEW_Pos) /*!< 0x0000F000 */ +#define CAN_TTCR_TEW CAN_TTCR_TEW_Msk /*!< TEW[15:12] bits (desc TEW) */ +#define CAN_TTCR_TEW_0 (0x1UL << CAN_TTCR_TEW_Pos) /*!< 0x00001000 */ +#define CAN_TTCR_TEW_1 (0x2UL << CAN_TTCR_TEW_Pos) /*!< 0x00002000 */ +#define CAN_TTCR_TEW_2 (0x4UL << CAN_TTCR_TEW_Pos) /*!< 0x00004000 */ +#define CAN_TTCR_TEW_3 (0x8UL << CAN_TTCR_TEW_Pos) /*!< 0x00008000 */ +#define CAN_TTCR_TBPTR_Pos (16U) +#define CAN_TTCR_TBPTR_Msk (0x3FUL << CAN_TTCR_TBPTR_Pos) /*!< 0x003F0000 */ +#define CAN_TTCR_TBPTR CAN_TTCR_TBPTR_Msk /*!< TBPTR[21:16] bits (desc TBPTR) */ +#define CAN_TTCR_TBPTR_0 (0x1UL << CAN_TTCR_TBPTR_Pos) /*!< 0x00010000 */ +#define CAN_TTCR_TBPTR_1 (0x2UL << CAN_TTCR_TBPTR_Pos) /*!< 0x00020000 */ +#define CAN_TTCR_TBPTR_2 (0x4UL << CAN_TTCR_TBPTR_Pos) /*!< 0x00040000 */ +#define CAN_TTCR_TBPTR_3 (0x8UL << CAN_TTCR_TBPTR_Pos) /*!< 0x00080000 */ +#define CAN_TTCR_TBPTR_4 (0x10UL << CAN_TTCR_TBPTR_Pos) /*!< 0x00100000 */ +#define CAN_TTCR_TBPTR_5 (0x20UL << CAN_TTCR_TBPTR_Pos) /*!< 0x00200000 */ +#define CAN_TTCR_TBF_Pos (22U) +#define CAN_TTCR_TBF_Msk (0x1UL << CAN_TTCR_TBF_Pos) /*!< 0x00400000 */ +#define CAN_TTCR_TBF CAN_TTCR_TBF_Msk /*!< desc TBF */ +#define CAN_TTCR_TBE_Pos (23U) +#define CAN_TTCR_TBE_Msk (0x1UL << CAN_TTCR_TBE_Pos) /*!< 0x00800000 */ +#define CAN_TTCR_TBE CAN_TTCR_TBE_Msk /*!< desc TBE */ +#define CAN_TTCR_TTEN_Pos (24U) +#define CAN_TTCR_TTEN_Msk (0x1UL << CAN_TTCR_TTEN_Pos) /*!< 0x01000000 */ +#define CAN_TTCR_TTEN CAN_TTCR_TTEN_Msk /*!< desc TTEN */ +#define CAN_TTCR_T_PRESC_Pos (25U) +#define CAN_TTCR_T_PRESC_Msk (0x3UL << CAN_TTCR_T_PRESC_Pos) /*!< 0x06000000 */ +#define CAN_TTCR_T_PRESC CAN_TTCR_T_PRESC_Msk /*!< T_PRESC[26:25] bits (desc T_PRESC) */ +#define CAN_TTCR_T_PRESC_0 (0x1UL << CAN_TTCR_T_PRESC_Pos) /*!< 0x02000000 */ +#define CAN_TTCR_T_PRESC_1 (0x2UL << CAN_TTCR_T_PRESC_Pos) /*!< 0x04000000 */ + +/*!< CAN_TTTR */ +#define CAN_TTTR_TT_TRIG_Pos (0U) +#define CAN_TTTR_TT_TRIG_Msk (0xFFFFUL << CAN_TTTR_TT_TRIG_Pos) /*!< 0x0000FFFF */ +#define CAN_TTTR_TT_TRIG CAN_TTTR_TT_TRIG_Msk /*!< TT_TRIG[15:0] bits (desc TT_TRIG) */ +#define CAN_TTTR_TT_WTRIG_Pos (16U) +#define CAN_TTTR_TT_WTRIG_Msk (0xFFFFUL << CAN_TTTR_TT_WTRIG_Pos) /*!< 0xFFFF0000 */ +#define CAN_TTTR_TT_WTRIG CAN_TTTR_TT_WTRIG_Msk /*!< TT_WTRIG[31:16] bits (desc TT_WTRIG) */ + +/*!< CAN_SCMS */ +#define CAN_SCMS_XMREN_Pos (0U) +#define CAN_SCMS_XMREN_Msk (0x1UL << CAN_SCMS_XMREN_Pos) /*!< 0x00000001 */ +#define CAN_SCMS_XMREN CAN_SCMS_XMREN_Msk /*!< desc XMREN */ +#define CAN_SCMS_FSTIM_Pos (1U) +#define CAN_SCMS_FSTIM_Msk (0x7UL << CAN_SCMS_FSTIM_Pos) /*!< 0x0000000E */ +#define CAN_SCMS_FSTIM CAN_SCMS_FSTIM_Msk /*!< FSTIM[3:1] bits (desc FSTIM) */ +#define CAN_SCMS_FSTIM_0 (0x1UL << CAN_SCMS_FSTIM_Pos) /*!< 0x00000002 */ +#define CAN_SCMS_FSTIM_1 (0x2UL << CAN_SCMS_FSTIM_Pos) /*!< 0x00000004 */ +#define CAN_SCMS_FSTIM_2 (0x4UL << CAN_SCMS_FSTIM_Pos) /*!< 0x00000008 */ +#define CAN_SCMS_ACFA_Pos (24U) +#define CAN_SCMS_ACFA_Msk (0x1UL << CAN_SCMS_ACFA_Pos) /*!< 0x01000000 */ +#define CAN_SCMS_ACFA CAN_SCMS_ACFA_Msk /*!< desc ACFA */ +#define CAN_SCMS_TXS_Pos (25U) +#define CAN_SCMS_TXS_Msk (0x1UL << CAN_SCMS_TXS_Pos) /*!< 0x02000000 */ +#define CAN_SCMS_TXS CAN_SCMS_TXS_Msk /*!< desc TXS */ +#define CAN_SCMS_TXB_Pos (26U) +#define CAN_SCMS_TXB_Msk (0x1UL << CAN_SCMS_TXB_Pos) /*!< 0x04000000 */ +#define CAN_SCMS_TXB CAN_SCMS_TXB_Msk /*!< desc TXB */ +#define CAN_SCMS_HELOC_Pos (27U) +#define CAN_SCMS_HELOC_Msk (0x3UL << CAN_SCMS_HELOC_Pos) /*!< 0x18000000 */ +#define CAN_SCMS_HELOC CAN_SCMS_HELOC_Msk /*!< HELOC[28:27] bits (desc HELOC) */ +#define CAN_SCMS_HELOC_0 (0x1UL << CAN_SCMS_HELOC_Pos) /*!< 0x08000000 */ +#define CAN_SCMS_HELOC_1 (0x2UL << CAN_SCMS_HELOC_Pos) /*!< 0x10000000 */ +#define CAN_SCMS_MPEN_Pos (31U) +#define CAN_SCMS_MPEN_Msk (0x1UL << CAN_SCMS_MPEN_Pos) /*!< 0x80000000 */ +#define CAN_SCMS_MPEN CAN_SCMS_MPEN_Msk /*!< desc MPEN */ + +/*!< CAN_MESR */ +#define CAN_MESR_MEBP1_Pos (0U) +#define CAN_MESR_MEBP1_Msk (0x3FUL << CAN_MESR_MEBP1_Pos) /*!< 0x0000003F */ +#define CAN_MESR_MEBP1 CAN_MESR_MEBP1_Msk /*!< MEBP1[5:0] bits (desc MEBP1) */ +#define CAN_MESR_MEBP1_0 (0x1UL << CAN_MESR_MEBP1_Pos) /*!< 0x00000001 */ +#define CAN_MESR_MEBP1_1 (0x2UL << CAN_MESR_MEBP1_Pos) /*!< 0x00000002 */ +#define CAN_MESR_MEBP1_2 (0x4UL << CAN_MESR_MEBP1_Pos) /*!< 0x00000004 */ +#define CAN_MESR_MEBP1_3 (0x8UL << CAN_MESR_MEBP1_Pos) /*!< 0x00000008 */ +#define CAN_MESR_MEBP1_4 (0x10UL << CAN_MESR_MEBP1_Pos) /*!< 0x00000010 */ +#define CAN_MESR_MEBP1_5 (0x20UL << CAN_MESR_MEBP1_Pos) /*!< 0x00000020 */ +#define CAN_MESR_ME1EE_Pos (6U) +#define CAN_MESR_ME1EE_Msk (0x1UL << CAN_MESR_ME1EE_Pos) /*!< 0x00000040 */ +#define CAN_MESR_ME1EE CAN_MESR_ME1EE_Msk /*!< desc ME1EE */ +#define CAN_MESR_MEAEE_Pos (7U) +#define CAN_MESR_MEAEE_Msk (0x1UL << CAN_MESR_MEAEE_Pos) /*!< 0x00000080 */ +#define CAN_MESR_MEAEE CAN_MESR_MEAEE_Msk /*!< desc MEAEE */ +#define CAN_MESR_MEBP2_Pos (8U) +#define CAN_MESR_MEBP2_Msk (0x3FUL << CAN_MESR_MEBP2_Pos) /*!< 0x00003F00 */ +#define CAN_MESR_MEBP2 CAN_MESR_MEBP2_Msk /*!< MEBP2[13:8] bits (desc MEBP2) */ +#define CAN_MESR_MEBP2_0 (0x1UL << CAN_MESR_MEBP2_Pos) /*!< 0x00000100 */ +#define CAN_MESR_MEBP2_1 (0x2UL << CAN_MESR_MEBP2_Pos) /*!< 0x00000200 */ +#define CAN_MESR_MEBP2_2 (0x4UL << CAN_MESR_MEBP2_Pos) /*!< 0x00000400 */ +#define CAN_MESR_MEBP2_3 (0x8UL << CAN_MESR_MEBP2_Pos) /*!< 0x00000800 */ +#define CAN_MESR_MEBP2_4 (0x10UL << CAN_MESR_MEBP2_Pos) /*!< 0x00001000 */ +#define CAN_MESR_MEBP2_5 (0x20UL << CAN_MESR_MEBP2_Pos) /*!< 0x00002000 */ +#define CAN_MESR_ME2EE_Pos (14U) +#define CAN_MESR_ME2EE_Msk (0x1UL << CAN_MESR_ME2EE_Pos) /*!< 0x00004000 */ +#define CAN_MESR_ME2EE CAN_MESR_ME2EE_Msk /*!< desc ME2EE */ +#define CAN_MESR_MEEEC_Pos (16U) +#define CAN_MESR_MEEEC_Msk (0xFUL << CAN_MESR_MEEEC_Pos) /*!< 0x000F0000 */ +#define CAN_MESR_MEEEC CAN_MESR_MEEEC_Msk /*!< MEEEC[19:16] bits (desc MEEEC) */ +#define CAN_MESR_MEEEC_0 (0x1UL << CAN_MESR_MEEEC_Pos) /*!< 0x00010000 */ +#define CAN_MESR_MEEEC_1 (0x2UL << CAN_MESR_MEEEC_Pos) /*!< 0x00020000 */ +#define CAN_MESR_MEEEC_2 (0x4UL << CAN_MESR_MEEEC_Pos) /*!< 0x00040000 */ +#define CAN_MESR_MEEEC_3 (0x8UL << CAN_MESR_MEEEC_Pos) /*!< 0x00080000 */ +#define CAN_MESR_MENEC_Pos (20U) +#define CAN_MESR_MENEC_Msk (0xFUL << CAN_MESR_MENEC_Pos) /*!< 0x00F00000 */ +#define CAN_MESR_MENEC CAN_MESR_MENEC_Msk /*!< MENEC[23:20] bits (desc MENEC) */ +#define CAN_MESR_MENEC_0 (0x1UL << CAN_MESR_MENEC_Pos) /*!< 0x00100000 */ +#define CAN_MESR_MENEC_1 (0x2UL << CAN_MESR_MENEC_Pos) /*!< 0x00200000 */ +#define CAN_MESR_MENEC_2 (0x4UL << CAN_MESR_MENEC_Pos) /*!< 0x00400000 */ +#define CAN_MESR_MENEC_3 (0x8UL << CAN_MESR_MENEC_Pos) /*!< 0x00800000 */ +#define CAN_MESR_MEL_Pos (24U) +#define CAN_MESR_MEL_Msk (0x3UL << CAN_MESR_MEL_Pos) /*!< 0x03000000 */ +#define CAN_MESR_MEL CAN_MESR_MEL_Msk /*!< MEL[25:24] bits (desc MEL) */ +#define CAN_MESR_MEL_0 (0x1UL << CAN_MESR_MEL_Pos) /*!< 0x01000000 */ +#define CAN_MESR_MEL_1 (0x2UL << CAN_MESR_MEL_Pos) /*!< 0x02000000 */ +#define CAN_MESR_MES_Pos (26U) +#define CAN_MESR_MES_Msk (0x1UL << CAN_MESR_MES_Pos) /*!< 0x04000000 */ +#define CAN_MESR_MES CAN_MESR_MES_Msk /*!< desc MES */ + +/*!< CAN_ACFCR */ +#define CAN_ACFCR_ACFADR_Pos (0U) +#define CAN_ACFCR_ACFADR_Msk (0xFUL << CAN_ACFCR_ACFADR_Pos) /*!< 0x0000000F */ +#define CAN_ACFCR_ACFADR CAN_ACFCR_ACFADR_Msk /*!< ACFADR[3:0] bits (desc ACFADR) */ +#define CAN_ACFCR_ACFADR_0 (0x1UL << CAN_ACFCR_ACFADR_Pos) /*!< 0x00000001 */ +#define CAN_ACFCR_ACFADR_1 (0x2UL << CAN_ACFCR_ACFADR_Pos) /*!< 0x00000002 */ +#define CAN_ACFCR_ACFADR_2 (0x4UL << CAN_ACFCR_ACFADR_Pos) /*!< 0x00000004 */ +#define CAN_ACFCR_ACFADR_3 (0x8UL << CAN_ACFCR_ACFADR_Pos) /*!< 0x00000008 */ +#define CAN_ACFCR_AE_0_Pos (16U) +#define CAN_ACFCR_AE_0_Msk (0x1UL << CAN_ACFCR_AE_0_Pos) /*!< 0x00010000 */ +#define CAN_ACFCR_AE_0 CAN_ACFCR_AE_0_Msk /*!< desc AE_0 */ +#define CAN_ACFCR_AE_1_Pos (17U) +#define CAN_ACFCR_AE_1_Msk (0x1UL << CAN_ACFCR_AE_1_Pos) /*!< 0x00020000 */ +#define CAN_ACFCR_AE_1 CAN_ACFCR_AE_1_Msk /*!< desc AE_1 */ +#define CAN_ACFCR_AE_2_Pos (18U) +#define CAN_ACFCR_AE_2_Msk (0x1UL << CAN_ACFCR_AE_2_Pos) /*!< 0x00040000 */ +#define CAN_ACFCR_AE_2 CAN_ACFCR_AE_2_Msk /*!< desc AE_2 */ +#define CAN_ACFCR_AE_3_Pos (19U) +#define CAN_ACFCR_AE_3_Msk (0x1UL << CAN_ACFCR_AE_3_Pos) /*!< 0x00080000 */ +#define CAN_ACFCR_AE_3 CAN_ACFCR_AE_3_Msk /*!< desc AE_3 */ +#define CAN_ACFCR_AE_4_Pos (20U) +#define CAN_ACFCR_AE_4_Msk (0x1UL << CAN_ACFCR_AE_4_Pos) /*!< 0x00100000 */ +#define CAN_ACFCR_AE_4 CAN_ACFCR_AE_4_Msk /*!< desc AE_4 */ +#define CAN_ACFCR_AE_5_Pos (21U) +#define CAN_ACFCR_AE_5_Msk (0x1UL << CAN_ACFCR_AE_5_Pos) /*!< 0x00200000 */ +#define CAN_ACFCR_AE_5 CAN_ACFCR_AE_5_Msk /*!< desc AE_5 */ +#define CAN_ACFCR_AE_6_Pos (22U) +#define CAN_ACFCR_AE_6_Msk (0x1UL << CAN_ACFCR_AE_6_Pos) /*!< 0x00400000 */ +#define CAN_ACFCR_AE_6 CAN_ACFCR_AE_6_Msk /*!< desc AE_6 */ +#define CAN_ACFCR_AE_7_Pos (23U) +#define CAN_ACFCR_AE_7_Msk (0x1UL << CAN_ACFCR_AE_7_Pos) /*!< 0x00800000 */ +#define CAN_ACFCR_AE_7 CAN_ACFCR_AE_7_Msk /*!< desc AE_7 */ +#define CAN_ACFCR_AE_8_Pos (24U) +#define CAN_ACFCR_AE_8_Msk (0x1UL << CAN_ACFCR_AE_8_Pos) /*!< 0x01000000 */ +#define CAN_ACFCR_AE_8 CAN_ACFCR_AE_8_Msk /*!< desc AE_8 */ +#define CAN_ACFCR_AE_9_Pos (25U) +#define CAN_ACFCR_AE_9_Msk (0x1UL << CAN_ACFCR_AE_9_Pos) /*!< 0x02000000 */ +#define CAN_ACFCR_AE_9 CAN_ACFCR_AE_9_Msk /*!< desc AE_9 */ +#define CAN_ACFCR_AE_10_Pos (26U) +#define CAN_ACFCR_AE_10_Msk (0x1UL << CAN_ACFCR_AE_10_Pos) /*!< 0x04000000 */ +#define CAN_ACFCR_AE_10 CAN_ACFCR_AE_10_Msk /*!< desc AE_10 */ +#define CAN_ACFCR_AE_11_Pos (27U) +#define CAN_ACFCR_AE_11_Msk (0x1UL << CAN_ACFCR_AE_11_Pos) /*!< 0x08000000 */ +#define CAN_ACFCR_AE_11 CAN_ACFCR_AE_11_Msk /*!< desc AE_11 */ +#define CAN_ACFCR_AE_12_Pos (28U) +#define CAN_ACFCR_AE_12_Msk (0x1UL << CAN_ACFCR_AE_12_Pos) /*!< 0x10000000 */ +#define CAN_ACFCR_AE_12 CAN_ACFCR_AE_12_Msk /*!< desc AE_12 */ +#define CAN_ACFCR_AE_13_Pos (29U) +#define CAN_ACFCR_AE_13_Msk (0x1UL << CAN_ACFCR_AE_13_Pos) /*!< 0x20000000 */ +#define CAN_ACFCR_AE_13 CAN_ACFCR_AE_13_Msk /*!< desc AE_13 */ +#define CAN_ACFCR_AE_14_Pos (30U) +#define CAN_ACFCR_AE_14_Msk (0x1UL << CAN_ACFCR_AE_14_Pos) /*!< 0x40000000 */ +#define CAN_ACFCR_AE_14 CAN_ACFCR_AE_14_Msk /*!< desc AE_14 */ +#define CAN_ACFCR_AE_15_Pos (31U) +#define CAN_ACFCR_AE_15_Msk (0x1UL << CAN_ACFCR_AE_15_Pos) /*!< 0x80000000 */ +#define CAN_ACFCR_AE_15 CAN_ACFCR_AE_15_Msk /*!< desc AE_15 */ + +/*!< CAN_PWMCR */ +#define CAN_PWMCR_PWMO_Pos (0U) +#define CAN_PWMCR_PWMO_Msk (0x3FUL << CAN_PWMCR_PWMO_Pos) /*!< 0x0000003F */ +#define CAN_PWMCR_PWMO CAN_PWMCR_PWMO_Msk /*!< PWMO[5:0] bits (desc PWMO) */ +#define CAN_PWMCR_PWMO_0 (0x1UL << CAN_PWMCR_PWMO_Pos) /*!< 0x00000001 */ +#define CAN_PWMCR_PWMO_1 (0x2UL << CAN_PWMCR_PWMO_Pos) /*!< 0x00000002 */ +#define CAN_PWMCR_PWMO_2 (0x4UL << CAN_PWMCR_PWMO_Pos) /*!< 0x00000004 */ +#define CAN_PWMCR_PWMO_3 (0x8UL << CAN_PWMCR_PWMO_Pos) /*!< 0x00000008 */ +#define CAN_PWMCR_PWMO_4 (0x10UL << CAN_PWMCR_PWMO_Pos) /*!< 0x00000010 */ +#define CAN_PWMCR_PWMO_5 (0x20UL << CAN_PWMCR_PWMO_Pos) /*!< 0x00000020 */ +#define CAN_PWMCR_PWMS_Pos (8U) +#define CAN_PWMCR_PWMS_Msk (0x3FUL << CAN_PWMCR_PWMS_Pos) /*!< 0x00003F00 */ +#define CAN_PWMCR_PWMS CAN_PWMCR_PWMS_Msk /*!< PWMS[13:8] bits (desc PWMS) */ +#define CAN_PWMCR_PWMS_0 (0x1UL << CAN_PWMCR_PWMS_Pos) /*!< 0x00000100 */ +#define CAN_PWMCR_PWMS_1 (0x2UL << CAN_PWMCR_PWMS_Pos) /*!< 0x00000200 */ +#define CAN_PWMCR_PWMS_2 (0x4UL << CAN_PWMCR_PWMS_Pos) /*!< 0x00000400 */ +#define CAN_PWMCR_PWMS_3 (0x8UL << CAN_PWMCR_PWMS_Pos) /*!< 0x00000800 */ +#define CAN_PWMCR_PWMS_4 (0x10UL << CAN_PWMCR_PWMS_Pos) /*!< 0x00001000 */ +#define CAN_PWMCR_PWMS_5 (0x20UL << CAN_PWMCR_PWMS_Pos) /*!< 0x00002000 */ +#define CAN_PWMCR_PWML_Pos (16U) +#define CAN_PWMCR_PWML_Msk (0x3FUL << CAN_PWMCR_PWML_Pos) /*!< 0x003F0000 */ +#define CAN_PWMCR_PWML CAN_PWMCR_PWML_Msk /*!< PWML[21:16] bits (desc PWML) */ +#define CAN_PWMCR_PWML_0 (0x1UL << CAN_PWMCR_PWML_Pos) /*!< 0x00010000 */ +#define CAN_PWMCR_PWML_1 (0x2UL << CAN_PWMCR_PWML_Pos) /*!< 0x00020000 */ +#define CAN_PWMCR_PWML_2 (0x4UL << CAN_PWMCR_PWML_Pos) /*!< 0x00040000 */ +#define CAN_PWMCR_PWML_3 (0x8UL << CAN_PWMCR_PWML_Pos) /*!< 0x00080000 */ +#define CAN_PWMCR_PWML_4 (0x10UL << CAN_PWMCR_PWML_Pos) /*!< 0x00100000 */ +#define CAN_PWMCR_PWML_5 (0x20UL << CAN_PWMCR_PWML_Pos) /*!< 0x00200000 */ + +/****************************************************************************/ +/* */ +/* Analog Comparators (COMP) */ +/* */ +/****************************************************************************/ +/********************** Bit definition for COMP_CSR register **************/ +#define COMP_CSR_EN_Pos (0U) +#define COMP_CSR_EN_Msk (0x1UL << COMP_CSR_EN_Pos) /*!< 0x00000001 */ +#define COMP_CSR_EN COMP_CSR_EN_Msk /*!< Comparator enable */ +#define COMP_CSR_COMP1_EN COMP_CSR_EN +#define COMP_CSR_COMP2_EN COMP_CSR_EN + +//#define COMP_CSR_SCALER_EN_Pos (1U) +//#define COMP_CSR_SCALER_EN_Msk (0x1UL << COMP_CSR_SCALER_EN_Pos) /*!< 0x00000001 */ +//#define COMP_CSR_SCALER_EN COMP_CSR_SCALER_EN_Msk /*!< Comparator enable */ + +//#define COMP_CSR_INMSEL_Pos (4U) +//#define COMP_CSR_INMSEL_Msk (0xFUL << COMP_CSR_INMSEL_Pos) /*!< 0x000000F0 */ +//#define COMP_CSR_INMSEL COMP_CSR_INMSEL_Msk /*!< Comparator input minus selection */ +//#define COMP_CSR_INMSEL_0 (0x1UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000010 */ +//#define COMP_CSR_INMSEL_1 (0x2UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000020 */ +//#define COMP_CSR_INMSEL_2 (0x4UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000040 */ +//#define COMP_CSR_INMSEL_3 (0x8UL << COMP_CSR_INMSEL_Pos) /*!< 0x00000080 */ + +#define COMP_CSR_INNSEL_Pos (2U) +#define COMP_CSR_INNSEL_Msk (0xFUL << COMP_CSR_INNSEL_Pos) /*!< 0x0000003C */ +#define COMP_CSR_INNSEL COMP_CSR_INNSEL_Msk /*!< desc INNSEL */ +#define COMP_CSR_INNSEL_0 (0x1UL << COMP_CSR_INNSEL_Pos) /*!< 0x00000004 */ +#define COMP_CSR_INNSEL_1 (0x2UL << COMP_CSR_INNSEL_Pos) /*!< 0x00000008 */ +#define COMP_CSR_INNSEL_2 (0x4UL << COMP_CSR_INNSEL_Pos) /*!< 0x00000010 */ +#define COMP_CSR_INNSEL_3 (0x8UL << COMP_CSR_INNSEL_Pos) /*!< 0x00000020 */ + +#define COMP_CSR_INPSEL_Pos (6U) +#define COMP_CSR_INPSEL_Msk (0xFUL << COMP_CSR_INPSEL_Pos) /*!< 0x000003C0 */ +#define COMP_CSR_INPSEL COMP_CSR_INPSEL_Msk /*!< Comparator plus minus selection */ +#define COMP_CSR_INPSEL_0 (0x1UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000040 */ +#define COMP_CSR_INPSEL_1 (0x2UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000080 */ +#define COMP_CSR_INPSEL_2 (0x4UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000100 */ +#define COMP_CSR_INPSEL_3 (0x8UL << COMP_CSR_INPSEL_Pos) /*!< 0x00000200 */ + +#define COMP_CSR_WINMODE_Pos (11U) +#define COMP_CSR_WINMODE_Msk (0x1UL << COMP_CSR_WINMODE_Pos) /*!< 0x00000800 */ +#define COMP_CSR_WINMODE COMP_CSR_WINMODE_Msk /*!< Pair of comparators window mode. Bit intended to be used with COMP common instance (COMP_Common_TypeDef) */ +//#define COMP_CSR_WINOUT_Pos (14U) +//#define COMP_CSR_WINOUT_Msk (0x1UL << COMP_CSR_WINOUT_Pos) /*!< 0x00004000 */ +//#define COMP_CSR_WINOUT COMP_CSR_WINOUT_Msk /*!< Pair of comparators window output level. Bit intended to be used with COMP common instance (COMP_Common_TypeDef) */ + +#define COMP_CSR_POLARITY_Pos (15U) +#define COMP_CSR_POLARITY_Msk (0x1UL << COMP_CSR_POLARITY_Pos) /*!< 0x00008000 */ +#define COMP_CSR_POLARITY COMP_CSR_POLARITY_Msk /*!< Comparator output polarity */ + +#define COMP_CSR_HYST_Pos (16U) +#define COMP_CSR_HYST_Msk (0x1UL << COMP_CSR_HYST_Pos) /*!< 0x00010000 */ +#define COMP_CSR_HYST COMP_CSR_HYST_Msk /*!< Comparator hysteresis enable */ + +#define COMP_CSR_PWRMODE_Pos (18U) +#define COMP_CSR_PWRMODE_Msk (0x3UL << COMP_CSR_PWRMODE_Pos) /*!< 0x000C0000 */ +#define COMP_CSR_PWRMODE COMP_CSR_PWRMODE_Msk /*!< Comparator power mode */ +#define COMP_CSR_PWRMODE_0 (0x1UL << COMP_CSR_PWRMODE_Pos) /*!< 0x00040000 */ +#define COMP_CSR_PWRMODE_1 (0x2UL << COMP_CSR_PWRMODE_Pos) /*!< 0x00080000 */ + +#define COMP_CSR_VCDIV_Pos (20U) +#define COMP_CSR_VCDIV_Msk (0x3FUL << COMP_CSR_VCDIV_Pos) /*!< 0x03F00000 */ +#define COMP_CSR_VCDIV COMP_CSR_VCDIV_Msk /*!< VCDIV[25:20] bits (desc VCDIV) */ +#define COMP_CSR_VCDIV_0 (0x1UL << COMP_CSR_VCDIV_Pos) /*!< 0x00100000 */ +#define COMP_CSR_VCDIV_1 (0x2UL << COMP_CSR_VCDIV_Pos) /*!< 0x00200000 */ +#define COMP_CSR_VCDIV_2 (0x4UL << COMP_CSR_VCDIV_Pos) /*!< 0x00400000 */ +#define COMP_CSR_VCDIV_3 (0x8UL << COMP_CSR_VCDIV_Pos) /*!< 0x00800000 */ +#define COMP_CSR_VCDIV_4 (0x10UL << COMP_CSR_VCDIV_Pos) /*!< 0x01000000 */ +#define COMP_CSR_VCDIV_5 (0x20UL << COMP_CSR_VCDIV_Pos) /*!< 0x02000000 */ + +#define COMP_CSR_VCDIV_EN_Pos (26U) +#define COMP_CSR_VCDIV_EN_Msk (0x1UL << COMP_CSR_VCDIV_EN_Pos) /*!< 0x04000000 */ +#define COMP_CSR_VCDIV_EN COMP_CSR_VCDIV_EN_Msk /*!< desc VCDIV_EN */ + +#define COMP_CSR_VCSEL_Pos (27U) +#define COMP_CSR_VCSEL_Msk (0x1UL << COMP_CSR_VCSEL_Pos) /*!< 0x08000000 */ +#define COMP_CSR_VCSEL COMP_CSR_VCSEL_Msk /*!< desc VCSEL */ + +#define COMP_CSR_COMP_OUT_Pos (30U) +#define COMP_CSR_COMP_OUT_Msk (0x1UL << COMP_CSR_COMP_OUT_Pos) /*!< 0x40000000 */ +#define COMP_CSR_COMP_OUT COMP_CSR_COMP_OUT_Msk /*!< desc COMP_OUT */ + +//#define COMP_CSR_LOCK_Pos (31U) +//#define COMP_CSR_LOCK_Msk (0x1UL << COMP_CSR_LOCK_Pos) /*!< 0x80000000 */ +//#define COMP_CSR_LOCK COMP_CSR_LOCK_Msk /*!< Comparator lock */ + +/********************** Bit definition for COMP_FR register ***************/ +#define COMP_FR_FLTEN_Pos (0U) +#define COMP_FR_FLTEN_Msk (0x1UL << COMP_FR_FLTEN_Pos) /*!< 0x00000001 */ +#define COMP_FR_FLTEN COMP_FR_FLTEN_Msk /*!< Comparator filter enable */ +#define COMP_FR_FLTCNT_Pos (16U) +#define COMP_FR_FLTCNT_Msk (0xFFFFUL << COMP_FR_FLTCNT_Pos) /*!< 0xFFFF0000 */ +#define COMP_FR_FLTCNT COMP_FR_FLTCNT_Msk /*!< Comparator filter counter */ + +/****************************************************************************/ +/* */ +/* CRC calculation unit (CRC) */ +/* */ +/****************************************************************************/ +/******************* Bit definition for CRC_DR register *******************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ******************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 8-bit data register bits */ + +/******************** Bit definition for CRC_CR register ******************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */ + +/****************************************************************************/ +/* */ +/* Clock Triming Controller(CTC) */ +/* */ +/****************************************************************************/ +/********************* Bits Define For Peripheral CTC *********************/ +/*!< CTC_CTL0 */ +#define CTC_CTL0_CKOKIE_Pos (0U) +#define CTC_CTL0_CKOKIE_Msk (0x1UL << CTC_CTL0_CKOKIE_Pos) /*!< 0x00000001 */ +#define CTC_CTL0_CKOKIE CTC_CTL0_CKOKIE_Msk /*!< desc CKOKIE */ +#define CTC_CTL0_CKWARNIE_Pos (1U) +#define CTC_CTL0_CKWARNIE_Msk (0x1UL << CTC_CTL0_CKWARNIE_Pos) /*!< 0x00000002 */ +#define CTC_CTL0_CKWARNIE CTC_CTL0_CKWARNIE_Msk /*!< desc CKWARNIE */ +#define CTC_CTL0_ERRIE_Pos (2U) +#define CTC_CTL0_ERRIE_Msk (0x1UL << CTC_CTL0_ERRIE_Pos) /*!< 0x00000004 */ +#define CTC_CTL0_ERRIE CTC_CTL0_ERRIE_Msk /*!< desc ERRIE */ +#define CTC_CTL0_EREFIE_Pos (3U) +#define CTC_CTL0_EREFIE_Msk (0x1UL << CTC_CTL0_EREFIE_Pos) /*!< 0x00000008 */ +#define CTC_CTL0_EREFIE CTC_CTL0_EREFIE_Msk /*!< desc EREFIE */ +#define CTC_CTL0_CNTEN_Pos (5U) +#define CTC_CTL0_CNTEN_Msk (0x1UL << CTC_CTL0_CNTEN_Pos) /*!< 0x00000020 */ +#define CTC_CTL0_CNTEN CTC_CTL0_CNTEN_Msk /*!< desc CNTEN */ +#define CTC_CTL0_AUTOTRIM_Pos (6U) +#define CTC_CTL0_AUTOTRIM_Msk (0x1UL << CTC_CTL0_AUTOTRIM_Pos) /*!< 0x00000040 */ +#define CTC_CTL0_AUTOTRIM CTC_CTL0_AUTOTRIM_Msk /*!< desc AUTOTRIM */ +#define CTC_CTL0_SWREFPUL_Pos (7U) +#define CTC_CTL0_SWREFPUL_Msk (0x1UL << CTC_CTL0_SWREFPUL_Pos) /*!< 0x00000080 */ +#define CTC_CTL0_SWREFPUL CTC_CTL0_SWREFPUL_Msk /*!< desc SWREFPUL */ +#define CTC_CTL0_TRIMVALUE_Pos (8U) +#define CTC_CTL0_TRIMVALUE_Msk (0x3FUL << CTC_CTL0_TRIMVALUE_Pos) /*!< 0x00003F00 */ +#define CTC_CTL0_TRIMVALUE CTC_CTL0_TRIMVALUE_Msk /*!< TRIMVALUE[13:8] bits (desc TRIMVALUE) */ +#define CTC_CTL0_TRIMVALUE_0 (0x1UL << CTC_CTL0_TRIMVALUE_Pos) /*!< 0x00000100 */ +#define CTC_CTL0_TRIMVALUE_1 (0x2UL << CTC_CTL0_TRIMVALUE_Pos) /*!< 0x00000200 */ +#define CTC_CTL0_TRIMVALUE_2 (0x4UL << CTC_CTL0_TRIMVALUE_Pos) /*!< 0x00000400 */ +#define CTC_CTL0_TRIMVALUE_3 (0x8UL << CTC_CTL0_TRIMVALUE_Pos) /*!< 0x00000800 */ +#define CTC_CTL0_TRIMVALUE_4 (0x10UL << CTC_CTL0_TRIMVALUE_Pos) /*!< 0x00001000 */ +#define CTC_CTL0_TRIMVALUE_5 (0x20UL << CTC_CTL0_TRIMVALUE_Pos) /*!< 0x00002000 */ + + +/*!< CTC_CTL1 */ +#define CTC_CTL1_RLVALUE_Pos (0U) +#define CTC_CTL1_RLVALUE_Msk (0xFFFFUL << CTC_CTL1_RLVALUE_Pos) /*!< 0x0000FFFF */ +#define CTC_CTL1_RLVALUE CTC_CTL1_RLVALUE_Msk /*!< RLVALUE[15:0] bits (desc RLVALUE) */ +#define CTC_CTL1_CKLIM_Pos (16U) +#define CTC_CTL1_CKLIM_Msk (0xFFUL << CTC_CTL1_CKLIM_Pos) /*!< 0x00FF0000 */ +#define CTC_CTL1_CKLIM CTC_CTL1_CKLIM_Msk /*!< CKLIM[23:16] bits (desc CKLIM) */ +#define CTC_CTL1_REFPSC_Pos (24U) +#define CTC_CTL1_REFPSC_Msk (0x7UL << CTC_CTL1_REFPSC_Pos) /*!< 0x07000000 */ +#define CTC_CTL1_REFPSC CTC_CTL1_REFPSC_Msk /*!< REFPSC[26:24] bits (desc REFPSC) */ +#define CTC_CTL1_REFPSC_0 (0x1UL << CTC_CTL1_REFPSC_Pos) /*!< 0x01000000 */ +#define CTC_CTL1_REFPSC_1 (0x2UL << CTC_CTL1_REFPSC_Pos) /*!< 0x02000000 */ +#define CTC_CTL1_REFPSC_2 (0x4UL << CTC_CTL1_REFPSC_Pos) /*!< 0x04000000 */ +#define CTC_CTL1_REFSEL_Pos (28U) +#define CTC_CTL1_REFSEL_Msk (0x3UL << CTC_CTL1_REFSEL_Pos) /*!< 0x30000000 */ +#define CTC_CTL1_REFSEL CTC_CTL1_REFSEL_Msk /*!< REFSEL[29:28] bits (desc REFSEL) */ +#define CTC_CTL1_REFSEL_0 (0x1UL << CTC_CTL1_REFSEL_Pos) /*!< 0x10000000 */ +#define CTC_CTL1_REFSEL_1 (0x2UL << CTC_CTL1_REFSEL_Pos) /*!< 0x20000000 */ +#define CTC_CTL1_REFPOL_Pos (31U) +#define CTC_CTL1_REFPOL_Msk (0x1UL << CTC_CTL1_REFPOL_Pos) /*!< 0x80000000 */ +#define CTC_CTL1_REFPOL CTC_CTL1_REFPOL_Msk /*!< desc REFPOL */ + +/*!< CTC_SR */ +#define CTC_SR_CKOKIF_Pos (0U) +#define CTC_SR_CKOKIF_Msk (0x1UL << CTC_SR_CKOKIF_Pos) /*!< 0x00000001 */ +#define CTC_SR_CKOKIF CTC_SR_CKOKIF_Msk /*!< desc CKOKIF */ +#define CTC_SR_CKWARNIF_Pos (1U) +#define CTC_SR_CKWARNIF_Msk (0x1UL << CTC_SR_CKWARNIF_Pos) /*!< 0x00000002 */ +#define CTC_SR_CKWARNIF CTC_SR_CKWARNIF_Msk /*!< desc CKWARNIF */ +#define CTC_SR_ERRIF_Pos (2U) +#define CTC_SR_ERRIF_Msk (0x1UL << CTC_SR_ERRIF_Pos) /*!< 0x00000004 */ +#define CTC_SR_ERRIF CTC_SR_ERRIF_Msk /*!< desc ERRIF */ +#define CTC_SR_EREFIF_Pos (3U) +#define CTC_SR_EREFIF_Msk (0x1UL << CTC_SR_EREFIF_Pos) /*!< 0x00000008 */ +#define CTC_SR_EREFIF CTC_SR_EREFIF_Msk /*!< desc EREFIF */ +#define CTC_SR_CKERR_Pos (8U) +#define CTC_SR_CKERR_Msk (0x1UL << CTC_SR_CKERR_Pos) /*!< 0x00000100 */ +#define CTC_SR_CKERR CTC_SR_CKERR_Msk /*!< desc CKERR */ +#define CTC_SR_REFMISS_Pos (9U) +#define CTC_SR_REFMISS_Msk (0x1UL << CTC_SR_REFMISS_Pos) /*!< 0x00000200 */ +#define CTC_SR_REFMISS CTC_SR_REFMISS_Msk /*!< desc REFMISS */ +#define CTC_SR_TRIMERR_Pos (10U) +#define CTC_SR_TRIMERR_Msk (0x1UL << CTC_SR_TRIMERR_Pos) /*!< 0x00000400 */ +#define CTC_SR_TRIMERR CTC_SR_TRIMERR_Msk /*!< desc TRIMERR */ +#define CTC_SR_REFDIR_Pos (15U) +#define CTC_SR_REFDIR_Msk (0x1UL << CTC_SR_REFDIR_Pos) /*!< 0x00008000 */ +#define CTC_SR_REFDIR CTC_SR_REFDIR_Msk /*!< desc REFDIR */ +#define CTC_SR_REFCAP_Pos (16U) +#define CTC_SR_REFCAP_Msk (0xFFFFUL << CTC_SR_REFCAP_Pos) /*!< 0xFFFF0000 */ +#define CTC_SR_REFCAP CTC_SR_REFCAP_Msk /*!< REFCAP[31:16] bits (desc REFCAP) */ + +/*!< CTC_INTC */ +#define CTC_INTC_CKOKIC_Pos (0U) +#define CTC_INTC_CKOKIC_Msk (0x1UL << CTC_INTC_CKOKIC_Pos) /*!< 0x00000001 */ +#define CTC_INTC_CKOKIC CTC_INTC_CKOKIC_Msk /*!< desc CKOKIC */ +#define CTC_INTC_CKWARNIC_Pos (1U) +#define CTC_INTC_CKWARNIC_Msk (0x1UL << CTC_INTC_CKWARNIC_Pos) /*!< 0x00000002 */ +#define CTC_INTC_CKWARNIC CTC_INTC_CKWARNIC_Msk /*!< desc CKWARNIC */ +#define CTC_INTC_ERRIC_Pos (2U) +#define CTC_INTC_ERRIC_Msk (0x1UL << CTC_INTC_ERRIC_Pos) /*!< 0x00000004 */ +#define CTC_INTC_ERRIC CTC_INTC_ERRIC_Msk /*!< desc ERRIC */ +#define CTC_INTC_EREFIC_Pos (3U) +#define CTC_INTC_EREFIC_Msk (0x1UL << CTC_INTC_EREFIC_Pos) /*!< 0x00000008 */ +#define CTC_INTC_EREFIC CTC_INTC_EREFIC_Msk /*!< desc EREFIC */ + +/****************************************************************************/ +/* */ +/* Digital to Analog Converter(DAC) */ +/* */ +/****************************************************************************/ +/********************* Bits Define For Peripheral DAC *********************/ +/*!< DAC_CR */ +#define DAC_CR_EN1_Pos (0U) +#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */ +#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!< desc EN1 */ +#define DAC_CR_BOFF1_Pos (1U) +#define DAC_CR_BOFF1_Msk (0x1UL << DAC_CR_BOFF1_Pos) /*!< 0x00000002 */ +#define DAC_CR_BOFF1 DAC_CR_BOFF1_Msk /*!< desc BOFF1 */ +#define DAC_CR_TEN1_Pos (2U) +#define DAC_CR_TEN1_Msk (0x1UL << DAC_CR_TEN1_Pos) /*!< 0x00000004 */ +#define DAC_CR_TEN1 DAC_CR_TEN1_Msk /*!< desc TEN1 */ +#define DAC_CR_TSEL1_Pos (3U) +#define DAC_CR_TSEL1_Msk (0x7UL << DAC_CR_TSEL1_Pos) /*!< 0x00000038 */ +#define DAC_CR_TSEL1 DAC_CR_TSEL1_Msk /*!< TSEL1[5:3] bits (desc TSEL1) */ +#define DAC_CR_TSEL1_0 (0x1UL << DAC_CR_TSEL1_Pos) /*!< 0x00000008 */ +#define DAC_CR_TSEL1_1 (0x2UL << DAC_CR_TSEL1_Pos) /*!< 0x00000010 */ +#define DAC_CR_TSEL1_2 (0x4UL << DAC_CR_TSEL1_Pos) /*!< 0x00000020 */ +#define DAC_CR_WAVE1_Pos (6U) +#define DAC_CR_WAVE1_Msk (0x3UL << DAC_CR_WAVE1_Pos) /*!< 0x000000C0 */ +#define DAC_CR_WAVE1 DAC_CR_WAVE1_Msk /*!< WAVE1[7:6] bits (desc WAVE1) */ +#define DAC_CR_WAVE1_0 (0x1UL << DAC_CR_WAVE1_Pos) /*!< 0x00000040 */ +#define DAC_CR_WAVE1_1 (0x2UL << DAC_CR_WAVE1_Pos) /*!< 0x00000080 */ +#define DAC_CR_MAMP1_Pos (8U) +#define DAC_CR_MAMP1_Msk (0xFUL << DAC_CR_MAMP1_Pos) /*!< 0x00000F00 */ +#define DAC_CR_MAMP1 DAC_CR_MAMP1_Msk /*!< MAMP1[11:8] bits (desc MAMP1) */ +#define DAC_CR_MAMP1_0 (0x1UL << DAC_CR_MAMP1_Pos) /*!< 0x00000100 */ +#define DAC_CR_MAMP1_1 (0x2UL << DAC_CR_MAMP1_Pos) /*!< 0x00000200 */ +#define DAC_CR_MAMP1_2 (0x4UL << DAC_CR_MAMP1_Pos) /*!< 0x00000400 */ +#define DAC_CR_MAMP1_3 (0x8UL << DAC_CR_MAMP1_Pos) /*!< 0x00000800 */ +#define DAC_CR_DMAEN1_Pos (12U) +#define DAC_CR_DMAEN1_Msk (0x1UL << DAC_CR_DMAEN1_Pos) /*!< 0x00001000 */ +#define DAC_CR_DMAEN1 DAC_CR_DMAEN1_Msk /*!< desc DMAEN1 */ +#define DAC_CR_DMAUDRIE1_Pos (13U) +#define DAC_CR_DMAUDRIE1_Msk (0x1UL << DAC_CR_DMAUDRIE1_Pos) /*!< 0x00002000 */ +#define DAC_CR_DMAUDRIE1 DAC_CR_DMAUDRIE1_Msk /*!< desc DMAUDRIE1 */ +#define DAC_CR_DAC1CEN_Pos (14U) +#define DAC_CR_DAC1CEN_Msk (0x1UL << DAC_CR_DAC1CEN_Pos) /*!< 0x00004000 */ +#define DAC_CR_DAC1CEN DAC_CR_DAC1CEN_Msk /*!< desc DAC1CEN */ +#define DAC_CR_EN2_Pos (16U) +#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */ +#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!< desc EN2 */ +#define DAC_CR_BOFF2_Pos (17U) +#define DAC_CR_BOFF2_Msk (0x1UL << DAC_CR_BOFF2_Pos) /*!< 0x00020000 */ +#define DAC_CR_BOFF2 DAC_CR_BOFF2_Msk /*!< desc BOFF2 */ +#define DAC_CR_TEN2_Pos (18U) +#define DAC_CR_TEN2_Msk (0x1UL << DAC_CR_TEN2_Pos) /*!< 0x00040000 */ +#define DAC_CR_TEN2 DAC_CR_TEN2_Msk /*!< desc TEN2 */ +#define DAC_CR_TSEL2_Pos (19U) +#define DAC_CR_TSEL2_Msk (0x7UL << DAC_CR_TSEL2_Pos) /*!< 0x00380000 */ +#define DAC_CR_TSEL2 DAC_CR_TSEL2_Msk /*!< TSEL2[21:19] bits (desc TSEL2) */ +#define DAC_CR_TSEL2_0 (0x1UL << DAC_CR_TSEL2_Pos) /*!< 0x00080000 */ +#define DAC_CR_TSEL2_1 (0x2UL << DAC_CR_TSEL2_Pos) /*!< 0x00100000 */ +#define DAC_CR_TSEL2_2 (0x4UL << DAC_CR_TSEL2_Pos) /*!< 0x00200000 */ +#define DAC_CR_WAVE2_Pos (22U) +#define DAC_CR_WAVE2_Msk (0x3UL << DAC_CR_WAVE2_Pos) /*!< 0x00C00000 */ +#define DAC_CR_WAVE2 DAC_CR_WAVE2_Msk /*!< WAVE2[23:22] bits (desc WAVE2) */ +#define DAC_CR_WAVE2_0 (0x1UL << DAC_CR_WAVE2_Pos) /*!< 0x00400000 */ +#define DAC_CR_WAVE2_1 (0x2UL << DAC_CR_WAVE2_Pos) /*!< 0x00800000 */ +#define DAC_CR_MAMP2_Pos (24U) +#define DAC_CR_MAMP2_Msk (0xFUL << DAC_CR_MAMP2_Pos) /*!< 0x0F000000 */ +#define DAC_CR_MAMP2 DAC_CR_MAMP2_Msk /*!< MAMP2[27:24] bits (desc MAMP2) */ +#define DAC_CR_MAMP2_0 (0x1UL << DAC_CR_MAMP2_Pos) /*!< 0x01000000 */ +#define DAC_CR_MAMP2_1 (0x2UL << DAC_CR_MAMP2_Pos) /*!< 0x02000000 */ +#define DAC_CR_MAMP2_2 (0x4UL << DAC_CR_MAMP2_Pos) /*!< 0x04000000 */ +#define DAC_CR_MAMP2_3 (0x8UL << DAC_CR_MAMP2_Pos) /*!< 0x08000000 */ +#define DAC_CR_DMAEN2_Pos (28U) +#define DAC_CR_DMAEN2_Msk (0x1UL << DAC_CR_DMAEN2_Pos) /*!< 0x10000000 */ +#define DAC_CR_DMAEN2 DAC_CR_DMAEN2_Msk /*!< desc DMAEN2 */ +#define DAC_CR_DMAUDRIE2_Pos (29U) +#define DAC_CR_DMAUDRIE2_Msk (0x1UL << DAC_CR_DMAUDRIE2_Pos) /*!< 0x20000000 */ +#define DAC_CR_DMAUDRIE2 DAC_CR_DMAUDRIE2_Msk /*!< desc DMAUDRIE2 */ +#define DAC_CR_DAC2CEN_Pos (30U) +#define DAC_CR_DAC2CEN_Msk (0x1UL << DAC_CR_DAC2CEN_Pos) /*!< 0x40000000 */ +#define DAC_CR_DAC2CEN DAC_CR_DAC2CEN_Msk /*!< desc DAC2CEN */ + +/*!< DAC_SWTRIGR */ +#define DAC_SWTRIGR_SWTRIG1_Pos (0U) +#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */ +#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!< desc SWTRIG1 */ +#define DAC_SWTRIGR_SWTRIG2_Pos (1U) +#define DAC_SWTRIGR_SWTRIG2_Msk (0x1UL << DAC_SWTRIGR_SWTRIG2_Pos) /*!< 0x00000002 */ +#define DAC_SWTRIGR_SWTRIG2 DAC_SWTRIGR_SWTRIG2_Msk /*!< desc SWTRIG2 */ + +/*!< DAC_DHR12R1 */ +#define DAC_DHR12R1_DACC1DHR_Pos (0U) +#define DAC_DHR12R1_DACC1DHR_Msk (0xFFFUL << DAC_DHR12R1_DACC1DHR_Pos) /*!< 0x00000FFF */ +#define DAC_DHR12R1_DACC1DHR DAC_DHR12R1_DACC1DHR_Msk /*!< DACC1DHR[11:0] bits (desc DACC1DHR) */ + +/*!< DAC_DHR12L1 */ +#define DAC_DHR12L1_DACC1DHR_Pos (3U) +#define DAC_DHR12L1_DACC1DHR_Msk (0xFFFUL << DAC_DHR12L1_DACC1DHR_Pos) /*!< 0x00007FF8 */ +#define DAC_DHR12L1_DACC1DHR DAC_DHR12L1_DACC1DHR_Msk /*!< DACC1DHR[14:3] bits (desc DACC1DHR) */ + +/*!< DAC_DHR8R1 */ +#define DAC_DHR8R1_DACC1DHR_Pos (0U) +#define DAC_DHR8R1_DACC1DHR_Msk (0xFFUL << DAC_DHR8R1_DACC1DHR_Pos) /*!< 0x000000FF */ +#define DAC_DHR8R1_DACC1DHR DAC_DHR8R1_DACC1DHR_Msk /*!< DACC1DHR[7:0] bits (desc DACC1DHR) */ + +/*!< DAC_DHR12R2 */ +#define DAC_DHR12R2_DACC2DHR_Pos (0U) +#define DAC_DHR12R2_DACC2DHR_Msk (0xFFFUL << DAC_DHR12R2_DACC2DHR_Pos) /*!< 0x00000FFF */ +#define DAC_DHR12R2_DACC2DHR DAC_DHR12R2_DACC2DHR_Msk /*!< DACC2DHR[11:0] bits (desc DACC2DHR) */ + +/*!< DAC_DHR12L2 */ +#define DAC_DHR12L2_DACC2DHR_Pos (4U) +#define DAC_DHR12L2_DACC2DHR_Msk (0xFFFUL << DAC_DHR12L2_DACC2DHR_Pos) /*!< 0x0000FFF0 */ +#define DAC_DHR12L2_DACC2DHR DAC_DHR12L2_DACC2DHR_Msk /*!< DACC2DHR[15:4] bits (desc DACC2DHR) */ + +/*!< DAC_DHR8R2 */ +#define DAC_DHR8R2_DACC2DHR_Pos (0U) +#define DAC_DHR8R2_DACC2DHR_Msk (0xFFUL << DAC_DHR8R2_DACC2DHR_Pos) /*!< 0x000000FF */ +#define DAC_DHR8R2_DACC2DHR DAC_DHR8R2_DACC2DHR_Msk /*!< DACC2DHR[7:0] bits (desc DACC2DHR) */ + +/*!< DAC_DHR12RD */ +#define DAC_DHR12RD_DACC1DHR_Pos (0U) +#define DAC_DHR12RD_DACC1DHR_Msk (0xFFFUL << DAC_DHR12RD_DACC1DHR_Pos) /*!< 0x00000FFF */ +#define DAC_DHR12RD_DACC1DHR DAC_DHR12RD_DACC1DHR_Msk /*!< DACC1DHR[11:0] bits (desc DACC1DHR) */ +#define DAC_DHR12RD_DACC2DHR_Pos (16U) +#define DAC_DHR12RD_DACC2DHR_Msk (0xFFFUL << DAC_DHR12RD_DACC2DHR_Pos) /*!< 0x0FFF0000 */ +#define DAC_DHR12RD_DACC2DHR DAC_DHR12RD_DACC2DHR_Msk /*!< DACC2DHR[27:16] bits (desc DACC2DHR) */ + +/*!< DAC_DHR12LD */ +#define DAC_DHR12LD_DACC1DHR_Pos (4U) +#define DAC_DHR12LD_DACC1DHR_Msk (0xFFFUL << DAC_DHR12LD_DACC1DHR_Pos) /*!< 0x0000FFF0 */ +#define DAC_DHR12LD_DACC1DHR DAC_DHR12LD_DACC1DHR_Msk /*!< DACC1DHR[15:4] bits (desc DACC1DHR) */ +#define DAC_DHR12LD_DACC2DHR_Pos (20U) +#define DAC_DHR12LD_DACC2DHR_Msk (0xFFFUL << DAC_DHR12LD_DACC2DHR_Pos) /*!< 0xFFF00000 */ +#define DAC_DHR12LD_DACC2DHR DAC_DHR12LD_DACC2DHR_Msk /*!< DACC2DHR[31:20] bits (desc DACC2DHR) */ + +/*!< DAC_DHR8RD */ +#define DAC_DHR8RD_DACC1DHR_Pos (0U) +#define DAC_DHR8RD_DACC1DHR_Msk (0xFFUL << DAC_DHR8RD_DACC1DHR_Pos) /*!< 0x000000FF */ +#define DAC_DHR8RD_DACC1DHR DAC_DHR8RD_DACC1DHR_Msk /*!< DACC1DHR[7:0] bits (desc DACC1DHR) */ +#define DAC_DHR8RD_DACC2DHR_Pos (8U) +#define DAC_DHR8RD_DACC2DHR_Msk (0xFFUL << DAC_DHR8RD_DACC2DHR_Pos) /*!< 0x0000FF00 */ +#define DAC_DHR8RD_DACC2DHR DAC_DHR8RD_DACC2DHR_Msk /*!< DACC2DHR[15:8] bits (desc DACC2DHR) */ + +/*!< DAC_DOR1 */ +#define DAC_DOR1_DACC1DOR_Pos (0U) +#define DAC_DOR1_DACC1DOR_Msk (0xFFFUL << DAC_DOR1_DACC1DOR_Pos) /*!< 0x00000FFF */ +#define DAC_DOR1_DACC1DOR DAC_DOR1_DACC1DOR_Msk /*!< DACC1DOR[11:0] bits (desc DACC1DOR) */ + +/*!< DAC_DOR2 */ +#define DAC_DOR2_DACC2DOR_Pos (0U) +#define DAC_DOR2_DACC2DOR_Msk (0xFFFUL << DAC_DOR2_DACC2DOR_Pos) /*!< 0x00000FFF */ +#define DAC_DOR2_DACC2DOR DAC_DOR2_DACC2DOR_Msk /*!< DACC2DOR[11:0] bits (desc DACC2DOR) */ + +/*!< DAC_SR */ +#define DAC_SR_DMAUDR1_Pos (13U) +#define DAC_SR_DMAUDR1_Msk (0x1UL << DAC_SR_DMAUDR1_Pos) /*!< 0x00002000 */ +#define DAC_SR_DMAUDR1 DAC_SR_DMAUDR1_Msk /*!< desc DMAUDR1 */ +#define DAC_SR_DMAUDR2_Pos (29U) +#define DAC_SR_DMAUDR2_Msk (0x1UL << DAC_SR_DMAUDR2_Pos) /*!< 0x20000000 */ +#define DAC_SR_DMAUDR2 DAC_SR_DMAUDR2_Msk /*!< desc DMAUDR2 */ + +/****************************************************************************/ +/* */ +/* Debug MCU (DBGMCU) */ +/* */ +/****************************************************************************/ +/******************** Bit definition for DBG_IDCODE register **************/ +#define DBGMCU_IDCODE_DEV_ID_Pos (0U) +#define DBGMCU_IDCODE_DEV_ID_Msk (0xFFFUL << DBGMCU_IDCODE_DEV_ID_Pos) /*!< 0x00000FFF */ +#define DBGMCU_IDCODE_DEV_ID DBGMCU_IDCODE_DEV_ID_Msk +#define DBGMCU_IDCODE_REV_ID_Pos (16U) +#define DBGMCU_IDCODE_REV_ID_Msk (0xFFFFUL << DBGMCU_IDCODE_REV_ID_Pos) /*!< 0xFFFF0000 */ +#define DBGMCU_IDCODE_REV_ID DBGMCU_IDCODE_REV_ID_Msk +#define DBGMCU_IDCODE_DBG_ID_Pos (0U) +#define DBGMCU_IDCODE_DBG_ID_Msk (0xFFFFUL << DBGMCU_IDCODE_DBG_ID_Pos) /*!< 0xFFFFFFFF */ +#define DBGMCU_IDCODE_DBG_ID DBGMCU_IDCODE_DBG_ID_Msk + +/******************** Bit definition for DBGMCU_CR register ***************/ +#define DBGMCU_CR_DBG_SLEEP_Pos (0U) +#define DBGMCU_CR_DBG_SLEEP_Msk (0x1UL << DBGMCU_CR_DBG_SLEEP_Pos) /*!< 0x00000001 */ +#define DBGMCU_CR_DBG_SLEEP DBGMCU_CR_DBG_SLEEP_Msk +#define DBGMCU_CR_DBG_STOP_Pos (1U) +#define DBGMCU_CR_DBG_STOP_Msk (0x1UL << DBGMCU_CR_DBG_STOP_Pos) /*!< 0x00000002 */ +#define DBGMCU_CR_DBG_STOP DBGMCU_CR_DBG_STOP_Msk + +/******************** Bit definition for DBGMCU_APB_FZ1 register **********/ +#define DBGMCU_APB_FZ1_DBG_TIM2_STOP_Pos (0U) +#define DBGMCU_APB_FZ1_DBG_TIM2_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_TIM2_STOP_Pos) /*!< 0x00000001 */ +#define DBGMCU_APB_FZ1_DBG_TIM2_STOP DBGMCU_APB_FZ1_DBG_TIM2_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_TIM3_STOP_Pos (1U) +#define DBGMCU_APB_FZ1_DBG_TIM3_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_TIM3_STOP_Pos) /*!< 0x00000002 */ +#define DBGMCU_APB_FZ1_DBG_TIM3_STOP DBGMCU_APB_FZ1_DBG_TIM3_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_TIM6_STOP_Pos (4U) +#define DBGMCU_APB_FZ1_DBG_TIM6_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_TIM6_STOP_Pos) /*!< 0x00000010 */ +#define DBGMCU_APB_FZ1_DBG_TIM6_STOP DBGMCU_APB_FZ1_DBG_TIM6_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_TIM7_STOP_Pos (5U) +#define DBGMCU_APB_FZ1_DBG_TIM7_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_TIM7_STOP_Pos) /*!< 0x00000020 */ +#define DBGMCU_APB_FZ1_DBG_TIM7_STOP DBGMCU_APB_FZ1_DBG_TIM7_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_RTC_STOP_Pos (10U) +#define DBGMCU_APB_FZ1_DBG_RTC_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_RTC_STOP_Pos) /*!< 0x00000400 */ +#define DBGMCU_APB_FZ1_DBG_RTC_STOP DBGMCU_APB_FZ1_DBG_RTC_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_WWDG_STOP_Pos (11U) +#define DBGMCU_APB_FZ1_DBG_WWDG_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_WWDG_STOP_Pos) /*!< 0x00000800 */ +#define DBGMCU_APB_FZ1_DBG_WWDG_STOP DBGMCU_APB_FZ1_DBG_WWDG_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_IWDG_STOP_Pos (12U) +#define DBGMCU_APB_FZ1_DBG_IWDG_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_IWDG_STOP_Pos) /*!< 0x00001000 */ +#define DBGMCU_APB_FZ1_DBG_IWDG_STOP DBGMCU_APB_FZ1_DBG_IWDG_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_CAN_STOP_Pos (19U) +#define DBGMCU_APB_FZ1_DBG_CAN_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_CAN_STOP_Pos) /*!< 0x00080000 */ +#define DBGMCU_APB_FZ1_DBG_CAN_STOP DBGMCU_APB_FZ1_DBG_CAN_STOP_Msk +#define DBGMCU_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_Pos (21U) +#define DBGMCU_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_Pos) /*!< 0x00200000 */ +#define DBGMCU_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT DBGMCU_APB_FZ1_DBG_I2C1_SMBUS_TIMEOUT_Msk +#define DBGMCU_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_Pos (22U) +#define DBGMCU_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_Pos) /*!< 0x00400000 */ +#define DBGMCU_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT DBGMCU_APB_FZ1_DBG_I2C2_SMBUS_TIMEOUT_Msk +#define DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Pos (31U) +#define DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Msk (0x1UL << DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Pos) /*!< 0x00001000 */ +#define DBGMCU_APB_FZ1_DBG_LPTIM_STOP DBGMCU_APB_FZ1_DBG_LPTIM_STOP_Msk + +/******************** Bit definition for DBGMCU_APB_FZ2 register **********/ +#define DBGMCU_APB_FZ2_DBG_TIM1_STOP_Pos (11U) +#define DBGMCU_APB_FZ2_DBG_TIM1_STOP_Msk (0x1UL << DBGMCU_APB_FZ2_DBG_TIM1_STOP_Pos) /*!< 0x00000800 */ +#define DBGMCU_APB_FZ2_DBG_TIM1_STOP DBGMCU_APB_FZ2_DBG_TIM1_STOP_Msk +#define DBGMCU_APB_FZ2_DBG_TIM14_STOP_Pos (15U) +#define DBGMCU_APB_FZ2_DBG_TIM14_STOP_Msk (0x1UL << DBGMCU_APB_FZ2_DBG_TIM14_STOP_Pos) /*!< 0x00008000 */ +#define DBGMCU_APB_FZ2_DBG_TIM14_STOP DBGMCU_APB_FZ2_DBG_TIM14_STOP_Msk +#define DBGMCU_APB_FZ2_DBG_TIM15_STOP_Pos (16U) +#define DBGMCU_APB_FZ2_DBG_TIM15_STOP_Msk (0x1UL << DBGMCU_APB_FZ2_DBG_TIM15_STOP_Pos) /*!< 0x00010000 */ +#define DBGMCU_APB_FZ2_DBG_TIM15_STOP DBGMCU_APB_FZ2_DBG_TIM15_STOP_Msk +#define DBGMCU_APB_FZ2_DBG_TIM16_STOP_Pos (17U) +#define DBGMCU_APB_FZ2_DBG_TIM16_STOP_Msk (0x1UL << DBGMCU_APB_FZ2_DBG_TIM16_STOP_Pos) /*!< 0x00020000 */ +#define DBGMCU_APB_FZ2_DBG_TIM16_STOP DBGMCU_APB_FZ2_DBG_TIM16_STOP_Msk +#define DBGMCU_APB_FZ2_DBG_TIM17_STOP_Pos (18U) +#define DBGMCU_APB_FZ2_DBG_TIM17_STOP_Msk (0x1UL << DBGMCU_APB_FZ2_DBG_TIM17_STOP_Pos) /*!< 0x00040000 */ +#define DBGMCU_APB_FZ2_DBG_TIM17_STOP DBGMCU_APB_FZ2_DBG_TIM17_STOP_Msk + +/****************************************************************************/ +/* */ +/* DMA Controller (DMA) */ +/* */ +/****************************************************************************/ +/******************* Bit definition for DMA_ISR register ******************/ +#define DMA_ISR_GIF1_Pos (0U) +#define DMA_ISR_GIF1_Msk (0x1UL << DMA_ISR_GIF1_Pos) /*!< 0x00000001 */ +#define DMA_ISR_GIF1 DMA_ISR_GIF1_Msk /*!< Channel 1 Global interrupt flag */ +#define DMA_ISR_TCIF1_Pos (1U) +#define DMA_ISR_TCIF1_Msk (0x1UL << DMA_ISR_TCIF1_Pos) /*!< 0x00000002 */ +#define DMA_ISR_TCIF1 DMA_ISR_TCIF1_Msk /*!< Channel 1 Transfer Complete flag */ +#define DMA_ISR_HTIF1_Pos (2U) +#define DMA_ISR_HTIF1_Msk (0x1UL << DMA_ISR_HTIF1_Pos) /*!< 0x00000004 */ +#define DMA_ISR_HTIF1 DMA_ISR_HTIF1_Msk /*!< Channel 1 Half Transfer flag */ +#define DMA_ISR_TEIF1_Pos (3U) +#define DMA_ISR_TEIF1_Msk (0x1UL << DMA_ISR_TEIF1_Pos) /*!< 0x00000008 */ +#define DMA_ISR_TEIF1 DMA_ISR_TEIF1_Msk /*!< Channel 1 Transfer Error flag */ +#define DMA_ISR_GIF2_Pos (4U) +#define DMA_ISR_GIF2_Msk (0x1UL << DMA_ISR_GIF2_Pos) /*!< 0x00000010 */ +#define DMA_ISR_GIF2 DMA_ISR_GIF2_Msk /*!< Channel 2 Global interrupt flag */ +#define DMA_ISR_TCIF2_Pos (5U) +#define DMA_ISR_TCIF2_Msk (0x1UL << DMA_ISR_TCIF2_Pos) /*!< 0x00000020 */ +#define DMA_ISR_TCIF2 DMA_ISR_TCIF2_Msk /*!< Channel 2 Transfer Complete flag */ +#define DMA_ISR_HTIF2_Pos (6U) +#define DMA_ISR_HTIF2_Msk (0x1UL << DMA_ISR_HTIF2_Pos) /*!< 0x00000040 */ +#define DMA_ISR_HTIF2 DMA_ISR_HTIF2_Msk /*!< Channel 2 Half Transfer flag */ +#define DMA_ISR_TEIF2_Pos (7U) +#define DMA_ISR_TEIF2_Msk (0x1UL << DMA_ISR_TEIF2_Pos) /*!< 0x00000080 */ +#define DMA_ISR_TEIF2 DMA_ISR_TEIF2_Msk /*!< Channel 2 Transfer Error flag */ +#define DMA_ISR_GIF3_Pos (8U) +#define DMA_ISR_GIF3_Msk (0x1UL << DMA_ISR_GIF3_Pos) /*!< 0x00000100 */ +#define DMA_ISR_GIF3 DMA_ISR_GIF3_Msk /*!< Channel 3 Global interrupt flag */ +#define DMA_ISR_TCIF3_Pos (9U) +#define DMA_ISR_TCIF3_Msk (0x1UL << DMA_ISR_TCIF3_Pos) /*!< 0x00000200 */ +#define DMA_ISR_TCIF3 DMA_ISR_TCIF3_Msk /*!< Channel 3 Transfer Complete flag */ +#define DMA_ISR_HTIF3_Pos (10U) +#define DMA_ISR_HTIF3_Msk (0x1UL << DMA_ISR_HTIF3_Pos) /*!< 0x00000400 */ +#define DMA_ISR_HTIF3 DMA_ISR_HTIF3_Msk /*!< Channel 3 Half Transfer flag */ +#define DMA_ISR_TEIF3_Pos (11U) +#define DMA_ISR_TEIF3_Msk (0x1UL << DMA_ISR_TEIF3_Pos) /*!< 0x00000800 */ +#define DMA_ISR_TEIF3 DMA_ISR_TEIF3_Msk /*!< Channel 3 Transfer Error flag */ +#define DMA_ISR_GIF4_Pos (12U) +#define DMA_ISR_GIF4_Msk (0x1UL << DMA_ISR_GIF4_Pos) /*!< 0x00001000 */ +#define DMA_ISR_GIF4 DMA_ISR_GIF4_Msk /*!< Channel 4 Global interrupt flag */ +#define DMA_ISR_TCIF4_Pos (13U) +#define DMA_ISR_TCIF4_Msk (0x1UL << DMA_ISR_TCIF4_Pos) /*!< 0x00002000 */ +#define DMA_ISR_TCIF4 DMA_ISR_TCIF4_Msk /*!< Channel 4 Transfer Complete flag */ +#define DMA_ISR_HTIF4_Pos (14U) +#define DMA_ISR_HTIF4_Msk (0x1UL << DMA_ISR_HTIF4_Pos) /*!< 0x00004000 */ +#define DMA_ISR_HTIF4 DMA_ISR_HTIF4_Msk /*!< Channel 4 Half Transfer flag */ +#define DMA_ISR_TEIF4_Pos (15U) +#define DMA_ISR_TEIF4_Msk (0x1UL << DMA_ISR_TEIF4_Pos) /*!< 0x00008000 */ +#define DMA_ISR_TEIF4 DMA_ISR_TEIF4_Msk /*!< Channel 4 Transfer Error flag */ +#define DMA_ISR_GIF5_Pos (16U) +#define DMA_ISR_GIF5_Msk (0x1UL << DMA_ISR_GIF5_Pos) /*!< 0x00010000 */ +#define DMA_ISR_GIF5 DMA_ISR_GIF5_Msk /*!< Channel 5 Global interrupt flag */ +#define DMA_ISR_TCIF5_Pos (17U) +#define DMA_ISR_TCIF5_Msk (0x1UL << DMA_ISR_TCIF5_Pos) /*!< 0x00020000 */ +#define DMA_ISR_TCIF5 DMA_ISR_TCIF5_Msk /*!< Channel 5 Transfer Complete flag */ +#define DMA_ISR_HTIF5_Pos (18U) +#define DMA_ISR_HTIF5_Msk (0x1UL << DMA_ISR_HTIF5_Pos) /*!< 0x00040000 */ +#define DMA_ISR_HTIF5 DMA_ISR_HTIF5_Msk /*!< Channel 5 Half Transfer flag */ +#define DMA_ISR_TEIF5_Pos (19U) +#define DMA_ISR_TEIF5_Msk (0x1UL << DMA_ISR_TEIF5_Pos) /*!< 0x00080000 */ +#define DMA_ISR_TEIF5 DMA_ISR_TEIF5_Msk /*!< Channel 5 Transfer Error flag */ +#define DMA_ISR_GIF6_Pos (20U) +#define DMA_ISR_GIF6_Msk (0x1UL << DMA_ISR_GIF6_Pos) /*!< 0x00100000 */ +#define DMA_ISR_GIF6 DMA_ISR_GIF6_Msk /*!< Channel 6 Global interrupt flag */ +#define DMA_ISR_TCIF6_Pos (21U) +#define DMA_ISR_TCIF6_Msk (0x1UL << DMA_ISR_TCIF6_Pos) /*!< 0x00200000 */ +#define DMA_ISR_TCIF6 DMA_ISR_TCIF6_Msk /*!< Channel 6 Transfer Complete flag */ +#define DMA_ISR_HTIF6_Pos (22U) +#define DMA_ISR_HTIF6_Msk (0x1UL << DMA_ISR_HTIF6_Pos) /*!< 0x00400000 */ +#define DMA_ISR_HTIF6 DMA_ISR_HTIF6_Msk /*!< Channel 6 Half Transfer flag */ +#define DMA_ISR_TEIF6_Pos (23U) +#define DMA_ISR_TEIF6_Msk (0x1UL << DMA_ISR_TEIF6_Pos) /*!< 0x00800000 */ +#define DMA_ISR_TEIF6 DMA_ISR_TEIF6_Msk /*!< Channel 6 Transfer Error flag */ +#define DMA_ISR_GIF7_Pos (24U) +#define DMA_ISR_GIF7_Msk (0x1UL << DMA_ISR_GIF7_Pos) /*!< 0x01000000 */ +#define DMA_ISR_GIF7 DMA_ISR_GIF7_Msk /*!< Channel 7 Global interrupt flag */ +#define DMA_ISR_TCIF7_Pos (25U) +#define DMA_ISR_TCIF7_Msk (0x1UL << DMA_ISR_TCIF7_Pos) /*!< 0x02000000 */ +#define DMA_ISR_TCIF7 DMA_ISR_TCIF7_Msk /*!< Channel 7 Transfer Complete flag */ +#define DMA_ISR_HTIF7_Pos (26U) +#define DMA_ISR_HTIF7_Msk (0x1UL << DMA_ISR_HTIF7_Pos) /*!< 0x04000000 */ +#define DMA_ISR_HTIF7 DMA_ISR_HTIF7_Msk /*!< Channel 7 Half Transfer flag */ +#define DMA_ISR_TEIF7_Pos (27U) +#define DMA_ISR_TEIF7_Msk (0x1UL << DMA_ISR_TEIF7_Pos) /*!< 0x08000000 */ +#define DMA_ISR_TEIF7 DMA_ISR_TEIF7_Msk /*!< Channel 7 Transfer Error flag */ + +/******************* Bit definition for DMA_IFCR register *****************/ +#define DMA_IFCR_CGIF1_Pos (0U) +#define DMA_IFCR_CGIF1_Msk (0x1UL << DMA_IFCR_CGIF1_Pos) /*!< 0x00000001 */ +#define DMA_IFCR_CGIF1 DMA_IFCR_CGIF1_Msk /*!< Channel 1 Global interrupt clear */ +#define DMA_IFCR_CTCIF1_Pos (1U) +#define DMA_IFCR_CTCIF1_Msk (0x1UL << DMA_IFCR_CTCIF1_Pos) /*!< 0x00000002 */ +#define DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1_Msk /*!< Channel 1 Transfer Complete clear */ +#define DMA_IFCR_CHTIF1_Pos (2U) +#define DMA_IFCR_CHTIF1_Msk (0x1UL << DMA_IFCR_CHTIF1_Pos) /*!< 0x00000004 */ +#define DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1_Msk /*!< Channel 1 Half Transfer clear */ +#define DMA_IFCR_CTEIF1_Pos (3U) +#define DMA_IFCR_CTEIF1_Msk (0x1UL << DMA_IFCR_CTEIF1_Pos) /*!< 0x00000008 */ +#define DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1_Msk /*!< Channel 1 Transfer Error clear */ +#define DMA_IFCR_CGIF2_Pos (4U) +#define DMA_IFCR_CGIF2_Msk (0x1UL << DMA_IFCR_CGIF2_Pos) /*!< 0x00000010 */ +#define DMA_IFCR_CGIF2 DMA_IFCR_CGIF2_Msk /*!< Channel 2 Global interrupt clear */ +#define DMA_IFCR_CTCIF2_Pos (5U) +#define DMA_IFCR_CTCIF2_Msk (0x1UL << DMA_IFCR_CTCIF2_Pos) /*!< 0x00000020 */ +#define DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2_Msk /*!< Channel 2 Transfer Complete clear */ +#define DMA_IFCR_CHTIF2_Pos (6U) +#define DMA_IFCR_CHTIF2_Msk (0x1UL << DMA_IFCR_CHTIF2_Pos) /*!< 0x00000040 */ +#define DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2_Msk /*!< Channel 2 Half Transfer clear */ +#define DMA_IFCR_CTEIF2_Pos (7U) +#define DMA_IFCR_CTEIF2_Msk (0x1UL << DMA_IFCR_CTEIF2_Pos) /*!< 0x00000080 */ +#define DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2_Msk /*!< Channel 2 Transfer Error clear */ +#define DMA_IFCR_CGIF3_Pos (8U) +#define DMA_IFCR_CGIF3_Msk (0x1UL << DMA_IFCR_CGIF3_Pos) /*!< 0x00000100 */ +#define DMA_IFCR_CGIF3 DMA_IFCR_CGIF3_Msk /*!< Channel 3 Global interrupt clear */ +#define DMA_IFCR_CTCIF3_Pos (9U) +#define DMA_IFCR_CTCIF3_Msk (0x1UL << DMA_IFCR_CTCIF3_Pos) /*!< 0x00000200 */ +#define DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3_Msk /*!< Channel 3 Transfer Complete clear */ +#define DMA_IFCR_CHTIF3_Pos (10U) +#define DMA_IFCR_CHTIF3_Msk (0x1UL << DMA_IFCR_CHTIF3_Pos) /*!< 0x00000400 */ +#define DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3_Msk /*!< Channel 3 Half Transfer clear */ +#define DMA_IFCR_CTEIF3_Pos (11U) +#define DMA_IFCR_CTEIF3_Msk (0x1UL << DMA_IFCR_CTEIF3_Pos) /*!< 0x00000800 */ +#define DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3_Msk /*!< Channel 3 Transfer Error clear */ +#define DMA_IFCR_CGIF4_Pos (12U) +#define DMA_IFCR_CGIF4_Msk (0x1UL << DMA_IFCR_CGIF4_Pos) /*!< 0x00001000 */ +#define DMA_IFCR_CGIF4 DMA_IFCR_CGIF4_Msk /*!< Channel 4 Global interrupt clear */ +#define DMA_IFCR_CTCIF4_Pos (13U) +#define DMA_IFCR_CTCIF4_Msk (0x1UL << DMA_IFCR_CTCIF4_Pos) /*!< 0x00002000 */ +#define DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4_Msk /*!< Channel 4 Transfer Complete clear */ +#define DMA_IFCR_CHTIF4_Pos (14U) +#define DMA_IFCR_CHTIF4_Msk (0x1UL << DMA_IFCR_CHTIF4_Pos) /*!< 0x00004000 */ +#define DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4_Msk /*!< Channel 4 Half Transfer clear */ +#define DMA_IFCR_CTEIF4_Pos (15U) +#define DMA_IFCR_CTEIF4_Msk (0x1UL << DMA_IFCR_CTEIF4_Pos) /*!< 0x00008000 */ +#define DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4_Msk /*!< Channel 4 Transfer Error clear */ +#define DMA_IFCR_CGIF5_Pos (16U) +#define DMA_IFCR_CGIF5_Msk (0x1UL << DMA_IFCR_CGIF5_Pos) /*!< 0x00010000 */ +#define DMA_IFCR_CGIF5 DMA_IFCR_CGIF5_Msk /*!< Channel 5 Global interrupt clear */ +#define DMA_IFCR_CTCIF5_Pos (17U) +#define DMA_IFCR_CTCIF5_Msk (0x1UL << DMA_IFCR_CTCIF5_Pos) /*!< 0x00020000 */ +#define DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5_Msk /*!< Channel 5 Transfer Complete clear */ +#define DMA_IFCR_CHTIF5_Pos (18U) +#define DMA_IFCR_CHTIF5_Msk (0x1UL << DMA_IFCR_CHTIF5_Pos) /*!< 0x00040000 */ +#define DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5_Msk /*!< Channel 5 Half Transfer clear */ +#define DMA_IFCR_CTEIF5_Pos (19U) +#define DMA_IFCR_CTEIF5_Msk (0x1UL << DMA_IFCR_CTEIF5_Pos) /*!< 0x00080000 */ +#define DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5_Msk /*!< Channel 5 Transfer Error clear */ +#define DMA_IFCR_CGIF6_Pos (20U) +#define DMA_IFCR_CGIF6_Msk (0x1UL << DMA_IFCR_CGIF6_Pos) /*!< 0x00100000 */ +#define DMA_IFCR_CGIF6 DMA_IFCR_CGIF6_Msk /*!< Channel 6 Global interrupt clear */ +#define DMA_IFCR_CTCIF6_Pos (21U) +#define DMA_IFCR_CTCIF6_Msk (0x1UL << DMA_IFCR_CTCIF6_Pos) /*!< 0x00200000 */ +#define DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6_Msk /*!< Channel 6 Transfer Complete clear */ +#define DMA_IFCR_CHTIF6_Pos (22U) +#define DMA_IFCR_CHTIF6_Msk (0x1UL << DMA_IFCR_CHTIF6_Pos) /*!< 0x00400000 */ +#define DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6_Msk /*!< Channel 6 Half Transfer clear */ +#define DMA_IFCR_CTEIF6_Pos (23U) +#define DMA_IFCR_CTEIF6_Msk (0x1UL << DMA_IFCR_CTEIF6_Pos) /*!< 0x00800000 */ +#define DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6_Msk /*!< Channel 6 Transfer Error clear */ +#define DMA_IFCR_CGIF7_Pos (24U) +#define DMA_IFCR_CGIF7_Msk (0x1UL << DMA_IFCR_CGIF7_Pos) /*!< 0x01000000 */ +#define DMA_IFCR_CGIF7 DMA_IFCR_CGIF7_Msk /*!< Channel 7 Global interrupt clear */ +#define DMA_IFCR_CTCIF7_Pos (25U) +#define DMA_IFCR_CTCIF7_Msk (0x1UL << DMA_IFCR_CTCIF7_Pos) /*!< 0x02000000 */ +#define DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7_Msk /*!< Channel 7 Transfer Complete clear */ +#define DMA_IFCR_CHTIF7_Pos (26U) +#define DMA_IFCR_CHTIF7_Msk (0x1UL << DMA_IFCR_CHTIF7_Pos) /*!< 0x04000000 */ +#define DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7_Msk /*!< Channel 7 Half Transfer clear */ +#define DMA_IFCR_CTEIF7_Pos (27U) +#define DMA_IFCR_CTEIF7_Msk (0x1UL << DMA_IFCR_CTEIF7_Pos) /*!< 0x08000000 */ +#define DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7_Msk /*!< Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CCR register ******************/ +#define DMA_CCR_EN_Pos (0U) +#define DMA_CCR_EN_Msk (0x1UL << DMA_CCR_EN_Pos) /*!< 0x00000001 */ +#define DMA_CCR_EN DMA_CCR_EN_Msk /*!< Channel enable */ +#define DMA_CCR_TCIE_Pos (1U) +#define DMA_CCR_TCIE_Msk (0x1UL << DMA_CCR_TCIE_Pos) /*!< 0x00000002 */ +#define DMA_CCR_TCIE DMA_CCR_TCIE_Msk /*!< Transfer complete interrupt enable */ +#define DMA_CCR_HTIE_Pos (2U) +#define DMA_CCR_HTIE_Msk (0x1UL << DMA_CCR_HTIE_Pos) /*!< 0x00000004 */ +#define DMA_CCR_HTIE DMA_CCR_HTIE_Msk /*!< Half Transfer interrupt enable */ +#define DMA_CCR_TEIE_Pos (3U) +#define DMA_CCR_TEIE_Msk (0x1UL << DMA_CCR_TEIE_Pos) /*!< 0x00000008 */ +#define DMA_CCR_TEIE DMA_CCR_TEIE_Msk /*!< Transfer error interrupt enable */ +#define DMA_CCR_DIR_Pos (4U) +#define DMA_CCR_DIR_Msk (0x1UL << DMA_CCR_DIR_Pos) /*!< 0x00000010 */ +#define DMA_CCR_DIR DMA_CCR_DIR_Msk /*!< Data transfer direction */ +#define DMA_CCR_CIRC_Pos (5U) +#define DMA_CCR_CIRC_Msk (0x1UL << DMA_CCR_CIRC_Pos) /*!< 0x00000020 */ +#define DMA_CCR_CIRC DMA_CCR_CIRC_Msk /*!< Circular mode */ +#define DMA_CCR_PINC_Pos (6U) +#define DMA_CCR_PINC_Msk (0x1UL << DMA_CCR_PINC_Pos) /*!< 0x00000040 */ +#define DMA_CCR_PINC DMA_CCR_PINC_Msk /*!< Peripheral increment mode */ +#define DMA_CCR_MINC_Pos (7U) +#define DMA_CCR_MINC_Msk (0x1UL << DMA_CCR_MINC_Pos) /*!< 0x00000080 */ +#define DMA_CCR_MINC DMA_CCR_MINC_Msk /*!< Memory increment mode */ +#define DMA_CCR_PSIZE_Pos (8U) +#define DMA_CCR_PSIZE_Msk (0x3UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000300 */ +#define DMA_CCR_PSIZE DMA_CCR_PSIZE_Msk /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR_PSIZE_0 (0x1UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000100 */ +#define DMA_CCR_PSIZE_1 (0x2UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000200 */ +#define DMA_CCR_MSIZE_Pos (10U) +#define DMA_CCR_MSIZE_Msk (0x3UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000C00 */ +#define DMA_CCR_MSIZE DMA_CCR_MSIZE_Msk /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR_MSIZE_0 (0x1UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000400 */ +#define DMA_CCR_MSIZE_1 (0x2UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000800 */ +#define DMA_CCR_PL_Pos (12U) +#define DMA_CCR_PL_Msk (0x3UL << DMA_CCR_PL_Pos) /*!< 0x00003000 */ +#define DMA_CCR_PL DMA_CCR_PL_Msk /*!< PL[1:0] bits(Channel Priority level)*/ +#define DMA_CCR_PL_0 (0x1UL << DMA_CCR_PL_Pos) /*!< 0x00001000 */ +#define DMA_CCR_PL_1 (0x2UL << DMA_CCR_PL_Pos) /*!< 0x00002000 */ +#define DMA_CCR_MEM2MEM_Pos (14U) +#define DMA_CCR_MEM2MEM_Msk (0x1UL << DMA_CCR_MEM2MEM_Pos) /*!< 0x00004000 */ +#define DMA_CCR_MEM2MEM DMA_CCR_MEM2MEM_Msk /*!< Memory to memory mode */ + +/****************** Bit definition for DMA_CNDTR register *****************/ +#define DMA_CNDTR_NDT_Pos (0U) +#define DMA_CNDTR_NDT_Msk (0xFFFFUL << DMA_CNDTR_NDT_Pos) /*!< 0x0000FFFF */ +#define DMA_CNDTR_NDT DMA_CNDTR_NDT_Msk /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CPAR register ******************/ +#define DMA_CPAR_PA_Pos (0U) +#define DMA_CPAR_PA_Msk (0xFFFFFFFFUL << DMA_CPAR_PA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CPAR_PA DMA_CPAR_PA_Msk /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CMAR register ******************/ +#define DMA_CMAR_MA_Pos (0U) +#define DMA_CMAR_MA_Msk (0xFFFFFFFFUL << DMA_CMAR_MA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CMAR_MA DMA_CMAR_MA_Msk /*!< Memory Address */ + +/****************************************************************************/ +/* */ +/* External Interrupt/Event Controller (EXTI) */ +/* */ +/****************************************************************************/ +/****************** Bit definition for EXTI_RTSR register *****************/ +#define EXTI_RTSR_RT0_Pos (0U) +#define EXTI_RTSR_RT0_Msk (0x1UL << EXTI_RTSR_RT0_Pos) /*!< 0x00000001 */ +#define EXTI_RTSR_RT0 EXTI_RTSR_RT0_Msk /*!< Rising trigger configuration for input line 0 */ +#define EXTI_RTSR_RT1_Pos (1U) +#define EXTI_RTSR_RT1_Msk (0x1UL << EXTI_RTSR_RT1_Pos) /*!< 0x00000002 */ +#define EXTI_RTSR_RT1 EXTI_RTSR_RT1_Msk /*!< Rising trigger configuration for input line 1 */ +#define EXTI_RTSR_RT2_Pos (2U) +#define EXTI_RTSR_RT2_Msk (0x1UL << EXTI_RTSR_RT2_Pos) /*!< 0x00000004 */ +#define EXTI_RTSR_RT2 EXTI_RTSR_RT2_Msk /*!< Rising trigger configuration for input line 2 */ +#define EXTI_RTSR_RT3_Pos (3U) +#define EXTI_RTSR_RT3_Msk (0x1UL << EXTI_RTSR_RT3_Pos) /*!< 0x00000008 */ +#define EXTI_RTSR_RT3 EXTI_RTSR_RT3_Msk /*!< Rising trigger configuration for input line 3 */ +#define EXTI_RTSR_RT4_Pos (4U) +#define EXTI_RTSR_RT4_Msk (0x1UL << EXTI_RTSR_RT4_Pos) /*!< 0x00000010 */ +#define EXTI_RTSR_RT4 EXTI_RTSR_RT4_Msk /*!< Rising trigger configuration for input line 4 */ +#define EXTI_RTSR_RT5_Pos (5U) +#define EXTI_RTSR_RT5_Msk (0x1UL << EXTI_RTSR_RT5_Pos) /*!< 0x00000020 */ +#define EXTI_RTSR_RT5 EXTI_RTSR_RT5_Msk /*!< Rising trigger configuration for input line 5 */ +#define EXTI_RTSR_RT6_Pos (6U) +#define EXTI_RTSR_RT6_Msk (0x1UL << EXTI_RTSR_RT6_Pos) /*!< 0x00000040 */ +#define EXTI_RTSR_RT6 EXTI_RTSR_RT6_Msk /*!< Rising trigger configuration for input line 6 */ +#define EXTI_RTSR_RT7_Pos (7U) +#define EXTI_RTSR_RT7_Msk (0x1UL << EXTI_RTSR_RT7_Pos) /*!< 0x00000080 */ +#define EXTI_RTSR_RT7 EXTI_RTSR_RT7_Msk /*!< Rising trigger configuration for input line 7 */ +#define EXTI_RTSR_RT8_Pos (8U) +#define EXTI_RTSR_RT8_Msk (0x1UL << EXTI_RTSR_RT8_Pos) /*!< 0x00000100 */ +#define EXTI_RTSR_RT8 EXTI_RTSR_RT8_Msk /*!< Rising trigger configuration for input line 8 */ +#define EXTI_RTSR_RT9_Pos (9U) +#define EXTI_RTSR_RT9_Msk (0x1UL << EXTI_RTSR_RT9_Pos) /*!< 0x00000200 */ +#define EXTI_RTSR_RT9 EXTI_RTSR_RT9_Msk /*!< Rising trigger configuration for input line 9 */ +#define EXTI_RTSR_RT10_Pos (10U) +#define EXTI_RTSR_RT10_Msk (0x1UL << EXTI_RTSR_RT10_Pos) /*!< 0x00000400 */ +#define EXTI_RTSR_RT10 EXTI_RTSR_RT10_Msk /*!< Rising trigger configuration for input line 10 */ +#define EXTI_RTSR_RT11_Pos (11U) +#define EXTI_RTSR_RT11_Msk (0x1UL << EXTI_RTSR_RT11_Pos) /*!< 0x00000800 */ +#define EXTI_RTSR_RT11 EXTI_RTSR_RT11_Msk /*!< Rising trigger configuration for input line 11 */ +#define EXTI_RTSR_RT12_Pos (12U) +#define EXTI_RTSR_RT12_Msk (0x1UL << EXTI_RTSR_RT12_Pos) /*!< 0x00001000 */ +#define EXTI_RTSR_RT12 EXTI_RTSR_RT12_Msk /*!< Rising trigger configuration for input line 12 */ +#define EXTI_RTSR_RT13_Pos (13U) +#define EXTI_RTSR_RT13_Msk (0x1UL << EXTI_RTSR_RT13_Pos) /*!< 0x00002000 */ +#define EXTI_RTSR_RT13 EXTI_RTSR_RT13_Msk /*!< Rising trigger configuration for input line 13 */ +#define EXTI_RTSR_RT14_Pos (14U) +#define EXTI_RTSR_RT14_Msk (0x1UL << EXTI_RTSR_RT14_Pos) /*!< 0x00004000 */ +#define EXTI_RTSR_RT14 EXTI_RTSR_RT14_Msk /*!< Rising trigger configuration for input line 14 */ +#define EXTI_RTSR_RT15_Pos (15U) +#define EXTI_RTSR_RT15_Msk (0x1UL << EXTI_RTSR_RT15_Pos) /*!< 0x00008000 */ +#define EXTI_RTSR_RT15 EXTI_RTSR_RT15_Msk /*!< Rising trigger configuration for input line 15 */ +#define EXTI_RTSR_RT16_Pos (16U) +#define EXTI_RTSR_RT16_Msk (0x1UL << EXTI_RTSR_RT16_Pos) /*!< 0x00010000 */ +#define EXTI_RTSR_RT16 EXTI_RTSR_RT16_Msk /*!< Rising trigger configuration for input line 16 */ +#define EXTI_RTSR_RT17_Pos (17U) +#define EXTI_RTSR_RT17_Msk (0x1UL << EXTI_RTSR_RT16_Pos) /*!< 0x00020000 */ +#define EXTI_RTSR_RT17 EXTI_RTSR_RT17_Msk /*!< Rising trigger configuration for input line 17 */ +#define EXTI_RTSR_RT18_Pos (18U) +#define EXTI_RTSR_RT18_Msk (0x1UL << EXTI_RTSR_RT18_Pos) /*!< 0x00040000 */ +#define EXTI_RTSR_RT18 EXTI_RTSR_RT18_Msk /*!< Rising trigger configuration for input line 18 */ +#define EXTI_RTSR_RT20_Pos (20U) +#define EXTI_RTSR_RT20_Msk (0x1UL << EXTI_RTSR_RT20_Pos) /*!< 0x00040000 */ +#define EXTI_RTSR_RT20 EXTI_RTSR_RT20_Msk /*!< Rising trigger configuration for input line 20 */ + +/****************** Bit definition for EXTI_FTSR register *****************/ +#define EXTI_FTSR_FT0_Pos (0U) +#define EXTI_FTSR_FT0_Msk (0x1UL << EXTI_FTSR_FT0_Pos) /*!< 0x00000001 */ +#define EXTI_FTSR_FT0 EXTI_FTSR_FT0_Msk /*!< Falling trigger configuration for input line 0 */ +#define EXTI_FTSR_FT1_Pos (1U) +#define EXTI_FTSR_FT1_Msk (0x1UL << EXTI_FTSR_FT1_Pos) /*!< 0x00000002 */ +#define EXTI_FTSR_FT1 EXTI_FTSR_FT1_Msk /*!< Falling trigger configuration for input line 1 */ +#define EXTI_FTSR_FT2_Pos (2U) +#define EXTI_FTSR_FT2_Msk (0x1UL << EXTI_FTSR_FT2_Pos) /*!< 0x00000004 */ +#define EXTI_FTSR_FT2 EXTI_FTSR_FT2_Msk /*!< Falling trigger configuration for input line 2 */ +#define EXTI_FTSR_FT3_Pos (3U) +#define EXTI_FTSR_FT3_Msk (0x1UL << EXTI_FTSR_FT3_Pos) /*!< 0x00000008 */ +#define EXTI_FTSR_FT3 EXTI_FTSR_FT3_Msk /*!< Falling trigger configuration for input line 3 */ +#define EXTI_FTSR_FT4_Pos (4U) +#define EXTI_FTSR_FT4_Msk (0x1UL << EXTI_FTSR_FT4_Pos) /*!< 0x00000010 */ +#define EXTI_FTSR_FT4 EXTI_FTSR_FT4_Msk /*!< Falling trigger configuration for input line 4 */ +#define EXTI_FTSR_FT5_Pos (5U) +#define EXTI_FTSR_FT5_Msk (0x1UL << EXTI_FTSR_FT5_Pos) /*!< 0x00000020 */ +#define EXTI_FTSR_FT5 EXTI_FTSR_FT5_Msk /*!< Falling trigger configuration for input line 5 */ +#define EXTI_FTSR_FT6_Pos (6U) +#define EXTI_FTSR_FT6_Msk (0x1UL << EXTI_FTSR_FT6_Pos) /*!< 0x00000040 */ +#define EXTI_FTSR_FT6 EXTI_FTSR_FT6_Msk /*!< Falling trigger configuration for input line 6 */ +#define EXTI_FTSR_FT7_Pos (7U) +#define EXTI_FTSR_FT7_Msk (0x1UL << EXTI_FTSR_FT7_Pos) /*!< 0x00000080 */ +#define EXTI_FTSR_FT7 EXTI_FTSR_FT7_Msk /*!< Falling trigger configuration for input line 7 */ +#define EXTI_FTSR_FT8_Pos (8U) +#define EXTI_FTSR_FT8_Msk (0x1UL << EXTI_FTSR_FT8_Pos) /*!< 0x00000100 */ +#define EXTI_FTSR_FT8 EXTI_FTSR_FT8_Msk /*!< Falling trigger configuration for input line 8 */ +#define EXTI_FTSR_FT9_Pos (9U) +#define EXTI_FTSR_FT9_Msk (0x1UL << EXTI_FTSR_FT9_Pos) /*!< 0x00000200 */ +#define EXTI_FTSR_FT9 EXTI_FTSR_FT9_Msk /*!< Falling trigger configuration for input line 9 */ +#define EXTI_FTSR_FT10_Pos (10U) +#define EXTI_FTSR_FT10_Msk (0x1UL << EXTI_FTSR_FT10_Pos) /*!< 0x00000400 */ +#define EXTI_FTSR_FT10 EXTI_FTSR_FT10_Msk /*!< Falling trigger configuration for input line 10 */ +#define EXTI_FTSR_FT11_Pos (11U) +#define EXTI_FTSR_FT11_Msk (0x1UL << EXTI_FTSR_FT11_Pos) /*!< 0x00000800 */ +#define EXTI_FTSR_FT11 EXTI_FTSR_FT11_Msk /*!< Falling trigger configuration for input line 11 */ +#define EXTI_FTSR_FT12_Pos (12U) +#define EXTI_FTSR_FT12_Msk (0x1UL << EXTI_FTSR_FT12_Pos) /*!< 0x00001000 */ +#define EXTI_FTSR_FT12 EXTI_FTSR_FT12_Msk /*!< Falling trigger configuration for input line 12 */ +#define EXTI_FTSR_FT13_Pos (13U) +#define EXTI_FTSR_FT13_Msk (0x1UL << EXTI_FTSR_FT13_Pos) /*!< 0x00002000 */ +#define EXTI_FTSR_FT13 EXTI_FTSR_FT13_Msk /*!< Falling trigger configuration for input line 13 */ +#define EXTI_FTSR_FT14_Pos (14U) +#define EXTI_FTSR_FT14_Msk (0x1UL << EXTI_FTSR_FT14_Pos) /*!< 0x00004000 */ +#define EXTI_FTSR_FT14 EXTI_FTSR_FT14_Msk /*!< Falling trigger configuration for input line 14 */ +#define EXTI_FTSR_FT15_Pos (15U) +#define EXTI_FTSR_FT15_Msk (0x1UL << EXTI_FTSR_FT15_Pos) /*!< 0x00008000 */ +#define EXTI_FTSR_FT15 EXTI_FTSR_FT15_Msk /*!< Falling trigger configuration for input line 15 */ +#define EXTI_FTSR_FT16_Pos (16U) +#define EXTI_FTSR_FT16_Msk (0x1UL << EXTI_FTSR_FT16_Pos) /*!< 0x00010000 */ +#define EXTI_FTSR_FT16 EXTI_FTSR_FT16_Msk /*!< Falling trigger configuration for input line 16 */ +#define EXTI_FTSR_FT17_Pos (17U) +#define EXTI_FTSR_FT17_Msk (0x1UL << EXTI_FTSR_FT17_Pos) /*!< 0x00020000 */ +#define EXTI_FTSR_FT17 EXTI_FTSR_FT17_Msk /*!< Falling trigger configuration for input line 17 */ +#define EXTI_FTSR_FT18_Pos (18U) +#define EXTI_FTSR_FT18_Msk (0x1UL << EXTI_FTSR_FT18_Pos) /*!< 0x00040000 */ +#define EXTI_FTSR_FT18 EXTI_FTSR_FT18_Msk /*!< Falling trigger configuration for input line 18 */ +#define EXTI_FTSR_FT20_Pos (20U) +#define EXTI_FTSR_FT20_Msk (0x1UL << EXTI_FTSR_FT20_Pos) /*!< 0x00040000 */ +#define EXTI_FTSR_FT20 EXTI_FTSR_FT20_Msk /*!< Falling trigger configuration for input line 20 */ + +/****************** Bit definition for EXTI_SWIER register ****************/ +#define EXTI_SWIER_SWI0_Pos (0U) +#define EXTI_SWIER_SWI0_Msk (0x1UL << EXTI_SWIER_SWI0_Pos) /*!< 0x00000001 */ +#define EXTI_SWIER_SWI0 EXTI_SWIER_SWI0_Msk /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER_SWI1_Pos (1U) +#define EXTI_SWIER_SWI1_Msk (0x1UL << EXTI_SWIER_SWI1_Pos) /*!< 0x00000002 */ +#define EXTI_SWIER_SWI1 EXTI_SWIER_SWI1_Msk /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER_SWI2_Pos (2U) +#define EXTI_SWIER_SWI2_Msk (0x1UL << EXTI_SWIER_SWI2_Pos) /*!< 0x00000004 */ +#define EXTI_SWIER_SWI2 EXTI_SWIER_SWI2_Msk /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER_SWI3_Pos (3U) +#define EXTI_SWIER_SWI3_Msk (0x1UL << EXTI_SWIER_SWI3_Pos) /*!< 0x00000008 */ +#define EXTI_SWIER_SWI3 EXTI_SWIER_SWI3_Msk /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER_SWI4_Pos (4U) +#define EXTI_SWIER_SWI4_Msk (0x1UL << EXTI_SWIER_SWI4_Pos) /*!< 0x00000010 */ +#define EXTI_SWIER_SWI4 EXTI_SWIER_SWI4_Msk /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER_SWI5_Pos (5U) +#define EXTI_SWIER_SWI5_Msk (0x1UL << EXTI_SWIER_SWI5_Pos) /*!< 0x00000020 */ +#define EXTI_SWIER_SWI5 EXTI_SWIER_SWI5_Msk /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER_SWI6_Pos (6U) +#define EXTI_SWIER_SWI6_Msk (0x1UL << EXTI_SWIER_SWI6_Pos) /*!< 0x00000040 */ +#define EXTI_SWIER_SWI6 EXTI_SWIER_SWI6_Msk /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER_SWI7_Pos (7U) +#define EXTI_SWIER_SWI7_Msk (0x1UL << EXTI_SWIER_SWI7_Pos) /*!< 0x00000080 */ +#define EXTI_SWIER_SWI7 EXTI_SWIER_SWI7_Msk /*!< Software Interrupt on line 7 */ +#define EXTI_SWIER_SWI8_Pos (8U) +#define EXTI_SWIER_SWI8_Msk (0x1UL << EXTI_SWIER_SWI8_Pos) /*!< 0x00000100 */ +#define EXTI_SWIER_SWI8 EXTI_SWIER_SWI8_Msk /*!< Software Interrupt on line 8 */ +#define EXTI_SWIER_SWI9_Pos (9U) +#define EXTI_SWIER_SWI9_Msk (0x1UL << EXTI_SWIER_SWI9_Pos) /*!< 0x00000200 */ +#define EXTI_SWIER_SWI9 EXTI_SWIER_SWI9_Msk /*!< Software Interrupt on line 9 */ +#define EXTI_SWIER_SWI10_Pos (10U) +#define EXTI_SWIER_SWI10_Msk (0x1UL << EXTI_SWIER_SWI10_Pos) /*!< 0x00000400 */ +#define EXTI_SWIER_SWI10 EXTI_SWIER_SWI10_Msk /*!< Software Interrupt on line 10 */ +#define EXTI_SWIER_SWI11_Pos (11U) +#define EXTI_SWIER_SWI11_Msk (0x1UL << EXTI_SWIER_SWI11_Pos) /*!< 0x00000800 */ +#define EXTI_SWIER_SWI11 EXTI_SWIER_SWI11_Msk /*!< Software Interrupt on line 11 */ +#define EXTI_SWIER_SWI12_Pos (12U) +#define EXTI_SWIER_SWI12_Msk (0x1UL << EXTI_SWIER_SWI12_Pos) /*!< 0x00001000 */ +#define EXTI_SWIER_SWI12 EXTI_SWIER_SWI12_Msk /*!< Software Interrupt on line 12 */ +#define EXTI_SWIER_SWI13_Pos (13U) +#define EXTI_SWIER_SWI13_Msk (0x1UL << EXTI_SWIER_SWI13_Pos) /*!< 0x00002000 */ +#define EXTI_SWIER_SWI13 EXTI_SWIER_SWI13_Msk /*!< Software Interrupt on line 13 */ +#define EXTI_SWIER_SWI14_Pos (14U) +#define EXTI_SWIER_SWI14_Msk (0x1UL << EXTI_SWIER_SWI14_Pos) /*!< 0x00004000 */ +#define EXTI_SWIER_SWI14 EXTI_SWIER_SWI14_Msk /*!< Software Interrupt on line 14 */ +#define EXTI_SWIER_SWI15_Pos (15U) +#define EXTI_SWIER_SWI15_Msk (0x1UL << EXTI_SWIER_SWI15_Pos) /*!< 0x00008000 */ +#define EXTI_SWIER_SWI15 EXTI_SWIER_SWI15_Msk /*!< Software Interrupt on line 15 */ +#define EXTI_SWIER_SWI16_Pos (16U) +#define EXTI_SWIER_SWI16_Msk (0x1UL << EXTI_SWIER_SWI16_Pos) /*!< 0x00010000 */ +#define EXTI_SWIER_SWI16 EXTI_SWIER_SWI16_Msk /*!< Software Interrupt on line 16 */ +#define EXTI_SWIER_SWI17_Pos (17U) +#define EXTI_SWIER_SWI17_Msk (0x1UL << EXTI_SWIER_SWI17_Pos) /*!< 0x00020000 */ +#define EXTI_SWIER_SWI17 EXTI_SWIER_SWI17_Msk /*!< Software Interrupt on line 17 */ +#define EXTI_SWIER_SWI18_Pos (18U) +#define EXTI_SWIER_SWI18_Msk (0x1UL << EXTI_SWIER_SWI18_Pos) /*!< 0x00040000 */ +#define EXTI_SWIER_SWI18 EXTI_SWIER_SWI18_Msk /*!< Software Interrupt on line 18*/ +#define EXTI_SWIER_SWI20_Pos (20U) +#define EXTI_SWIER_SWI20_Msk (0x1UL << EXTI_SWIER_SWI20_Pos) /*!< 0x00040000 */ +#define EXTI_SWIER_SWI20 EXTI_SWIER_SWI20_Msk /*!< Software Interrupt on line 20*/ + +/******************* Bit definition for EXTI_PR register ******************/ +#define EXTI_PR_PR0_Pos (0U) +#define EXTI_PR_PR0_Msk (0x1UL << EXTI_PR_PR0_Pos) /*!< 0x00000001 */ +#define EXTI_PR_PR0 EXTI_PR_PR0_Msk /*!< Rising Pending Interrupt Flag on line 0 */ +#define EXTI_PR_PR1_Pos (1U) +#define EXTI_PR_PR1_Msk (0x1UL << EXTI_PR_PR1_Pos) /*!< 0x00000002 */ +#define EXTI_PR_PR1 EXTI_PR_PR1_Msk /*!< Rising Pending Interrupt Flag on line 1 */ +#define EXTI_PR_PR2_Pos (2U) +#define EXTI_PR_PR2_Msk (0x1UL << EXTI_PR_PR2_Pos) /*!< 0x00000004 */ +#define EXTI_PR_PR2 EXTI_PR_PR2_Msk /*!< Rising Pending Interrupt Flag on line 2 */ +#define EXTI_PR_PR3_Pos (3U) +#define EXTI_PR_PR3_Msk (0x1UL << EXTI_PR_PR3_Pos) /*!< 0x00000008 */ +#define EXTI_PR_PR3 EXTI_PR_PR3_Msk /*!< Rising Pending Interrupt Flag on line 3 */ +#define EXTI_PR_PR_Pos (4U) +#define EXTI_PR_PR_Msk (0x1UL <
© Copyright (c) Puya Semiconductor Co. + * All rights reserved.
+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* This file refers the CMSIS standard, some adjustments are made according to Puya chips */ +#ifndef SYSTEM_PY32F003XX_H +#define SYSTEM_PY32F003XX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include + +/* Exported variables --------------------------------------------------------*/ +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +/* Exported constants --------------------------------------------------------*/ +extern const uint32_t AHBPrescTable[16]; /*!< AHB prescalers table values */ +extern const uint32_t APBPrescTable[8]; /*!< APB prescalers table values */ +extern const uint32_t HSIFreqTable[8]; /*!< HSI frequency table values */ + +/** + * Initialize the system + * @param none + * @return none + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +extern void SystemInit(void); + +/** + * Update SystemCoreClock variable + * @param none + * @return none + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +extern void SystemCoreClockUpdate(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SYSTEM_PY32F003XX_H */ diff --git a/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f030xx.h b/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f030xx.h new file mode 100644 index 0000000..6ec4262 --- /dev/null +++ b/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f030xx.h @@ -0,0 +1,66 @@ +/** + ****************************************************************************** + * @file system_py32f030xx.h + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Header File for + * PY32F030xx Device Series + * @version v1.0.0 + * + ****************************************************************************** + * @attention + * + *

© Copyright (c) Puya Semiconductor Co. + * All rights reserved.

+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* This file refers the CMSIS standard, some adjustments are made according to Puya chips */ +#ifndef SYSTEM_PY32F030XX_H +#define SYSTEM_PY32F030XX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include + +/* Exported variables --------------------------------------------------------*/ +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +/* Exported constants --------------------------------------------------------*/ +extern const uint32_t AHBPrescTable[16]; /*!< AHB prescalers table values */ +extern const uint32_t APBPrescTable[8]; /*!< APB prescalers table values */ +extern const uint32_t HSIFreqTable[8]; /*!< HSI frequency table values */ + +/** + * Initialize the system + * @param none + * @return none + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +extern void SystemInit(void); + +/** + * Update SystemCoreClock variable + * @param none + * @return none + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +extern void SystemCoreClockUpdate(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SYSTEM_PY32F030XX_H */ diff --git a/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f072xx.h b/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f072xx.h new file mode 100644 index 0000000..08b8385 --- /dev/null +++ b/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f072xx.h @@ -0,0 +1,67 @@ +/** + ****************************************************************************** + * @file system_py32f072xx.h + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Header File for + * PY32F072xx Device Series + * @version v1.0.0 + * + ****************************************************************************** + * @attention + * + *

© Copyright (c) Puya Semiconductor Co. + * All rights reserved.

+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* This file refers the CMSIS standard, some adjustments are made according to Puya chips */ + +#ifndef SYSTEM_PY32F072XX_H +#define SYSTEM_PY32F072XX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +extern const uint32_t AHBPrescTable[16]; /*!< AHB prescalers table values */ +extern const uint32_t APBPrescTable[8]; /*!< APB prescalers table values */ + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +extern void SystemInit(void); + +/** + * Update SystemCoreClock variable + * + * @param none + * @return none + * + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +extern void SystemCoreClockUpdate(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SYSTEM_PY32F072XX_H */ diff --git a/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f0xx.h b/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f0xx.h old mode 100755 new mode 100644 index 1242576..4f088a1 --- a/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f0xx.h +++ b/Libraries/CMSIS/Device/PY32F0xx/Include/system_py32f0xx.h @@ -2,7 +2,7 @@ ****************************************************************************** * @file system_py32f0xx.h * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Header File for - * PY32F0xx Device Series + * PY32F030xx Device Series * @version v1.0.0 * ****************************************************************************** diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002ax5.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002ax5.s old mode 100755 new mode 100644 index 72a3ff8..7a80da8 --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002ax5.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002ax5.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002x5.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002x5.s new file mode 100644 index 0000000..09f1989 --- /dev/null +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f002x5.s @@ -0,0 +1,233 @@ +;****************************************************************************** +;* @file : startup_py32f002x5.s +;* @brief : PY32F002xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM0+ processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;****************************************************************************** +;* @attention +;* +;* Copyright (c) 2021, Puya Semiconductor Inc. +;* +;* All rights reserved. +;* +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;* +;****************************************************************************** + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD 0 ; 0Reserved + DCD 0 ; 1Reserved + DCD 0 ; 2Reserved + DCD FLASH_IRQHandler ; 3FLASH + DCD RCC_IRQHandler ; 4RCC + DCD EXTI0_1_IRQHandler ; 5EXTI Line 0 and 1 + DCD EXTI2_3_IRQHandler ; 6EXTI Line 2 and 3 + DCD EXTI4_15_IRQHandler ; 7EXTI Line 4 to 15 + DCD 0 ; 8Reserved + DCD 0 ; 9Reserved + DCD 0 ; 10Reserved + DCD 0 ; 11Reserved + DCD ADC_IRQHandler ; 12ADC + DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; 13TIM1 Break, Update, Trigger and Commutation + DCD TIM1_CC_IRQHandler ; 14TIM1 Capture Compare + DCD 0 ; 15Reserved + DCD 0 ; 16Reserved + DCD LPTIM1_IRQHandler ; 17LPTIM1 + DCD 0 ; 18Reserved + DCD 0 ; 19Reserved + DCD 0 ; 20Reserved + DCD TIM16_IRQHandler ; 21TIM16 + DCD 0 ; 22Reserved + DCD I2C1_IRQHandler ; 23I2C1 + DCD 0 ; 24Reserved + DCD SPI1_IRQHandler ; 25SPI1 + DCD 0 ; 26Reserved + DCD USART1_IRQHandler ; 27USART1 + DCD 0 ; 28Reserved + DCD 0 ; 29Reserved + DCD 0 ; 30Reserved + DCD 0 ; 31Reserved +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_1_IRQHandler [WEAK] + EXPORT EXTI2_3_IRQHandler [WEAK] + EXPORT EXTI4_15_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT LPTIM1_IRQHandler [WEAK] + EXPORT TIM16_IRQHandler [WEAK] + EXPORT I2C1_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_1_IRQHandler +EXTI2_3_IRQHandler +EXTI4_15_IRQHandler +ADC_IRQHandler +TIM1_BRK_UP_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +LPTIM1_IRQHandler +TIM16_IRQHandler +I2C1_IRQHandler +SPI1_IRQHandler +USART1_IRQHandler + B . + ENDP + + ALIGN + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x4.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x4.s old mode 100755 new mode 100644 index 9e59d9b..c941281 --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x4.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x4.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x6.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x6.s old mode 100755 new mode 100644 index 9e59d9b..c941281 --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x6.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x6.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x8.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x8.s old mode 100755 new mode 100644 index 9e59d9b..c941281 --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x8.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f003x8.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x3.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x3.s old mode 100755 new mode 100644 index 5645f94..3b4953d --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x3.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x3.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x4.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x4.s old mode 100755 new mode 100644 index 5645f94..3b4953d --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x4.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x4.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x6.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x6.s old mode 100755 new mode 100644 index 5645f94..3b4953d --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x6.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x6.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x7.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x7.s old mode 100755 new mode 100644 index 5645f94..3b4953d --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x7.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x7.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x8.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x8.s old mode 100755 new mode 100644 index 5645f94..3b4953d --- a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x8.s +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f030x8.s @@ -9,22 +9,38 @@ ;* calls main()). ;* After Reset the CortexM0+ processor is in Thread mode, ;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> ;****************************************************************************** ;* @attention ;* -;*

© Copyright (c) Puya Semiconductor Co. -;* All rights reserved.

+;* Copyright (c) 2021, Puya Semiconductor Inc. ;* -;*

© Copyright (c) 2016 STMicroelectronics. -;* All rights reserved.

+;* All rights reserved. ;* -;* This software component is licensed by ST under BSD 3-Clause license, -;* the "License"; You may not use this file except in compliance with the -;* License. You may obtain a copy of the License at: -;* opensource.org/licenses/BSD-3-Clause +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;* ;****************************************************************************** -;* <<< Use Configuration Wizard in Context Menu >>> ; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f072xB.s b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f072xB.s new file mode 100644 index 0000000..4d66e03 --- /dev/null +++ b/Libraries/CMSIS/Device/PY32F0xx/Source/arm/startup_py32f072xB.s @@ -0,0 +1,268 @@ +;****************************************************************************** +;* @file : startup_py32f030xx.s +;* @brief : P32F030xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM0+ processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;****************************************************************************** +;* @attention +;* +;* Copyright (c) 2021, Puya Semiconductor Inc. +;* +;* All rights reserved. +;* +;* Redistribution and use in source and binary forms, with or without modification, +;* are permitted provided that the following conditions are met: +;* +;* 1. Redistributions of source code must retain the above copyright notice, +;* this list of conditions and the following disclaimer. +;* 2. Redistributions in binary form must reproduce the above copyright notice, +;* this list of conditions and the following disclaimer in the documentation +;* and/or other materials provided with the distribution. +;* 3. Neither the name of the copyright holder nor the names of its contributors +;* may be used to endorse or promote products derived from this software +;* without specific prior written permission. +;* +;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;* +;****************************************************************************** + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; 0Window Watchdog + DCD PVD_IRQHandler ; 1PVD through EXTI Line detect + DCD RTC_IRQHandler ; 2RTC through EXTI Line + DCD FLASH_IRQHandler ; 3FLASH + DCD RCC_CTC_IRQHandler ; 4RCC, CTC + DCD EXTI0_1_IRQHandler ; 5EXTI Line 0 and 1 + DCD EXTI2_3_IRQHandler ; 6EXTI Line 2 and 3 + DCD EXTI4_15_IRQHandler ; 7EXTI Line 4 to 15 + DCD LCD_IRQHandler ; 8LCD + DCD DMA1_Channel1_IRQHandler ; 9DMA1 Channel 1 + DCD DMA1_Channel2_3_IRQHandler ; 10DMA1 Channel 2 and Channel 3 + DCD DMA1_Channel4_5_6_7_IRQHandler ; 11DMA1 Channel 4, 5, 6, 7 + DCD ADC_COMP_IRQHandler ; 12ADC&COMP1 + DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; 13TIM1 Break, Update, Trigger and Commutation + DCD TIM1_CC_IRQHandler ; 14TIM1 Capture Compare + DCD TIM2_IRQHandler ; 15TIM2 + DCD TIM3_IRQHandler ; 16TIM3 + DCD TIM6_LPTIM1_DAC_IRQHandler ; 17TIM6, LPTIM1, DAC + DCD TIM7_IRQHandler ; 18TIM7 + DCD TIM14_IRQHandler ; 19TIM14 + DCD TIM15_IRQHandler ; 20TIM15 + DCD TIM16_IRQHandler ; 21TIM16 + DCD TIM17_IRQHandler ; 22TIM17 + DCD I2C1_IRQHandler ; 23I2C1 + DCD I2C2_IRQHandler ; 24I2C2 + DCD SPI1_IRQHandler ; 25SPI1 + DCD SPI2_IRQHandler ; 26SPI2 + DCD USART1_IRQHandler ; 27USART1 + DCD USART2_IRQHandler ; 28USART2 + DCD USART3_4_IRQHandler ; 29USART3, USART4 + DCD 0 ; 30Reserved + DCD USB_IRQHandler ; 31Reserved +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_CTC_IRQHandler [WEAK] + EXPORT EXTI0_1_IRQHandler [WEAK] + EXPORT EXTI2_3_IRQHandler [WEAK] + EXPORT EXTI4_15_IRQHandler [WEAK] + EXPORT LCD_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_5_6_7_IRQHandler [WEAK] + EXPORT ADC_COMP_IRQHandler [WEAK] + EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM6_LPTIM1_DAC_IRQHandler [WEAK] + EXPORT TIM14_IRQHandler [WEAK] + EXPORT TIM15_IRQHandler [WEAK] + EXPORT TIM16_IRQHandler [WEAK] + EXPORT TIM17_IRQHandler [WEAK] + EXPORT I2C1_IRQHandler [WEAK] + EXPORT I2C2_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_4_IRQHandler [WEAK] + EXPORT USB_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_CTC_IRQHandler +EXTI0_1_IRQHandler +EXTI2_3_IRQHandler +EXTI4_15_IRQHandler +LCD_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_3_IRQHandler +DMA1_Channel4_5_6_7_IRQHandler +ADC_COMP_IRQHandler +TIM1_BRK_UP_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM6_LPTIM1_DAC_IRQHandler +TIM7_IRQHandler +TIM14_IRQHandler +TIM15_IRQHandler +TIM16_IRQHandler +TIM17_IRQHandler +I2C1_IRQHandler +I2C2_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_4_IRQHandler +USB_IRQHandler + B . + ENDP + + ALIGN + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f002axx.s b/Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f002axx.s old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f003xx.s b/Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f003xx.s old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f030xx.s b/Libraries/CMSIS/Device/PY32F0xx/Source/iar/startup_py32f030xx.s old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Device/PY32F0xx/Source/system_py32f0xx.c b/Libraries/CMSIS/Device/PY32F0xx/Source/system_py32f0xx.c old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/arm_common_tables.h b/Libraries/CMSIS/Include/arm_common_tables.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/arm_const_structs.h b/Libraries/CMSIS/Include/arm_const_structs.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/arm_math.h b/Libraries/CMSIS/Include/arm_math.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/cmsis_armcc.h b/Libraries/CMSIS/Include/cmsis_armcc.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/cmsis_armcc_V6.h b/Libraries/CMSIS/Include/cmsis_armcc_V6.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/cmsis_gcc.h b/Libraries/CMSIS/Include/cmsis_gcc.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cm0.h b/Libraries/CMSIS/Include/core_cm0.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cm0plus.h b/Libraries/CMSIS/Include/core_cm0plus.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cm3.h b/Libraries/CMSIS/Include/core_cm3.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cm4.h b/Libraries/CMSIS/Include/core_cm4.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cm7.h b/Libraries/CMSIS/Include/core_cm7.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cmFunc.h b/Libraries/CMSIS/Include/core_cmFunc.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cmInstr.h b/Libraries/CMSIS/Include/core_cmInstr.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_cmSimd.h b/Libraries/CMSIS/Include/core_cmSimd.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_sc000.h b/Libraries/CMSIS/Include/core_sc000.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/Include/core_sc300.h b/Libraries/CMSIS/Include/core_sc300.h old mode 100755 new mode 100644 diff --git a/Libraries/CMSIS/RTOS/Template/cmsis_os.h b/Libraries/CMSIS/RTOS/Template/cmsis_os.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_adc.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_adc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_adc_ex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_adc_ex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_comp.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_comp.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_cortex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_cortex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_crc.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_crc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_def.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_def.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_dma.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_dma.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_dma_ex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_dma_ex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_exti.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_exti.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_flash.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_flash.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_flash_ex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_flash_ex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_gpio.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_gpio.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_gpio_ex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_gpio_ex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_i2c.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_i2c.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_irda.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_irda.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_iwdg.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_iwdg.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_led.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_led.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_lptim.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_lptim.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_pwr.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_pwr.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rcc.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rcc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rcc_ex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rcc_ex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rtc.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rtc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rtc_ex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_rtc_ex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_spi.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_spi.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_tim.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_tim.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_tim_ex.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_tim_ex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_uart.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_uart.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_usart.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_usart.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_wwdg.h b/Libraries/PY32F0xx_HAL_Driver/Inc/py32f0xx_hal_wwdg.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc_ex.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc_ex.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_comp.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_comp.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_cortex.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_cortex.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_crc.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_crc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_dma.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_dma.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_exti.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_exti.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_flash.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_flash.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_gpio.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_gpio.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_i2c.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_i2c.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_irda.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_irda.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_iwdg.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_iwdg.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_led.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_led.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_lptim.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_lptim.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_pwr.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_pwr.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc_ex.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc_ex.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc_ex.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc_ex.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_spi.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_spi.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim_ex.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim_ex.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_uart.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_uart.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_usart.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_usart.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_wwdg.c b/Libraries/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_wwdg.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_adc.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_adc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_bus.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_bus.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_comp.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_comp.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_cortex.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_cortex.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_crc.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_crc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_dma.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_dma.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_exti.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_exti.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_gpio.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_gpio.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_i2c.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_i2c.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_iwdg.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_iwdg.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_led.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_led.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_lptim.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_lptim.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_pwr.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_pwr.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rcc.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rcc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rtc.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_rtc.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_spi.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_spi.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_system.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_system.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_tim.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_tim.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_usart.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_usart.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_utils.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_utils.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_wwdg.h b/Libraries/PY32F0xx_LL_Driver/Inc/py32f0xx_ll_wwdg.h old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_adc.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_adc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_comp.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_comp.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_crc.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_crc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_dma.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_dma.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_exti.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_exti.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_gpio.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_gpio.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_i2c.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_i2c.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_led.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_led.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_lptim.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_lptim.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_pwr.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_pwr.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_rcc.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_rcc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_rtc.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_rtc.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_spi.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_spi.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_tim.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_tim.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_usart.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_usart.c old mode 100755 new mode 100644 diff --git a/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_utils.c b/Libraries/PY32F0xx_LL_Driver/Src/py32f0xx_ll_utils.c old mode 100755 new mode 100644 diff --git a/Misc/Devices/Puya/PY32F003xx_16.FLM b/Misc/Flash/Devices/Puya/PY32F003xx_16.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F003xx_16.FLM rename to Misc/Flash/Devices/Puya/PY32F003xx_16.FLM diff --git a/Misc/Devices/Puya/PY32F003xx_32.FLM b/Misc/Flash/Devices/Puya/PY32F003xx_32.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F003xx_32.FLM rename to Misc/Flash/Devices/Puya/PY32F003xx_32.FLM diff --git a/Misc/Devices/Puya/PY32F003xx_64.FLM b/Misc/Flash/Devices/Puya/PY32F003xx_64.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F003xx_64.FLM rename to Misc/Flash/Devices/Puya/PY32F003xx_64.FLM diff --git a/Misc/Devices/Puya/PY32F003xx_OPT.FLM b/Misc/Flash/Devices/Puya/PY32F003xx_OPT.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F003xx_OPT.FLM rename to Misc/Flash/Devices/Puya/PY32F003xx_OPT.FLM diff --git a/Misc/Devices/Puya/PY32F030xx_16.FLM b/Misc/Flash/Devices/Puya/PY32F030xx_16.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F030xx_16.FLM rename to Misc/Flash/Devices/Puya/PY32F030xx_16.FLM diff --git a/Misc/Devices/Puya/PY32F030xx_32.FLM b/Misc/Flash/Devices/Puya/PY32F030xx_32.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F030xx_32.FLM rename to Misc/Flash/Devices/Puya/PY32F030xx_32.FLM diff --git a/Misc/Devices/Puya/PY32F030xx_48.FLM b/Misc/Flash/Devices/Puya/PY32F030xx_48.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F030xx_48.FLM rename to Misc/Flash/Devices/Puya/PY32F030xx_48.FLM diff --git a/Misc/Devices/Puya/PY32F030xx_64.FLM b/Misc/Flash/Devices/Puya/PY32F030xx_64.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F030xx_64.FLM rename to Misc/Flash/Devices/Puya/PY32F030xx_64.FLM diff --git a/Misc/Devices/Puya/PY32F030xx_8.FLM b/Misc/Flash/Devices/Puya/PY32F030xx_8.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F030xx_8.FLM rename to Misc/Flash/Devices/Puya/PY32F030xx_8.FLM diff --git a/Misc/Devices/Puya/PY32F030xx_OPT.FLM b/Misc/Flash/Devices/Puya/PY32F030xx_OPT.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F030xx_OPT.FLM rename to Misc/Flash/Devices/Puya/PY32F030xx_OPT.FLM diff --git a/Misc/Devices/Puya/PY32F072xx_128.FLM b/Misc/Flash/Devices/Puya/PY32F072xx_128.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F072xx_128.FLM rename to Misc/Flash/Devices/Puya/PY32F072xx_128.FLM diff --git a/Misc/Devices/Puya/PY32F072xx_OPT.FLM b/Misc/Flash/Devices/Puya/PY32F072xx_OPT.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F072xx_OPT.FLM rename to Misc/Flash/Devices/Puya/PY32F072xx_OPT.FLM diff --git a/Misc/Devices/Puya/PY32F0xx_16.FLM b/Misc/Flash/Devices/Puya/PY32F0xx_16.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F0xx_16.FLM rename to Misc/Flash/Devices/Puya/PY32F0xx_16.FLM diff --git a/Misc/Devices/Puya/PY32F0xx_20.FLM b/Misc/Flash/Devices/Puya/PY32F0xx_20.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F0xx_20.FLM rename to Misc/Flash/Devices/Puya/PY32F0xx_20.FLM diff --git a/Misc/Devices/Puya/PY32F0xx_32.FLM b/Misc/Flash/Devices/Puya/PY32F0xx_32.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F0xx_32.FLM rename to Misc/Flash/Devices/Puya/PY32F0xx_32.FLM diff --git a/Misc/Devices/Puya/PY32F0xx_48.FLM b/Misc/Flash/Devices/Puya/PY32F0xx_48.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F0xx_48.FLM rename to Misc/Flash/Devices/Puya/PY32F0xx_48.FLM diff --git a/Misc/Devices/Puya/PY32F0xx_64.FLM b/Misc/Flash/Devices/Puya/PY32F0xx_64.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F0xx_64.FLM rename to Misc/Flash/Devices/Puya/PY32F0xx_64.FLM diff --git a/Misc/Devices/Puya/PY32F0xx_8.FLM b/Misc/Flash/Devices/Puya/PY32F0xx_8.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F0xx_8.FLM rename to Misc/Flash/Devices/Puya/PY32F0xx_8.FLM diff --git a/Misc/Devices/Puya/PY32F0xx_OPT.FLM b/Misc/Flash/Devices/Puya/PY32F0xx_OPT.FLM similarity index 100% rename from Misc/Devices/Puya/PY32F0xx_OPT.FLM rename to Misc/Flash/Devices/Puya/PY32F0xx_OPT.FLM diff --git a/Misc/Flash/Sources/PY32F072xx/FlashDev.c b/Misc/Flash/Sources/PY32F072xx/FlashDev.c new file mode 100644 index 0000000..3347166 --- /dev/null +++ b/Misc/Flash/Sources/PY32F072xx/FlashDev.c @@ -0,0 +1,175 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2014 - 2019 ARM Ltd. + * + * This software is provided 'as-is', without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. Permission is granted to anyone to use this + * software for any purpose, including commercial applications, and to alter + * it and redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source distribution. + * + * + * $Date: 2021-7-1 + * $Revision: V1.0.0 + * + * Project: Flash Device Description for Puya PY32F030xx Flash + * --------------------------------------------------------------------------- */ + +/* History: + * Version 1.0.0 + * Initial release + */ +#include "FlashOS.h" // FlashOS Structures + +#ifdef FLASH_MEM + +#ifdef PY32F072xB +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F072xx 128kB Flash", // Device Name (128kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00020000, // Device Size in Bytes (128kB) + 0x100, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x2000, 0x000000, // Sector Size 4kB (2 sectors) + SECTOR_END +}; +#endif // PY32F072xB + +#ifdef PY32F030xx_8 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F030xx 8kB Flash", // Device Name (8kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00002000, // Device Size in Bytes (8kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (2 sectors) + SECTOR_END +}; +#endif // PY32F030xx_8 + +#ifdef PY32F030xx_16 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F030xx 16kB Flash", // Device Name (16kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00004000, // Device Size in Bytes (16kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (4 sectors) + SECTOR_END +}; +#endif // PY32F030xx_16 + +#ifdef PY32F030xx_32 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F030xx 32kB Flash", // Device Name (32kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00008000, // Device Size in Bytes (32kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (8 sectors) + SECTOR_END +}; +#endif // PY32F030xx_32 + +#ifdef PY32F030xx_48 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F030xx 48kB Flash", // Device Name (48kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x0000C000, // Device Size in Bytes (48kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (12 sectors) + SECTOR_END +}; +#endif // PY32F030xx_48 + +#ifdef PY32F030xx_64 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F030xx 64kB Flash", // Device Name (64kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00010000, // Device Size in Bytes (64kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (16 sectors) + SECTOR_END +}; +#endif // PY32F030xx_64 + +#endif // FLASH_MEM + +#ifdef FLASH_OPT +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F030xx Flash Options", // Device Name + ONCHIP, // Device Type + 0x1FFF0E80, // Device Start Address + 0x00000010, // Device Size in Bytes (16) + 0x10, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 3000, // Program Page Timeout 3 Sec + 3000, // Erase Sector Timeout 3 Sec + +//Specify Size and Address of Sectors + 0x00010, 0x000000, // Sector Size 16B (1 sectors) + SECTOR_END +}; +#endif // FLASH_OPT diff --git a/Misc/Flash/Sources/PY32F072xx/FlashOS.h b/Misc/Flash/Sources/PY32F072xx/FlashOS.h new file mode 100644 index 0000000..87e97f6 --- /dev/null +++ b/Misc/Flash/Sources/PY32F072xx/FlashOS.h @@ -0,0 +1,84 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2014 ARM Ltd. + * + * This software is provided 'as-is', without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. Permission is granted to anyone to use this + * software for any purpose, including commercial applications, and to alter + * it and redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source distribution. + * + * + * $Date: 14. Jan 2014 + * $Revision: V1.00 + * + * Project: FlashOS Headerfile for Flash drivers + * --------------------------------------------------------------------------- */ + +/* History: + * Version 1.00 + * Initial release + */ + +#define VERS 1 // Interface Version 1.01 + +#define UNKNOWN 0 // Unknown +#define ONCHIP 1 // On-chip Flash Memory +#define EXT8BIT 2 // External Flash Device on 8-bit Bus +#define EXT16BIT 3 // External Flash Device on 16-bit Bus +#define EXT32BIT 4 // External Flash Device on 32-bit Bus +#define EXTSPI 5 // External Flash Device on SPI + +#define SECTOR_NUM 512 // Max Number of Sector Items +#define PAGE_MAX 65536 // Max Page Size for Programming + +struct FlashSectors { + unsigned long szSector; // Sector Size in Bytes + unsigned long AddrSector; // Address of Sector +}; + +#define SECTOR_END 0xFFFFFFFF, 0xFFFFFFFF + +struct FlashDevice { + unsigned short Vers; // Version Number and Architecture + char DevName[128]; // Device Name and Description + unsigned short DevType; // Device Type: ONCHIP, EXT8BIT, EXT16BIT, ... + unsigned long DevAdr; // Default Device Start Address + unsigned long szDev; // Total Size of Device + unsigned long szPage; // Programming Page Size + unsigned long Res; // Reserved for future Extension + unsigned char valEmpty; // Content of Erased Memory + + unsigned long toProg; // Time Out of Program Page Function + unsigned long toErase; // Time Out of Erase Sector Function + + struct FlashSectors sectors[SECTOR_NUM]; +}; + +#define FLASH_DRV_VERS (0x0100+VERS) // Driver Version, do not modify! + +// Flash Programming Functions (Called by FlashOS) +extern int Init (unsigned long adr, // Initialize Flash + unsigned long clk, + unsigned long fnc); +extern int UnInit (unsigned long fnc); // De-initialize Flash +extern int BlankCheck (unsigned long adr, // Blank Check + unsigned long sz, + unsigned char pat); +extern int EraseChip (void); // Erase complete Device +extern int EraseSector (unsigned long adr); // Erase Sector Function +extern int ProgramPage (unsigned long adr, // Program Page Function + unsigned long sz, + unsigned char *buf); +extern unsigned long Verify (unsigned long adr, // Verify Function + unsigned long sz, + unsigned char *buf); diff --git a/Misc/Flash/Sources/PY32F072xx/FlashPrg.c b/Misc/Flash/Sources/PY32F072xx/FlashPrg.c new file mode 100644 index 0000000..fbdbc1e --- /dev/null +++ b/Misc/Flash/Sources/PY32F072xx/FlashPrg.c @@ -0,0 +1,452 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2014 - 2019 ARM Ltd. + * + * This software is provided 'as-is', without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. Permission is granted to anyone to use this + * software for any purpose, including commercial applications, and to alter + * it and redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source distribution. + * + * + * $Date: 2021-7-1 + * $Revision: V1.0.0 + * + * Project: Flash Programming Functions for Puya PY32F030xx Flash + * --------------------------------------------------------------------------- */ + +/* History: + * Version 1.0.0 + * Initial release + */ + +#include "FlashOS.h" // FlashOS Structures +#include "py32f0xx.h" + +typedef volatile unsigned char vu8; +typedef unsigned char u8; +typedef volatile unsigned short vu16; +typedef unsigned short u16; +typedef volatile unsigned long vu32; +typedef unsigned long u32; + +#define M8(adr) (*((vu8 *) (adr))) +#define M16(adr) (*((vu16 *) (adr))) +#define M32(adr) (*((vu32 *) (adr))) + +//uint32_t gdw_HSI_FS; + +//#define USE_HSI_24MHZ + +////uiOffset = 0(4MHz), 1(8MHz), 2(16MHz), 3(22.12MHz), 4(24MHz) +//void SetFlashParameter(uint32_t uiOffset) +//{ +// FLASH->TS0 = ((M32(0x1FFF0F1C + uiOffset * 0x14) >> 0) & 0x000000FF); +// FLASH->TS3 = ((M32(0x1FFF0F1C + uiOffset * 0x14) >> 8) & 0x000000FF); +// FLASH->TS1 = ((M32(0x1FFF0F1C + uiOffset * 0x14) >> 16) & 0x000001FF); +// FLASH->TS2P = ((M32(0x1FFF0F20 + uiOffset * 0x14) >> 0) & 0x000000FF); +// FLASH->TPS3 = ((M32(0x1FFF0F20 + uiOffset * 0x14) >> 16) & 0x000007FF); +// FLASH->PERTPE = ((M32(0x1FFF0F24 + uiOffset * 0x14) >> 0) & 0x0001FFFF); +// FLASH->SMERTPE = ((M32(0x1FFF0F28 + uiOffset * 0x14) >> 0) & 0x0001FFFF); +// FLASH->PRGTPE = ((M32(0x1FFF0F2C + uiOffset * 0x14) >> 0) & 0x0000FFFF); +// FLASH->PRETPE = ((M32(0x1FFF0F2C + uiOffset * 0x14) >> 16) & 0x0000FFFF); +//} + +//void InitRccAndFlashParam(void) +//{ +//#ifdef USE_HSI_24MHZ +// gdw_HSI_FS = READ_BIT(RCC->ICSCR, RCC_ICSCR_HSI_FS); +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_FS, RCC_ICSCR_HSI_FS_2);//HSI_24MHz +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F10)&RCC_ICSCR_HSI_TRIM); +// while (RCC_CR_HSIRDY != READ_BIT(RCC->CR, RCC_CR_HSIRDY)); +// SetFlashParameter(4); +//#else +// uint32_t dwOffset; +// switch (READ_BIT(RCC->ICSCR, RCC_ICSCR_HSI_FS)) +// { +// default://4MHz +// dwOffset = 0x00; +// break; +// case RCC_ICSCR_HSI_FS_0://8MHz +// dwOffset = 0x01; +// break; +// case RCC_ICSCR_HSI_FS_1://16MHz +// dwOffset = 0x02; +// break; +// case (RCC_ICSCR_HSI_FS_1|RCC_ICSCR_HSI_FS_0)://22.12MHz +// dwOffset = 0x03; +// break; +// case RCC_ICSCR_HSI_FS_2://24MHz +// dwOffset = 0x04; +// break; +// } +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F00 + dwOffset * 4)&RCC_ICSCR_HSI_TRIM); +// WRITE_REG(FLASH->TS0, ((M32(0x1FFF0F1C + dwOffset * 0x14) >> 0) & 0x000000FF)); +// WRITE_REG(FLASH->TS1, ((M32(0x1FFF0F1C + dwOffset * 0x14) >> 8) & 0x000000FF)); +// WRITE_REG(FLASH->TS3, ((M32(0x1FFF0F1C + dwOffset * 0x14) >> 16) & 0x000001FF)); +// WRITE_REG(FLASH->TS2P, ((M32(0x1FFF0F20 + dwOffset * 0x14) >> 0) & 0x000000FF)); +// WRITE_REG(FLASH->TPS3, ((M32(0x1FFF0F20 + dwOffset * 0x14) >> 16) & 0x000007FF)); +// WRITE_REG(FLASH->PERTPE, ((M32(0x1FFF0F24 + dwOffset * 0x14) >> 0) & 0x0001FFFF)); +// WRITE_REG(FLASH->SMERTPE, ((M32(0x1FFF0F28 + dwOffset * 0x14) >> 0) & 0x0001FFFF)); +// WRITE_REG(FLASH->PRGTPE, ((M32(0x1FFF0F2C + dwOffset * 0x14) >> 0) & 0x0000FFFF)); +// WRITE_REG(FLASH->PRETPE, ((M32(0x1FFF0F2C + dwOffset * 0x14) >> 16) & 0x00000FFF)); +//#endif +//} + +//void UnInitRccAndFlashParam(void) +//{ +//#ifdef USE_HSI_24MHZ +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_FS, gdw_HSI_FS); +// switch (gdw_HSI_FS) +// { +// case RCC_ICSCR_HSI_FS_2://24MHz +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F10)&RCC_ICSCR_HSI_TRIM); +// break; +// case (RCC_ICSCR_HSI_FS_1|RCC_ICSCR_HSI_FS_0)://22.12MHz +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F0C)&RCC_ICSCR_HSI_TRIM); +// break; +// case RCC_ICSCR_HSI_FS_1://16MHz +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F08)&RCC_ICSCR_HSI_TRIM); +// break; +// case RCC_ICSCR_HSI_FS_0://8MHz +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F04)&RCC_ICSCR_HSI_TRIM); +// break; +// default://4MHz +// MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F00)&RCC_ICSCR_HSI_TRIM); +// break; +// } +// while (RCC_CR_HSIRDY != READ_BIT(RCC->CR, RCC_CR_HSIRDY)); +//#endif +//} + +/* + * Initialize Flash Programming Functions + * Parameter: adr: Device Base Address + * clk: Clock Frequency (Hz) + * fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify) + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int Init(unsigned long adr, unsigned long clk, unsigned long fnc) +{ + +// InitRccAndFlashParam(); + + FLASH->KEYR = FLASH_KEY1; // Unlock Flash + FLASH->KEYR = FLASH_KEY2; + + FLASH->ACR = 0x00000000; // Zero Wait State, no Prefetch + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + if ((FLASH->OPTR & FLASH_OPTR_IWDG_SW) == 0x00) // Test if IWDG is running (IWDG in HW mode) + { + // Set IWDG time out to ~32.768 second + IWDG->KR = 0x5555; // Enable write access to IWDG_PR and IWDG_RLR + IWDG->PR = 0x06; // Set prescaler to 256 + IWDG->RLR = 0xFFF; // Set reload value to 4095 + } + + return (0); +} +#endif + +#ifdef FLASH_OPT +int Init(unsigned long adr, unsigned long clk, unsigned long fnc) +{ + + InitRccAndFlashParam(); + + FLASH->KEYR = FLASH_KEY1; // Unlock Flash + FLASH->KEYR = FLASH_KEY2; + + FLASH->OPTKEYR = FLASH_OPTKEY1; // Unlock Option Bytes + FLASH->OPTKEYR = FLASH_OPTKEY2; + + FLASH->ACR = 0x00000000; // Zero Wait State, no Prefetch + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + + if ((FLASH->OPTR & 0x1000) == 0x00) // Test if IWDG is running (IWDG in HW mode) + { + // Set IWDG time out to ~32.768 second + IWDG->KR = 0x5555; // Enable write access to IWDG_PR and IWDG_RLR + IWDG->PR = 0x06; // Set prescaler to 256 + IWDG->RLR = 0xFFF; // Set reload value to 4095 + } + + return (0); +} +#endif + + +/* + * De-Initialize Flash Programming Functions + * Parameter: fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify) + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int UnInit(unsigned long fnc) +{ + +// UnInitRccAndFlashParam(); + + FLASH->CR |= FLASH_CR_LOCK; // Lock Flash + + return (0); +} +#endif + +#ifdef FLASH_OPT +int UnInit(unsigned long fnc) +{ + + UnInitRccAndFlashParam(); + + FLASH->CR |= FLASH_CR_LOCK; // Lock Flash + FLASH->CR |= FLASH_CR_OPTLOCK; // Lock Option Bytes + + return (0); +} +#endif + +/* + * Erase complete Flash Memory + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int EraseChip(void) +{ + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + FLASH->CR |= FLASH_CR_MER; // Mass Erase Enabled + FLASH->CR |= FLASH_CR_EOPIE; + M32(0x08000000) = 0xFF; + __asm("DSB"); + + while (FLASH->SR & FLASH_SR_BSY) + { + IWDG->KR = 0xAAAA; // Reload IWDG + } + + FLASH->CR &= ~FLASH_CR_MER; // Mass Erase Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + + if (FLASH_SR_EOP != (FLASH->SR & FLASH_SR_EOP)) // Check for FLASH_SR_EOP + { + FLASH->SR |= FLASH_SR_EOP; + return (1); // Failed + } + + return (0); // Done +} +#endif + +#ifdef FLASH_OPT +int EraseChip(void) +{ + + /* erase chip is not needed for + - Flash Option bytes + - Flash One Time Programmable bytes + */ + return (0); // Done +} +#endif + +/* + * Erase Sector in Flash Memory + * Parameter: adr: Sector Address + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int EraseSector(unsigned long adr) +{ + + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + FLASH->CR |= FLASH_CR_SER; // Sector Erase Enabled + FLASH->CR |= FLASH_CR_EOPIE; + M32(adr) = 0xFF; // Sector Address + __asm("DSB"); + + while (FLASH->SR & FLASH_SR_BSY) + { + IWDG->KR = 0xAAAA; // Reload IWDG + } + + FLASH->CR &= ~FLASH_CR_SER; // Sector Erase Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + +// if (FLASH_EOP != (FLASH->SR & FLASH_EOP)) { // Check for FLASH_SR_EOP +// FLASH->SR |= FLASH_EOP; +// return (1); // Failed +// } + + return (0); // Done +} +#endif + + +#ifdef FLASH_OPT +int EraseSector(unsigned long adr) +{ + /* erase sector is not needed for + - Flash Option bytes + - Flash One Time Programmable bytes + */ + return (0); // Done +} +#endif + +/* + * Blank Check Checks if Memory is Blank + * Parameter: adr: Block Start Address + * sz: Block Size (in bytes) + * pat: Block Pattern + * Return Value: 0 - OK, 1 - Failed + */ + +int BlankCheck(unsigned long adr, unsigned long sz, unsigned char pat) +{ + return (1); // Always Force Erase +} + + +/* + * Program Page in Flash Memory + * Parameter: adr: Page Start Address + * sz: Page Size + * buf: Page Data + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int ProgramPage(unsigned long adr, unsigned long sz, unsigned char *buf) +{ + + sz = (sz + 127) & ~127; // Adjust size for 32 Words + + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + while (sz) + { + FLASH->CR |= FLASH_CR_PG; // Programming Enabled + FLASH->CR |= FLASH_CR_EOPIE; + + for (u8 i = 0; i < 32; i++) + { + + M32(adr + i * 4) = *((u32 *)(buf + i * 4)); // Program the first word of the Double Word + if (i == 30) + { + FLASH->CR |= FLASH_CR_PGSTRT; + } + } + __asm("DSB"); + + while (FLASH->SR & FLASH_SR_BSY) + { + IWDG->KR = 0xAAAA; // Reload IWDG + } + + FLASH->CR &= ~FLASH_CR_PG; // Programming Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + + //ΪÁËÄܹ»Program SRAM£¬ÆÁ±ÎÏÂÃæµÄEOP¼ì²é +// if (FLASH_EOP != (FLASH->SR & FLASH_EOP)) { // Check for FLASH_SR_EOP +// FLASH->SR |= FLASH_EOP; +// return (1); // Failed +// } + + adr += 128; // Go to next Page + buf += 128; + sz -= 128; + } + + return (0); // Done +} +#endif // PY32F030xx_64 || FLASH_OTP + +#ifdef FLASH_OPT +int ProgramPage(unsigned long adr, unsigned long sz, unsigned char *buf) +{ + + u32 optr; + u32 sdkr; + u32 wrpr; + + optr = *((u32 *)(buf + 0x00)); + sdkr = *((u32 *)(buf + 0x04)); + wrpr = *((u32 *)(buf + 0x0C)); + + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + FLASH->OPTR = (optr & 0x0000FFFF); // Write OPTR values + FLASH->SDKR = (sdkr & 0x0000FFFF); // Write SDKR values + FLASH->WRPR = (wrpr & 0x0000FFFF); // Write WRPR values + + FLASH->CR |= FLASH_CR_OPTSTRT; + FLASH->CR |= FLASH_CR_EOPIE; + M32(0x40022080) = 0xFF; + __asm("DSB"); + + FLASH->CR &= ~FLASH_CR_OPTSTRT; // Programming Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + +#ifdef FLASH_OPT_OBL_LAUNCH + FLASH->CR |= FLASH_CR_OBL_LAUNCH; +#endif + + return (0); // Done +} +#endif // FLASH_OPT + + +/* + * Verify Flash Contents + * Parameter: adr: Start Address + * sz: Size (in bytes) + * buf: Data + * Return Value: (adr+sz) - OK, Failed Address + */ + +#ifdef FLASH_OPT +unsigned long Verify(unsigned long adr, unsigned long sz, unsigned char *buf) +{ + u32 optr; + u32 sdkr; + u32 wrpr; + + optr = *((u32 *)(buf + 0x00)); + sdkr = *((u32 *)(buf + 0x04)); + wrpr = *((u32 *)(buf + 0x0C)); + + if (M32(adr + 0x00) != optr) + { + return (adr + 0x00); + } + if (M32(adr + 0x04) != sdkr) + { + return (adr + 0x04); + } + if (M32(adr + 0x0C) != wrpr) + { + return (adr + 0x0C); + } + + return (adr + sz); +} +#endif // FLASH_OPT diff --git a/Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvoptx b/Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvoptx new file mode 100644 index 0000000..3f81e1b --- /dev/null +++ b/Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvoptx @@ -0,0 +1,1254 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + PY32F030xx_8 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FN1 -FC800 -FD20000000 -FF0PY32F030xx_8 -FL02000 -FS08000000 -FP0($$Device:PY32F030x3$Flash\PY32F030xx_8.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + PY32F030xx_16 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FN1 -FC800 -FD20000000 -FF0PY32F030xx_16 -FL04000 -FS08000000 -FP0($$Device:PY32F030x4$Flash\PY32F030xx_16.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + PY32F030xx_32 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FN1 -FC1000 -FD20000000 -FF0PY32F030xx_32 -FL08000 -FS08000000 -FP0($$Device:PY32F030x6$Flash\PY32F030xx_32.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + PY32F030xx_48 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FN1 -FC1000 -FD20000000 -FF0PY32F030xx_48 -FL0C000 -FS08000000 -FP0($$Device:PY32F030x7$Flash\PY32F030xx_48.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + PY32F030xx_64 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S8 -C0 -P00 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0PY32F030xx_64 -FS08000000 -FL010000 -FP0($$Device:PY32F030x8$Flash\PY32F030xx_64.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + FLASH_OPT + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + 1 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FN1 -FC800 -FD20000000 -FF0PY32F030xx_8 -FL02000 -FS08000000 -FP0($$Device:PY32F030x3$Flash\PY32F030xx_8.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + PY32F072xx_128 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FN1 -FC1000 -FD20000000 -FF0PY32F030xx_64 -FL010000 -FS08000000 -FP0($$Device:PY32F030x8$Flash\PY32F030xx_64.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 1 + 0 + 2 + 10000000 + + + + + + Program Functions + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + .\FlashPrg.c + FlashPrg.c + 0 + 0 + + + + + Device Description + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + .\FlashDev.c + FlashDev.c + 0 + 0 + + + +
diff --git a/Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvprojx b/Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvprojx new file mode 100644 index 0000000..2e9ca1f --- /dev/null +++ b/Misc/Flash/Sources/PY32F072xx/PY32F072xx.uvprojx @@ -0,0 +1,2789 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + PY32F030xx_8 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + PY32F030x3 + Puya + Puya.PY32F0xx_DFP.1.0.3 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00000800) IROM(0x08000000,0x00002000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0PY32F030xx_8 -FS08000000 -FL02000 -FP0($$Device:PY32F030x3$Flash\PY32F030xx_8.FLM)) + 0 + $$Device:PY32F030x3$Device\Include\py32f0xx.h + + + + + + + + + + $$Device:PY32F030x3$SVD\py32f030xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F030xx_8 + 1 + 0 + 1 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x800 + + + 1 + 0x8000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x2000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x800 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F030xx_8 PY32F030x8 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F030xx_16 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + PY32F030x4 + Puya + Puya.PY32F0xx_DFP.1.0.3 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00000800) IROM(0x08000000,0x00004000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0PY32F030xx_16 -FS08000000 -FL04000 -FP0($$Device:PY32F030x4$Flash\PY32F030xx_16.FLM)) + 0 + $$Device:PY32F030x4$Device\Include\py32f0xx.h + + + + + + + + + + $$Device:PY32F030x4$SVD\py32f030xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F030xx_16 + 1 + 0 + 1 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x800 + + + 1 + 0x8000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x4000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x800 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F030xx_16 PY32F030x8 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F030xx_32 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + PY32F030x6 + Puya + Puya.PY32F0xx_DFP.1.0.3 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00001000) IROM(0x08000000,0x00008000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0PY32F030xx_32 -FS08000000 -FL08000 -FP0($$Device:PY32F030x6$Flash\PY32F030xx_32.FLM)) + 0 + $$Device:PY32F030x6$Device\Include\py32f0xx.h + + + + + + + + + + $$Device:PY32F030x6$SVD\py32f030xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F030xx_32 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x1000 + + + 1 + 0x8000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x8000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x1000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F030xx_32 PY32F030x8 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F030xx_48 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + PY32F030x7 + Puya + Puya.PY32F0xx_DFP.1.0.3 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00001800) IROM(0x08000000,0x0000C000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0PY32F030xx_48 -FS08000000 -FL0C000 -FP0($$Device:PY32F030x7$Flash\PY32F030xx_48.FLM)) + 0 + $$Device:PY32F030x7$Device\Include\py32f0xx.h + + + + + + + + + + $$Device:PY32F030x7$SVD\py32f030xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F030xx_48 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x1800 + + + 1 + 0x8000000 + 0xc000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0xc000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x1800 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F030xx_48 PY32F030x8 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F030xx_64 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + PY32F030x8 + Puya + Puya.PY32F0xx_DFP.1.0.3 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00002000) IROM(0x08000000,0x00010000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0PY32F030xx_64 -FS08000000 -FL010000 -FP0($$Device:PY32F030x8$Flash\PY32F030xx_64.FLM)) + 0 + $$Device:PY32F030x8$Device\Include\py32f0xx.h + + + + + + + + + + $$Device:PY32F030x8$SVD\py32f030xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F030xx_64 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x20000000 + 0x1000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20001000 + 0x1000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F030xx_64 PY32F030x8 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + FLASH_OPT + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + PY32F030x3 + Puya + Puya.PY32F0xx_DFP.1.0.3 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00000800) IROM(0x08000000,0x00002000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0PY32F030xx_8 -FS08000000 -FL02000 -FP0($$Device:PY32F030x3$Flash\PY32F030xx_8.FLM)) + 0 + $$Device:PY32F030x3$Device\Include\py32f0xx.h + + + + + + + + + + $$Device:PY32F030x3$SVD\py32f030xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F030xx_OPT + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x800 + + + 1 + 0x8000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x2000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x800 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_OPT PY32F030x8 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F072xx_128 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + PY32F030x8 + Puya + Puya.PY32F0xx_DFP.1.0.3 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00002000) IROM(0x08000000,0x00010000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0PY32F030xx_64 -FS08000000 -FL010000 -FP0($$Device:PY32F030x8$Flash\PY32F030xx_64.FLM)) + 0 + $$Device:PY32F030x8$Device\Include\py32f0xx.h + + + + + + + + + + $$Device:PY32F030x8$SVD\py32f030xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F030xx_8 + 1 + 0 + 1 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F072xB + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + + + + + + + +
diff --git a/Misc/Flash/Sources/PY32F072xx/Target.lin b/Misc/Flash/Sources/PY32F072xx/Target.lin new file mode 100644 index 0000000..3190469 --- /dev/null +++ b/Misc/Flash/Sources/PY32F072xx/Target.lin @@ -0,0 +1,22 @@ +; Linker Control File (scatter-loading) +; + +PRG 0 PI ; Programming Functions +{ + PrgCode +0 ; Code + { + * (+RO) + } + PrgData +0 ; Data + { + * (+RW,+ZI) + } +} + +DSCR +0 ; Device Description +{ + DevDscr +0 + { + FlashDev.o + } +} diff --git a/Misc/Flash/Sources/PY32F0xx/FlashDev.c b/Misc/Flash/Sources/PY32F0xx/FlashDev.c new file mode 100644 index 0000000..ce279a2 --- /dev/null +++ b/Misc/Flash/Sources/PY32F0xx/FlashDev.c @@ -0,0 +1,175 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2014 - 2019 ARM Ltd. + * + * This software is provided 'as-is', without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. Permission is granted to anyone to use this + * software for any purpose, including commercial applications, and to alter + * it and redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source distribution. + * + * + * $Date: 2021-7-1 + * $Revision: V1.0.0 + * + * Project: Flash Device Description for Puya PY32F0xx Flash + * --------------------------------------------------------------------------- */ + +/* History: + * Version 1.0.0 + * Initial release + */ +#include "FlashOS.h" // FlashOS Structures + +#ifdef FLASH_MEM + +#ifdef PY32F0xx_8 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F0xx 8kB Flash", // Device Name (8kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00002000, // Device Size in Bytes (8kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (2 sectors) + SECTOR_END +}; +#endif // PY32F0xx_8 + +#ifdef PY32F0xx_16 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F0xx 16kB Flash", // Device Name (16kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00004000, // Device Size in Bytes (16kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (4 sectors) + SECTOR_END +}; +#endif // PY32F0xx_16 + +#ifdef PY32F0xx_20 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F0xx 20kB Flash", // Device Name (20kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00005000, // Device Size in Bytes (20kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (5 sectors) + SECTOR_END +}; +#endif // PY32F0xx_20 + +#ifdef PY32F0xx_32 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F0xx 32kB Flash", // Device Name (32kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00008000, // Device Size in Bytes (32kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (8 sectors) + SECTOR_END +}; +#endif // PY32F0xx_32 + +#ifdef PY32F0xx_48 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F0xx 48kB Flash", // Device Name (48kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x0000C000, // Device Size in Bytes (48kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (12 sectors) + SECTOR_END +}; +#endif // PY32F0xx_48 + +#ifdef PY32F0xx_64 +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F0xx 64kB Flash", // Device Name (64kB) + ONCHIP, // Device Type + 0x08000000, // Device Start Address + 0x00010000, // Device Size in Bytes (64kB) + 0x80, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 600, // Program Page Timeout 600 mSec + 6000, // Erase Sector Timeout 6000 mSec + +//Specify Size and Address of Sectors + 0x1000, 0x000000, // Sector Size 4kB (16 sectors) + SECTOR_END +}; +#endif // PY32F0xx_64 + +#endif // FLASH_MEM + +#ifdef FLASH_OPT +struct FlashDevice const FlashDevice = +{ + FLASH_DRV_VERS, // Driver Version, do not modify! + "PY32F0xx Flash Options", // Device Name + ONCHIP, // Device Type + 0x1FFF0E80, // Device Start Address + 0x00000010, // Device Size in Bytes (16) + 0x10, // Programming Page Size + 0, // Reserved, must be 0 + 0xFF, // Initial Content of Erased Memory + 3000, // Program Page Timeout 3 Sec + 3000, // Erase Sector Timeout 3 Sec + +//Specify Size and Address of Sectors + 0x00010, 0x000000, // Sector Size 16B (1 sectors) + SECTOR_END +}; +#endif // FLASH_OPT diff --git a/Misc/Flash/Sources/PY32F0xx/FlashOS.h b/Misc/Flash/Sources/PY32F0xx/FlashOS.h new file mode 100644 index 0000000..87e97f6 --- /dev/null +++ b/Misc/Flash/Sources/PY32F0xx/FlashOS.h @@ -0,0 +1,84 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2014 ARM Ltd. + * + * This software is provided 'as-is', without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. Permission is granted to anyone to use this + * software for any purpose, including commercial applications, and to alter + * it and redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source distribution. + * + * + * $Date: 14. Jan 2014 + * $Revision: V1.00 + * + * Project: FlashOS Headerfile for Flash drivers + * --------------------------------------------------------------------------- */ + +/* History: + * Version 1.00 + * Initial release + */ + +#define VERS 1 // Interface Version 1.01 + +#define UNKNOWN 0 // Unknown +#define ONCHIP 1 // On-chip Flash Memory +#define EXT8BIT 2 // External Flash Device on 8-bit Bus +#define EXT16BIT 3 // External Flash Device on 16-bit Bus +#define EXT32BIT 4 // External Flash Device on 32-bit Bus +#define EXTSPI 5 // External Flash Device on SPI + +#define SECTOR_NUM 512 // Max Number of Sector Items +#define PAGE_MAX 65536 // Max Page Size for Programming + +struct FlashSectors { + unsigned long szSector; // Sector Size in Bytes + unsigned long AddrSector; // Address of Sector +}; + +#define SECTOR_END 0xFFFFFFFF, 0xFFFFFFFF + +struct FlashDevice { + unsigned short Vers; // Version Number and Architecture + char DevName[128]; // Device Name and Description + unsigned short DevType; // Device Type: ONCHIP, EXT8BIT, EXT16BIT, ... + unsigned long DevAdr; // Default Device Start Address + unsigned long szDev; // Total Size of Device + unsigned long szPage; // Programming Page Size + unsigned long Res; // Reserved for future Extension + unsigned char valEmpty; // Content of Erased Memory + + unsigned long toProg; // Time Out of Program Page Function + unsigned long toErase; // Time Out of Erase Sector Function + + struct FlashSectors sectors[SECTOR_NUM]; +}; + +#define FLASH_DRV_VERS (0x0100+VERS) // Driver Version, do not modify! + +// Flash Programming Functions (Called by FlashOS) +extern int Init (unsigned long adr, // Initialize Flash + unsigned long clk, + unsigned long fnc); +extern int UnInit (unsigned long fnc); // De-initialize Flash +extern int BlankCheck (unsigned long adr, // Blank Check + unsigned long sz, + unsigned char pat); +extern int EraseChip (void); // Erase complete Device +extern int EraseSector (unsigned long adr); // Erase Sector Function +extern int ProgramPage (unsigned long adr, // Program Page Function + unsigned long sz, + unsigned char *buf); +extern unsigned long Verify (unsigned long adr, // Verify Function + unsigned long sz, + unsigned char *buf); diff --git a/Misc/Flash/Sources/PY32F0xx/FlashPrg.c b/Misc/Flash/Sources/PY32F0xx/FlashPrg.c new file mode 100644 index 0000000..a731782 --- /dev/null +++ b/Misc/Flash/Sources/PY32F0xx/FlashPrg.c @@ -0,0 +1,542 @@ +/* ----------------------------------------------------------------------------- + * Copyright (c) 2014 - 2019 ARM Ltd. + * + * This software is provided 'as-is', without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. Permission is granted to anyone to use this + * software for any purpose, including commercial applications, and to alter + * it and redistribute it freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source distribution. + * + * + * $Date: 2021-7-1 + * $Revision: V1.0.0 + * + * Project: Flash Programming Functions for Puya PY32F0xx Flash + * --------------------------------------------------------------------------- */ + +/* History: + * Version 1.0.0 + * Initial release + */ + +#include "FlashOS.h" // FlashOS Structures + +typedef volatile unsigned char vu8; +typedef unsigned char u8; +typedef volatile unsigned short vu16; +typedef unsigned short u16; +typedef volatile unsigned long vu32; +typedef unsigned long u32; + +#define M8(adr) (*((vu8 *) (adr))) +#define M16(adr) (*((vu16 *) (adr))) +#define M32(adr) (*((vu32 *) (adr))) + +#define SET_BIT(REG, BIT) ((REG) |= (BIT)) +#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) +#define READ_BIT(REG, BIT) ((REG) & (BIT)) +#define CLEAR_REG(REG) ((REG) = (0x0)) +#define WRITE_REG(REG, VAL) ((REG) = (VAL)) +#define READ_REG(REG) ((REG)) +#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) + +// Peripheral Memory Map +#define RCC_BASE 0x40021000 +#define IWDG_BASE 0x40003000 +#define FLASH_BASE 0x40022000 + +#define RCC ((RCC_TypeDef*) RCC_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define FLASH ((FLASH_TypeDef*) FLASH_BASE) + +typedef struct +{ + vu32 CR; /*!< RCC Clock Sources Control Register, Address offset: 0x00 */ + vu32 ICSCR; /*!< RCC Internal Clock Sources Calibration Register, Address offset: 0x04 */ +} RCC_TypeDef; + +// Independent WATCHDOG +typedef struct { + vu32 KR; /*!< IWDG Key register, Address offset: 0x00 */ + vu32 PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + vu32 RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + vu32 SR; /*!< IWDG Status register, Address offset: 0x0C */ +} IWDG_TypeDef; + +// Flash Registers +typedef struct { + vu32 ACR; /*!< FLASH Access Control register, Address offset: 0x00 */ + vu32 RESERVED1; /*!< Reserved1, Address offset: 0x04 */ + vu32 KEYR; /*!< FLASH Key register, Address offset: 0x08 */ + vu32 OPTKEYR; /*!< FLASH Option Key register, Address offset: 0x0C */ + vu32 SR; /*!< FLASH Status register, Address offset: 0x10 */ + vu32 CR; /*!< FLASH Control register, Address offset: 0x14 */ + vu32 RESERVED2[2]; /*!< Reserved2, Address offset: 0x18-0x1C */ + vu32 OPTR; /*!< FLASH Option register, Address offset: 0x20 */ + vu32 SDKR; /*!< FLASH SDK address register, Address offset: 0x24 */ + vu32 RESERVED3; /*!< Reserved2, Address offset: 0x28 */ + vu32 WRPR; /*!< FLASH WRP address register, Address offset: 0x2C */ + vu32 RESERVED4[(0x90 - 0x2C) / 4 - 1]; + vu32 STCR; /*!< FLASH sleep time config register, Address offset: 0x90 */ + vu32 RESERVED5[(0x100 - 0x90) / 4 - 1]; + vu32 TS0; /*!< FLASH TS0 register, Address offset: 0x100 */ + vu32 TS1; /*!< FLASH TS1 register, Address offset: 0x104 */ + vu32 TS2P; /*!< FLASH TS2P register, Address offset: 0x108 */ + vu32 TPS3; /*!< FLASH TPS3 register, Address offset: 0x10C */ + vu32 TS3; /*!< FLASH TS3 register, Address offset: 0x110 */ + vu32 PERTPE; /*!< FLASH PERTPE register, Address offset: 0x114 */ + vu32 SMERTPE; /*!< FLASH SMERTPE register, Address offset: 0x118 */ + vu32 PRGTPE; /*!< FLASH PRGTPE register, Address offset: 0x11C */ + vu32 PRETPE; /*!< FLASH PRETPE register, Address offset: 0x120 */ +} FLASH_TypeDef; + + +// Flash Keys +#define FLASH_KEY1 ((unsigned int)0x45670123) +#define FLASH_KEY2 ((unsigned int)0xCDEF89AB) +#define FLASH_OPTKEY1 ((unsigned int)0x08192A3B) +#define FLASH_OPTKEY2 ((unsigned int)0x4C5D6E7F) + +// Flash Control Register definitions +#define FLASH_CR_PG_Pos (0U) +#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000001 */ +#define FLASH_CR_PG FLASH_CR_PG_Msk +#define FLASH_CR_PER_Pos (1U) +#define FLASH_CR_PER_Msk (0x1UL << FLASH_CR_PER_Pos) /*!< 0x00000002 */ +#define FLASH_CR_PER FLASH_CR_PER_Msk +#define FLASH_CR_MER_Pos (2U) +#define FLASH_CR_MER_Msk (0x1UL << FLASH_CR_MER_Pos) /*!< 0x00000004 */ +#define FLASH_CR_MER FLASH_CR_MER_Msk +#define FLASH_CR_SER_Pos (11U) +#define FLASH_CR_SER_Msk (0x1UL << FLASH_CR_SER_Pos) /*!< 0x00000800 */ +#define FLASH_CR_SER FLASH_CR_SER_Msk +#define FLASH_CR_OPTSTRT_Pos (17U) +#define FLASH_CR_OPTSTRT_Msk (0x1UL << FLASH_CR_OPTSTRT_Pos) /*!< 0x00020000 */ +#define FLASH_CR_OPTSTRT FLASH_CR_OPTSTRT_Msk +#define FLASH_CR_PGSTRT_Pos (19U) +#define FLASH_CR_PGSTRT_Msk (0x1UL << FLASH_CR_PGSTRT_Pos) /*!< 0x00080000 */ +#define FLASH_CR_PGSTRT FLASH_CR_PGSTRT_Msk +#define FLASH_CR_EOPIE_Pos (24U) +#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x01000000 */ +#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk +#define FLASH_CR_ERRIE_Pos (25U) +#define FLASH_CR_ERRIE_Msk (0x1UL << FLASH_CR_ERRIE_Pos) /*!< 0x02000000 */ +#define FLASH_CR_ERRIE FLASH_CR_ERRIE_Msk +#define FLASH_CR_OBL_LAUNCH_Pos (27U) +#define FLASH_CR_OBL_LAUNCH_Msk (0x1UL << FLASH_CR_OBL_LAUNCH_Pos) /*!< 0x08000000 */ +#define FLASH_CR_OBL_LAUNCH FLASH_CR_OBL_LAUNCH_Msk +#define FLASH_CR_OPTLOCK_Pos (30U) +#define FLASH_CR_OPTLOCK_Msk (0x1UL << FLASH_CR_OPTLOCK_Pos) /*!< 0x40000000 */ +#define FLASH_CR_OPTLOCK FLASH_CR_OPTLOCK_Msk +#define FLASH_CR_LOCK_Pos (31U) +#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x80000000 */ +#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk + +// Flash Status Register definitions +#define FLASH_SR_EOP_Pos (0U) +#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00000001 */ +#define FLASH_SR_EOP FLASH_SR_EOP_Msk +#define FLASH_SR_WRPERR_Pos (4U) +#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00000010 */ +#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk +#define FLASH_SR_OPTVERR_Pos (15U) +#define FLASH_SR_OPTVERR_Msk (0x1UL << FLASH_SR_OPTVERR_Pos) /*!< 0x00008000 */ +#define FLASH_SR_OPTVERR FLASH_SR_OPTVERR_Msk +#define FLASH_SR_BSY_Pos (16U) +#define FLASH_SR_BSY_Msk (0x1UL << FLASH_SR_BSY_Pos) /*!< 0x00010000 */ +#define FLASH_SR_BSY FLASH_SR_BSY_Msk + +#define FLASH_OPTR_IWDG_SW_Pos (12U) +#define FLASH_OPTR_IWDG_SW_Msk (0x1UL << FLASH_OPTR_IWDG_SW_Pos) /*!< 0x00010000 */ +#define FLASH_OPTR_IWDG_SW FLASH_OPTR_IWDG_SW_Msk +#define FLASH_OPTR_WWDG_SW_Pos (13U) +#define FLASH_OPTR_WWDG_SW_Msk (0x1UL << FLASH_OPTR_WWDG_SW_Pos) /*!< 0x00080000 */ +#define FLASH_OPTR_WWDG_SW FLASH_OPTR_WWDG_SW_Msk + +u32 RCC_ICSCR_HSI_FS_RESTORE; +void InitRccAndFlashParam(void); +void UnInitRccAndFlashParam(void); + +/* + * Initialize Flash Programming Functions + * Parameter: adr: Device Base Address + * clk: Clock Frequency (Hz) + * fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify) + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int Init(unsigned long adr, unsigned long clk, unsigned long fnc) +{ + FLASH->KEYR = FLASH_KEY1; // Unlock Flash + FLASH->KEYR = FLASH_KEY2; + + InitRccAndFlashParam(); + + FLASH->ACR = 0x00000000; // Zero Wait State, no Prefetch + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + if ((FLASH->OPTR & FLASH_OPTR_IWDG_SW) == 0x00) // Test if IWDG is running (IWDG in HW mode) + { + // Set IWDG time out to ~32.768 second + IWDG->KR = 0x5555; // Enable write access to IWDG_PR and IWDG_RLR + IWDG->PR = 0x06; // Set prescaler to 256 + IWDG->RLR = 0xFFF; // Set reload value to 4095 + } + + return (0); +} +#endif + +#ifdef FLASH_OPT +int Init(unsigned long adr, unsigned long clk, unsigned long fnc) +{ + FLASH->KEYR = FLASH_KEY1; // Unlock Flash + FLASH->KEYR = FLASH_KEY2; + + InitRccAndFlashParam(); + + FLASH->OPTKEYR = FLASH_OPTKEY1; // Unlock Option Bytes + FLASH->OPTKEYR = FLASH_OPTKEY2; + + FLASH->ACR = 0x00000000; // Zero Wait State, no Prefetch + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + + if ((FLASH->OPTR & 0x1000) == 0x00) // Test if IWDG is running (IWDG in HW mode) + { + // Set IWDG time out to ~32.768 second + IWDG->KR = 0x5555; // Enable write access to IWDG_PR and IWDG_RLR + IWDG->PR = 0x06; // Set prescaler to 256 + IWDG->RLR = 0xFFF; // Set reload value to 4095 + } + + return (0); +} +#endif + + +/* + * De-Initialize Flash Programming Functions + * Parameter: fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify) + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int UnInit(unsigned long fnc) +{ + + UnInitRccAndFlashParam(); + + FLASH->CR |= FLASH_CR_LOCK; // Lock Flash + + return (0); +} +#endif + +#ifdef FLASH_OPT +int UnInit(unsigned long fnc) +{ + + UnInitRccAndFlashParam(); + + FLASH->CR |= FLASH_CR_LOCK; // Lock Flash + FLASH->CR |= FLASH_CR_OPTLOCK; // Lock Option Bytes + + return (0); +} +#endif + +/* + * Erase complete Flash Memory + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int EraseChip(void) +{ + + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + FLASH->CR |= FLASH_CR_MER; // Mass Erase Enabled + FLASH->CR |= FLASH_CR_EOPIE; + M32(0x08000000) = 0xFF; + __asm("DSB"); + + while (FLASH->SR & FLASH_SR_BSY) + { + IWDG->KR = 0xAAAA; // Reload IWDG + } + + FLASH->CR &= ~FLASH_CR_MER; // Mass Erase Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + + if (FLASH_SR_EOP != (FLASH->SR & FLASH_SR_EOP)) // Check for FLASH_SR_EOP + { + FLASH->SR |= FLASH_SR_EOP; + return (1); // Failed + } + + return (0); // Done +} +#endif + +#ifdef FLASH_OPT +int EraseChip(void) +{ + + /* erase chip is not needed for + - Flash Option bytes + - Flash One Time Programmable bytes + */ + return (0); // Done +} +#endif + +/* + * Erase Sector in Flash Memory + * Parameter: adr: Sector Address + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int EraseSector(unsigned long adr) +{ + + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + FLASH->CR |= FLASH_CR_SER; // Sector Erase Enabled + FLASH->CR |= FLASH_CR_EOPIE; + M32(adr) = 0xFF; // Sector Address + __asm("DSB"); + + while (FLASH->SR & FLASH_SR_BSY) + { + IWDG->KR = 0xAAAA; // Reload IWDG + } + + FLASH->CR &= ~FLASH_CR_SER; // Sector Erase Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + +// if (FLASH_EOP != (FLASH->SR & FLASH_EOP)) { // Check for FLASH_SR_EOP +// FLASH->SR |= FLASH_EOP; +// return (1); // Failed +// } + + return (0); // Done +} +#endif + + +#ifdef FLASH_OPT +int EraseSector(unsigned long adr) +{ + /* erase sector is not needed for + - Flash Option bytes + - Flash One Time Programmable bytes + */ + return (0); // Done +} +#endif + +/* + * Blank Check Checks if Memory is Blank + * Parameter: adr: Block Start Address + * sz: Block Size (in bytes) + * pat: Block Pattern + * Return Value: 0 - OK, 1 - Failed + */ + +int BlankCheck(unsigned long adr, unsigned long sz, unsigned char pat) +{ + return (1); // Always Force Erase +} + + +/* + * Program Page in Flash Memory + * Parameter: adr: Page Start Address + * sz: Page Size + * buf: Page Data + * Return Value: 0 - OK, 1 - Failed + */ + +#ifdef FLASH_MEM +int ProgramPage(unsigned long adr, unsigned long sz, unsigned char *buf) +{ + + sz = (sz + 127) & ~127; // Adjust size for 32 Words + + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + while (sz) + { + FLASH->CR |= FLASH_CR_PG; // Programming Enabled + FLASH->CR |= FLASH_CR_EOPIE; + + for (u8 i = 0; i < 32; i++) + { + + M32(adr + i * 4) = *((u32 *)(buf + i * 4)); // Program the first word of the Double Word + if (i == 30) + { + FLASH->CR |= FLASH_CR_PGSTRT; + } + } + __asm("DSB"); + + while (FLASH->SR & FLASH_SR_BSY) + { + IWDG->KR = 0xAAAA; // Reload IWDG + } + + FLASH->CR &= ~FLASH_CR_PG; // Programming Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + +// if (FLASH_EOP != (FLASH->SR & FLASH_EOP)) { // Check for FLASH_SR_EOP +// FLASH->SR |= FLASH_EOP; +// return (1); // Failed +// } + + adr += 128; // Go to next Page + buf += 128; + sz -= 128; + } + + return (0); // Done +} +#endif // FLASH_MEM + +#ifdef FLASH_OPT +int ProgramPage(unsigned long adr, unsigned long sz, unsigned char *buf) +{ + u32 optr; + u32 sdkr; + u32 wrpr; + + optr = *((u32 *)(buf + 0x00)); + sdkr = *((u32 *)(buf + 0x04)); + wrpr = *((u32 *)(buf + 0x0C)); + + FLASH->SR |= FLASH_SR_EOP; // Reset FLASH_EOP + + FLASH->OPTR = (optr & 0x0000FFFF); // Write OPTR values + FLASH->SDKR = (sdkr & 0x0000FFFF); // Write SDKR values + FLASH->WRPR = (wrpr & 0x0000FFFF); // Write WRPR values + + FLASH->CR |= FLASH_CR_OPTSTRT; + FLASH->CR |= FLASH_CR_EOPIE; + M32(0x40022080) = 0xFF; + __asm("DSB"); + + FLASH->CR &= ~FLASH_CR_OPTSTRT; // Programming Disabled + FLASH->CR &= ~FLASH_CR_EOPIE; // Reset FLASH_EOPIE + + //FLASH->CR |= FLASH_CR_OBL_LAUNCH; + + return (0); // Done +} +#endif // FLASH_OPT + + +/* + * Verify Flash Contents + * Parameter: adr: Start Address + * sz: Size (in bytes) + * buf: Data + * Return Value: (adr+sz) - OK, Failed Address + */ + +#ifdef FLASH_OPT +unsigned long Verify(unsigned long adr, unsigned long sz, unsigned char *buf) +{ + u32 optr; + u32 sdkr; + u32 wrpr; + + optr = *((u32 *)(buf + 0x00)); + sdkr = *((u32 *)(buf + 0x04)); + wrpr = *((u32 *)(buf + 0x0C)); + + if (M32(adr + 0x00) != optr) + { + return (adr + 0x00); + } + if (M32(adr + 0x04) != sdkr) + { + return (adr + 0x04); + } + if (M32(adr + 0x0C) != wrpr) + { + return (adr + 0x0C); + } + + return (adr + sz); +} +#endif // FLASH_OPT + + +#define RCC_CR_HSIRDY_Pos (10U) +#define RCC_CR_HSIRDY_Msk (0x1UL << RCC_CR_HSIRDY_Pos) /*!< 0x00000400 */ +#define RCC_CR_HSIRDY RCC_CR_HSIRDY_Msk /*!< Internal High Speed clock ready flag */ +#define RCC_ICSCR_HSI_TRIM_Pos (0U) +#define RCC_ICSCR_HSI_TRIM_Msk (0x1FFFUL << RCC_ICSCR_HSI_TRIM_Pos) /*!< 0x00001FFF */ +#define RCC_ICSCR_HSI_TRIM RCC_ICSCR_HSI_TRIM_Msk /*!< HSITRIM[14:8] bits */ +#define RCC_ICSCR_HSI_FS_Pos (13U) +#define RCC_ICSCR_HSI_FS_Msk (0x7UL << RCC_ICSCR_HSI_FS_Pos) /*!< 0x0000E000 */ +#define RCC_ICSCR_HSI_FS RCC_ICSCR_HSI_FS_Msk /*!< HSIFS[15:13] bits */ +#define RCC_ICSCR_HSI_FS_0 (0x01UL << RCC_ICSCR_HSI_FS_Pos) /*!< 0x00002000 */ +#define RCC_ICSCR_HSI_FS_1 (0x02UL << RCC_ICSCR_HSI_FS_Pos) /*!< 0x00004000 */ +#define RCC_ICSCR_HSI_FS_2 (0x04UL << RCC_ICSCR_HSI_FS_Pos) /*!< 0x00008000 */ + +void InitRccAndFlashParam(void) +{ + RCC_ICSCR_HSI_FS_RESTORE = READ_BIT(RCC->ICSCR, RCC_ICSCR_HSI_FS); + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_FS, RCC_ICSCR_HSI_FS_2);//HSI_24MHz + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F10)&RCC_ICSCR_HSI_TRIM); + while (RCC_CR_HSIRDY != READ_BIT(RCC->CR, RCC_CR_HSIRDY)); + + FLASH->TS0 = ((M32(0x1FFF0F1C + 4 * 0x14) >> 0) & 0x000000FF); + FLASH->TS3 = ((M32(0x1FFF0F1C + 4 * 0x14) >> 8) & 0x000000FF); + FLASH->TS1 = ((M32(0x1FFF0F1C + 4 * 0x14) >> 16) & 0x000001FF); + FLASH->TS2P = ((M32(0x1FFF0F20 + 4 * 0x14) >> 0) & 0x000000FF); + FLASH->TPS3 = ((M32(0x1FFF0F20 + 4 * 0x14) >> 16) & 0x000007FF); + FLASH->PERTPE = ((M32(0x1FFF0F24 + 4 * 0x14) >> 0) & 0x0001FFFF); + FLASH->SMERTPE = ((M32(0x1FFF0F28 + 4 * 0x14) >> 0) & 0x0001FFFF); + FLASH->PRGTPE = ((M32(0x1FFF0F2C + 4 * 0x14) >> 0) & 0x0000FFFF); + FLASH->PRETPE = ((M32(0x1FFF0F2C + 4 * 0x14) >> 16) & 0x0000FFFF); +} + +void UnInitRccAndFlashParam(void) +{ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_FS, RCC_ICSCR_HSI_FS_RESTORE); + switch (RCC_ICSCR_HSI_FS_RESTORE) + { + case RCC_ICSCR_HSI_FS_2://24MHz + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F10)&RCC_ICSCR_HSI_TRIM); + break; + case (RCC_ICSCR_HSI_FS_1|RCC_ICSCR_HSI_FS_0)://22.12MHz + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F0C)&RCC_ICSCR_HSI_TRIM); + break; + case RCC_ICSCR_HSI_FS_1://16MHz + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F08)&RCC_ICSCR_HSI_TRIM); + break; + case RCC_ICSCR_HSI_FS_0://8MHz + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F04)&RCC_ICSCR_HSI_TRIM); + break; + default://4MHz + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSI_TRIM, M32(0x1FFF0F00)&RCC_ICSCR_HSI_TRIM); + break; + } + while (RCC_CR_HSIRDY != READ_BIT(RCC->CR, RCC_CR_HSIRDY)); +} diff --git a/Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvoptx b/Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvoptx new file mode 100644 index 0000000..6f8bd7c --- /dev/null +++ b/Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvoptx @@ -0,0 +1,1205 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + PY32F0xx_8 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 7 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FC1000 -FD20000000 + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + PY32F0xx_16 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 7 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FC1000 -FD20000000 + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + PY32F0xx_20 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 7 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S8 -C0 -P00 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FC1000 -FD20000000 + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + PY32F0xx_32 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 7 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FC1000 -FD20000000 + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + PY32F0xx_48 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 7 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FC1000 -FD20000000 + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + PY32F0xx_64 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 7 + + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S8 -C0 -P00 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FC1000 -FD20000000 + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + FLASH_OPT + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Out\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 7 + + 1 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FC1000 -FD20000000 + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGDARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + -T0 + + + + + 0 + + + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Program Functions + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + .\FlashPrg.c + FlashPrg.c + 0 + 0 + + + + + Device Description + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 1 + 0 + 0 + .\FlashDev.c + FlashDev.c + 0 + 0 + + + +
diff --git a/Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvprojx b/Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvprojx new file mode 100644 index 0000000..6d6e718 --- /dev/null +++ b/Misc/Flash/Sources/PY32F0xx/PY32F0xx.uvprojx @@ -0,0 +1,2782 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + PY32F0xx_8 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0P + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0P$Device\ARM\ARMCM0plus\Include\ARMCM0plus.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F0xx_8 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F0xx_8 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F0xx_16 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0P + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0P$Device\ARM\ARMCM0plus\Include\ARMCM0plus.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F0xx_16 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F0xx_16 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F0xx_20 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0P + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0P$Device\ARM\ARMCM0plus\Include\ARMCM0plus.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F0xx_20 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F0xx_20 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F0xx_32 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0P + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0P$Device\ARM\ARMCM0plus\Include\ARMCM0plus.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F0xx_32 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F0xx_32 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F0xx_48 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0P + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0P$Device\ARM\ARMCM0plus\Include\ARMCM0plus.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F0xx_48 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F0xx_48 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + PY32F0xx_64 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0P + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0P$Device\ARM\ARMCM0plus\Include\ARMCM0plus.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F0xx_64 + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_MEM PY32F0xx_64 + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + FLASH_OPT + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0P + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0P$Device\ARM\ARMCM0plus\Include\ARMCM0plus.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Out\ + PY32F0xx_OPT + 1 + 0 + 0 + 1 + 1 + .\Out\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd.exe /C copy "!L" ".\Out\@L.FLM" + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 1 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + + + + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + FLASH_OPT + + + + + + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + + + + .\Target.lin + + + --diag_suppress L6305 + + + + + + + + Program Functions + + + FlashPrg.c + 1 + .\FlashPrg.c + + + + + Device Description + + + FlashDev.c + 1 + .\FlashDev.c + + + + + + + + + + + + + +
diff --git a/Misc/Flash/Sources/PY32F0xx/Target.lin b/Misc/Flash/Sources/PY32F0xx/Target.lin new file mode 100644 index 0000000..3190469 --- /dev/null +++ b/Misc/Flash/Sources/PY32F0xx/Target.lin @@ -0,0 +1,22 @@ +; Linker Control File (scatter-loading) +; + +PRG 0 PI ; Programming Functions +{ + PrgCode +0 ; Code + { + * (+RO) + } + PrgData +0 ; Data + { + * (+RW,+ZI) + } +} + +DSCR +0 ; Device Description +{ + DevDscr +0 + { + FlashDev.o + } +} diff --git a/Misc/JLinkDevices.xml b/Misc/JLinkDevices.xml old mode 100755 new mode 100644 diff --git a/Misc/Puya.PY32F0xx_DFP.1.1.0.pack b/Misc/Puya.PY32F0xx_DFP.1.1.3.pack old mode 100755 new mode 100644 similarity index 99% rename from Misc/Puya.PY32F0xx_DFP.1.1.0.pack rename to Misc/Puya.PY32F0xx_DFP.1.1.3.pack index 19c1de6e1550061b19feaa78a9c48da3a1225c4a..ae8e53c8e3490efebb8c8659e92cb50f40c5a7f1 GIT binary patch delta 151198 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 delta 95809 zcmagFWmH^U)U6pTKyY_=_aMRD-Q6v?dj)rQ2*C;N?(P=c-6gmd(na2{@9pmUqxrMf znQN|R&s_)Vj8UVQE}etzdzywtP?UjyME~^hQW4*(G8iVOHi$ZSG#d2j6Rid0C;UXmTwH*W2M43& zoSv=oE<5tuB>a0%H$1Xs$vKy83`EF+)CH@qm87zM=tx2Ms<~uh999nVi@SP)?Q)8` zc8fm__+r~&8?cy+euEYHr^&bkOq6wuD*Em*YU zyxBvn9MI_7n2yxQ)Vm(KN(Q{wEK2!hDxg(m+Z>#RnzCtm9L`$Ru6x;2DvS(zXUUph zE>fhuiKdMTE6m9eMR>lle+y)1l?WX)x)2GwFaTs&wh@{F zGCcOblN%bmd9y3HwV95zCoykWAZ=r1%Wa>U-V6X|=bw)YvHGSaUfzrjeYtEsUSDVX z@hD@Rx2zkp|El95OLhoAFEsCAF0D{zZYC^KWoH#E@P7lFWt7Y%`svm8XWpk(iz3pr zb+tU@=C~0NvugYN#18NPH0`r~a_rC!D1hE%Jjkh&Gv7Ez`{4RO(^$Im!8DA>`OZrH)V}rT=r_7;ZwV^mJKMdvscJr9?~*;oA|-w z31qn69Fd@}H?Lbi@vB>@8i?k>bhp6u02E%Ax?H7b1aD?;3f--F?y_|G3ZA_H7alou zx7>A=JK|1Yl8?P=Hfsg!yOLkPglca$qBrl}z{5?sGdDe{h%kbYA9m)i?fkknWtVK( zHYiozIM=34^Z~NAPZ8l|HpCU%#+aw}>hx9>U+EpI;Rd1xui-iA;ozJ7-X|s;c#r&a zB0dv+xt+A=?fo=-sAaZW<%dw#FZ|o-nk{TLwLLf zujP~(ZYO-se6nWSSI@hlRDvOY|mc?c0!Z%KBH}on8Byzy@Vzjg3{@^ca~!N_#5KRp)_tyS&}r zaHj0O0)?F&qOlxDN2(xKQ#+C~H`gH!zACpqV zYItRF8?Q0XRae%m&57SL(?-S($Tg|vp>9b1Jm%015^)l{MFPSd#=zEx?gf`Bk`O8o$tO0cL{_<58nVAC#rfXBz47VGB|1^yCYsro8;qfUbT+0 zf5ETivbB0q^&KclRQ}xZmx$HS@6%*_>CI6dowZm`2d~8%tc{{I&1Gz{L^%<`#$Oly zH1#+g2F*^*ULM!yHwCF>+1_l~F_TPUA95IoqMd4#%NTrACy2ARN!W)Qo1<`xdd>jo zhrX>t!G7dSGMG@of?88t0M1OKwx0yF}B)UgPrkuC1I_D zJK2_ERhB;4kW}H*xIU2sd>-k;O5wNrI#o+x@1FUZwC=A1Y(DYf)++b--N4qBeL)Gg zup2Uh&P<+Ux~ZHd=bgIic(Jk?XfgqCfX^!4-ZIl?PQSRefTm{e`qOP=gTwq0pOd z-+C0br#7N`v5c<%xj}GON5E& zFse!+l4(VEUhb-alyph-$WzSYcdy2^{#R#JK**wnjFE;xF=z~ zX>gFQx#9GY9Dhj-ru2B{f*)M~wP~9X-X%U39R?!-+SE#N05+L+jKCg#cGCh`{K$gB zjrG`AHI1-z>^X=Fw_Zx+SvsP?Sh+4e2iAiFXM+Yb4~WT8moDTj@3amFOC!_d(FDg# zf?{!D+M*^Va4D#h9`q9)f1)vhSOQYt{)NI%=(8(W^|nu$S}Y4d2>Xc4Ge zo-5biK;`Gr+u0F@W|&+KnV53IXE)k3+ieoeN_qC|2PQ@UyuP|^-9<;6T*6B_`l?!! zdgdykRint9+s_5(OM)phw9LOeOIYjT&gI`iya1ICRbh*#&f~+F1e3$DvRSei|m*oKi9*Nhv??Z5wp3SO#->yg>IoWe? z7bI#nTFyzO7JRfR&%F;B6N>!xbHXbJe!}@&#zf+D;34?h0&vZ-&XUsqT5SJ{z%umc zxw#~TWI8)tI>Z|O!PDMISS4U{a`_l+u{|L9lmU~C=)l8EPV&$esMG~i?vY_aCUNx` z_SljBRLXri3Z@tu8cn5dH8#W;w_WeS60kUM**euLv-+bem|KO4@w+YKFE`j4=tcA8 zqS-}>4e7KtD1dX^9TnR>z6I4_%EB_AH~X9E#`F}L%9XS z(NhBK3%c*g`x>#ryQ$=Q)wfRtq&=4SJ+QqBtMD*F)&Q&JF}OlAB$};wZc=#^axH2M zDILM@N!i;XN$BM7AzZ?_@K^yVf7EI>q`T}7F6)rzD#@T?>LICrf6_4IP+Vs((KEni zTPZUgN$q=h$h@$cjMI9|8QY;&%m>|tjfMuT4jn7uG8sCbARxbpMueg9SA z#}s7~_rsV7h!*%|+^1zjg9s}vLsDfO2D{vj6<>NCGNiQy8xb<*OJAdnhvANCVz+_< zsS$HXt0x*DxJR|<6|3x+2~`@}q&V|t3=EG~!w5hL$6o{eaKG-y&46IjByj|DkL?@a z#WKAx0d>h?sLQ?f%gDdJs|80z8|B7h$obK;E4`W=bBc48Z|fS)J<)0>&dgXdFbDW` z&d1w#GI+kKVJ6Gp4!g90Sr(yqio-Q_$Gh*ZOy>?2JO4E;UkC874|>;M-7Y7?13EMF z>IZ<{Ax7p%-X8Vl+fTujv%s&s)C~NVRIcu#WfQ-4%f3R77;~g+W#=@U-+XVGaB-Wk zX8RtlAWw@%-cePkXLZ;1gj!oOVI3Dk-W*f1F>uoTw>!7Au0b{#BSgQdIcrr^cz5kzXC;`W2s!2m03Fj)m=MelcqJ#>)(yy~W*h zO7^Q^eYRo1zxe8=9$Ou#-dtPAyYFTXS9^44KxiqH?+u)uR}1nP7ud%jxd(5fzwtHC zysD}}Ca#Hd1)uvSd?u3UTHvRP7D00=?x3Go&SDE5Zb;px$#eVgqWEd0gIW0EnK!!hn zZSWcOD?5({QoEE)>Gz5?DMoo!_+hlT-^XiT0-4<=LXn{p#Yph2r?^=q_KNz(eZ6X_ z-206R%%R}cdq{Vur2@1pqNxp^0mSFUhHNX7Fv6VA_U2RQaL1nqug85C0`<9UDaPG< zlOt~WkUQO%5hY?_xr^;yUw(em#lsqE$C6(Pm7ukhq_g}nHNdg{DO0qYT~_(~prk(y zQL1HJ4e^7%w~BHAvBW1+s4p<_zVvvyBikX6%Z!v=6fdxLArhuB~A)bGROMa zWJyvX(L&cCnnJwp69_a*F#{yl6<0-1AXy7KcHsW#SQx?(=R!z&s9GFB6U#xz9Vlh> z5d08DB>tn6wY@54QP6^8zbr)GF2f%PX5~F}RweT~gJwHu z5bp+QImosAsqg;w(45<1$g8*8c=#({FG~uYrO{;5H5T;^yOD6Ug#(~=jepYJ?od4` zgVhrp7RYc~HfC6jXq4-1v>C&wB&n0y@Cvtsi|+5lvOL9W$w&~}Z^?!(9ZGLOPb7^o z6YZNtSR-LB3>#an2M<|z{9}f<_MWAlx=P#zQB2IU!6J0JhP^u>pfXs52WRImiuyHh z$cZb8OUfOd>UfmQNE$#TSoFP?X)<)(m_@)ee(PpxB2(Pa)BITS(>$t9&WRPhSZZpj znhZ0*l$rhPRntvsMS#)kwFZm5wDt8yV?7V-(%-i`9`CWDz1i0(+oSI(yE>c?X4Plk z^Ca5(>NGNf6MVNIVnuOuCVCrE!LMRV;S&HI5b{DlHJ3jOa0Fzu6>w&77q*g{mC7SP zA8Pz;x0Va`E1Ybh*4}@yR^KhnjT{@RB`F_Vj)~Scn6p@xFW@2%#B+_DC^0}1$91kK zZBbR_xVzU;WA~(XMTwL{{@(sxeW{mE{IWuM=1U(yCc8e)TOuo(I!dQ5QgR1Ni#z7W z)<8esrzsgXrvp&Z%HkV!R}?7AiJT|a4JjZ@ou4g%W;E46dila5upcC=hb$h^3gIf` zanK}lqUeO>Qh4_IE6}T9V^(Fcc#eZ4l5R3vnT|1xcCK(pU-6F)PHQ`f{w`-f@q)(K zcUxH~4C6rBd8@87cD&Ese^joEali$69ZDXGWNU&Ob1dVk z`uH_WbR{v%N8Ad_y@lqY*;`ZD*9DIjxCy;eWU|acjY7 zn`r$@VK)Jo7|T_qza$nD32ZczIySEIN3cd-O`rEF24e7(@R!xCqWYSkc0B{tZ3_ZQ z3EvxwN4lm@yck;%p-?9b=9?cI4Lg=()wKnZ5g!|KMuS}<&R|x`POIP|t|hA@I>q^B z^U73cj5rE$nd%sHHl&?PX?vTX#Fh_e5v9n&TH394edf>Y1y0{xl9OES<~@e@u>4P80~)5`GI zBIbZ)IO4&q-tXu^(c`^B0#xI9p*|5Nb!&WAeqWA%IZ0o3ZSQs&p^f@>$M)nMlN-hs z?uFD1cx3~A+tp+8p-^6%5tmD$gtj6<2b1xr$t{nY?(F{Mz<2-lx2o|v2Eh(DZEgNO zbtg#llitP@zlv?LWU8<6@;p4>TxxB`m#TLFc8u))?ANkyo_-euYdGCgGXB0JwS^NBzn!0@ZwqRx8W>@;~6L^_H+c!e)+XahdgTeuua%E3 zn-l^OXw+9I4Zdh6%S=UL$k}~O=wkz9Q_FJ*l{qamgW+heLGu5Vkt%a3v0E#EU6F)T z0Q5dtr>O6ji~fL*4r`1Bfob)fh=oUH5`w%+c)nVkSQ{BTG|#@auDm>PB2?gSyh!0_ z-wYwG%^0iJOBWqaWNX^}9>R_>M3h9=GB;M0Hy*vVw&D26Rx`&`QgWGeodUR^PS@{` z*T8n;H%~|xW1?DPzK)AYUt^OgGFYJ1uZ>BUb$W%Q?o(4iZ$l2eI`r5PC{x1wtuYQ&#vPR+Qt~7MmyZ%pOq%s$u;h>BKb^E z6(E3C(Jw8(79!>3i7$~tTtaiB`(Y*crHe6pCY1eHg=G-&sc&JEm?C9u&Rx7m=;m-QY4M+D47 zOAucKbW}^6dWRJqSGa}H>+G`qo$z=KOr|p-8|)5xq(#8bbQo&cq|on^*d(y|?7Gf_ zVUpMr;Nq(|`L-Plk9xUnG+SWh`{`mm7rKG3!*;Mw)51)t!3C@$BxaV0i!X8rUQx9v z?V_5OD(5y8f3G`*_g&XXzGMft!auZ%!8=6d1fVPoFej0f8;ZKJnk_sEQ@YLTLRcB5rC3~xStm2i`@H>BC_D`8AhW+- zHSOF&E9ep+m*J+PP<-62^z=e+{4-B%N->c=oert8xF3hYvf$t?tT8iHkNjwH{aIoV zKdwcP6$?8Z4rbiZ1mQQM96*c6f{_cxxo11gn*__ZgBj&PSnsy5Y2M*sxgovIy^rk zZqFi!X;K+kEeUT@0k>aM@3WQFpBeJ}#s_2nJ9M{#!t;B&$9EJDz-}Y1oihc6@6V8%8OdwRbdSjYVBF;i{F6E^$QyZmR|`q)9CGa(u>W>x8Te@25Vvz64e4lV``E>i zU1Dl`MvixGwFg6QpU3eTjAXX#%4{)IUt?zY_ISb}_O5~fJNW77jKWUPJZ>u5q09{& zHeLXMmj`V(gTLYMDdBlyVz+n#9S?n6?0jKTM@nY9od`7}v=#|i8IZ0D^VHh+m~o=c zO?TiPSuEFetBIPiVy$wq{XdhH2czU+=YA$D4MxeumO~J4!xYCG2xE7?@gs=pmSEA& zczV*tCW&z@P0z0iM%l);$nbpD#iia0t9*prcu%K z>y>uDrMmz4Nu@L(`iXXy{7E%DsXtS`WXDRcCNKHS#0aOAYBo8Vv;CL;_Q*MX{p{!JQlU8Q;^0>VNB%i8TrNi6@$rWux^sxX}Ib< zs}Q2;g~r%|tF+Ud@pEFQG=Q{0zJL~&`UIT`dBN=qyph=h@no-gRqN`7>AmrqHW0gk z|6O^fPRcc5^|fPYQcOWX*q(PWZ|ty3X7V{Fl(eq{tIpPm^|B@m>!sj&SN=ig@pqWd z9hp5;9Y1RF$*2W-htZl#o*J7v>4HQI#~3(!Vc&Vn4DH0|mg)}PxY zU1^zgcacdnSD59)dH`{Kb*ahNCdk8-xDMe$2p%F?>4neoFv8Jw>Z`v)h~YtRD?fRl za}nE>HV8#__mi-Lpb)%~7v5iFvN+e1?c9#knZA)c6pZOhWp^;95MXy3_|N8Omjj=s zc+y(;h&N8yu>Tk&#M5;n5$RCnN*i0emfqv;38_gn$XXv~_yQV64JYN7M-UAY4_)`! zCsLUQuQB20C4A!|f0_PN^r9-CD`ZTiE!zoNYRct733!mbA(%M9&!Cki6}^=!iHsO6ciFy*>ksoOd! z$Qpb_VfL9d5zyb(sa(1MZ(5{HS?LkY4B-hI>XpcS&q7755|>UM9?Jt-XeXhKzRZLp z)hkmw|0jZ$4-xS{G4VeUw0wxDGvTq62asl%tcm1TN*0)`Dg#f%JSYHK{J#L8?)+O6}xN z%9<8M+z6$GyX-*7og|eE%O>jetaE|M}FLc7i z@tzp|ZK~2S|BP|}8Sy`i3Wc}-8TtMhkKzF!=QlO!xc`vk|B%EVPK`qJk$*_Be@^Oz z52TuO!iQ1oP$q#&LlZ?fVZ01xtx7p#ZzQQy(x1}PDHwxTP|B=nc>b;2I`bK3OLs70Qb{_}S5OhA{Bf z+_Os|>8Q4p>2$B%bI$D@xvUe>u{pjE6SGrV-L!w!5HL0=w8;I!g4&TFPU0|8d{DZjDCBl=SeY}gMw6^MYaAc77>!C9v$H6$Pf z-Mi~)6y?i+no$?6MVGShsJx7+&_8kozLp}0eCl-n9po+*g@pVtmyDu-fy|r9b&HhR zD6gW|5FnN5d0)~GlnsOc6b7M(D?svF;`)-yqdUZtT*~RP_!6~;bt;);IKQp9O)0*- z`Z0-2W;WBl$N{(k`2+QbFBQF;$}g`mOd{2S<6mUv1kU z^`@#JZG!t+PaD+%)5d9uwQx&pKLNzkMIp{}OItyj(}}3yZZ+UzM9S@%% zHajF+`IPBdLIm7ZZc9#+5REBz^^9C*$6Z_NH?TchIbhFMr4q6j?<>83bZWP`0g2x( zAlbEf3OLa-LeDzt&!ZH&U%b0tTsOA;V5DUMY~RHHIZm37&jG_Q-%a|nNtS&BCN}d9!Q>R^OY}k(Z)ztmJp~FOH560==#aHV`RLEWt+J&jDYkpCxFsIN zyKp{s=Yx;3?G4DO_`M278M*cFi~IMzxIiJyfmMW|q75EqPXMWADU9Dxy0ap{{#GTz zFuMo_bD*-1bS?*mLk+TPYMeWh^O;7h7^HJVtOto%3Zmea!sy?QamRee398r5+?tBmBTF76;)vKe2t-*LP_?G<4D;v(NHtF_I}orI6m* zsHjAo;jF(`oZ%!~jG)1i5>sw2FUyZ6TD!bxb2bn2^cX9xSd4RhR)V3jNN2-iAZ0ee zzw}q~e8274+~AE|*1EDyy*eDy`^%w& zK|u-~##=V;2bE5du&8KRlZ!*}FgW6&`Q%@66hz2Gq=6`M89f7$hG=Y{`L>~o^#kIgJ;pH3*if+&y)5%3V7gH zP7%_n48$y)ePBwDSrE$nn=^5ov(Iz%bm=|8W>6W(4|*XppBH8kSH#Z^CtRyze$PI{ zN=lp>X8kqHn(fIrCEhZj=GTQ5g7N;M)L6bUZZ_YVjZjw}Q*?qsVlFmzaztkv^J4ZK zVcAS)+@Gn3Lg6Dz+J6>74Qq6V3}C1$CzJz%7r{1(jZGhwaa7B3R!>-MMQF!~>%;&{ zEy0O=IsTThKd2!-aBw8YHsU|H{+Z)^wq9Gb`g`j9cOcO)iyL;~uf>pTKz@m~3=3Tb zySM?3;vUm%!`ZO5^}Ns3$)G6#*9pNhARR(tgEeP+^OfO(3%(z+!ovd!M$RCjlm8=jO`M} z8Dzzb>>|?pghQJu=?(2@4!(}G`jQI)GM!mO|j!K!kXwChCdq-d?Tm+>6vfFj`BHd!ica}Bz zWwpst0zgb#GY4KYhtO3n5l5m2M=d0jZ>_Xzvr{c%YY0&m5PvZpo6sK|sZ#HntMkix z`Cesp`qz6sT)R8O*S<#pn^VWUn3w*jZU6G~W7yH}^N{QA5L&|nH8RJ%ApdKqGwf`1 zd)Rh&h^+y1K%ML{ucgI*BaEO%xGzgQwts33fJ=)`s--7V=yFjntW;JRlCXeQADJN^*Z*MLnANZQ+iNenIwVz|(kHf7 z*3r(oN@$E{{Bea|u##KsQOc;SleKQ0ER~%l&|~>7K1-na`%V{H;<#m!6;N`>Q^v~Y z?lMr0!{=_8wctd6U$_sVr+m=Y{$SLZ*RT1zY7c?vF(5k62i@@>-4R4b0MT(j=*=K{ z-#>ca2VDn5Z<=H+*#yB~-9F&2ZXmcF2)+)2yM4e{Kj47+RS>-iM7R6MUIC)p{-fK1 z=o1S)ju{nfa@LI?dL3V@@Jf{Vw`s~-?a-m)hDr94MG(E?{^*M*o7Z`F=Cm~d;qQ5# z*#h+s`bs|C-h^cXguU=@SC60ar?QDWA8@PK$~eyaS;ThO=!I=Z+zJ4QUJs(@gXkMk z;@>VQZ?!=5IuLydMECtie?9}z%|Y}D5dG^1efb}~4n$7{(HTMX)^ZTt>>qs$M3)26 zGs;2mS`a+(ADr?7t_gzIfZ#(PuQ~`00A>H68-wTrAUfs;eF=0^&Fh!^-D42Fdk$y8 zYP@=<;IAT6r|u2Z9sn<@dR^|QSBLLDT)gU>`Rp&6g#zztF$&M=y3huH^>sIWo$IcCpVv>__9gdp!>hY;ql^1n&jp-s)23Z#hv)s%*!gT#u#KhfSbOrwX+)aUY@Au1t%k9qChv#*L z(35S4_t{H;0KPt;?fY@(J5j8!u|4pe|3&q6X}8@Xra)lwLd)ax)YmgOQ~7&$rtEdQ zuH~0ccDjPzFVsa`_oOuY&~`m)L~^8ueBTJSPS25U>x2jL-*+_&OtZv+)smg^22n%? zmCXIUi&F4(Kb0~3!pP-QZ|&MjI{9A`A5O^$-@V+wm6_H8V)7$_H1kP3lxN%-eD`K!&;6A_iCaSYKNUTWB3J6m?q-&}+#EBOi81?V zf1zr&gpp4kuKG2;>~Ft4oLoA*dldV9dokGovo%L3R}P%GImcR`ubZ;qsIJ2eBax)h z3f$Y(7D6}!Sj=a~z6M-9WFmDDYE;?AE(+M>d+jK6IlMg$t-4nM%J^Trir@S^W)0RJ zs(}0FHScBH?=4b$Xd3=U)z_(r^C=sI`q;iYDOoMGQ`Va)%>BmY>DU4Bh?VlB;Wv$s z4J&$y%n1|Z_9##0v-}3Oi}53q@*|NX@-$K#=J7}XM)8vCPkwnzx<{hxd~k(%=IUld%NH<`MkR%uY0enZ(MbzbZ27gIdqM)h5#|TfLH(X}fN2Eu%tYhU>e` z_>H^C8N8# z>>|>(yI-IjJpH#u0nH^iZxQ&9T^X5xAs>6Y9p2{#4!g-~E^wx9lOLbB4oG@TunrEH zyp4`m?Y|lzuu$K2PSlqrE@WbgpSW6?Kx7g%K z0mMZ$2id{~O0-+B2T2J)K{y*z@o0Z0>r_eS!tFVHxsYk%@x^f3ug`4DJp3CeXTi+Dncv*i-*`rn9M#%>(;Pcc@K4o7cJz;$F+E}hR6 z5ID}~=|L$Z$qYH9{Am&IK=M?xfjRDsEP$N3yM_5tiiG{lkz2^d}SB=7$JFJ3M0D87tR#-q;qi3}av)eKSZ{ z0}008R#GOTo4gY_a>g$KOy6>T)(|OT|C3JmLt9E z5J(%{hfvCn$oap7(d85*+O{!VH8;)|AwMG<5fb{p zK+?#8Xja5XJS%)m&J`|tyM9N_wc_3C=J>;kNKRl=8^AY@I$l=G@s4juC!J;>J2bsJ(i z1Zm(*;2jZDp{f2EW-dGg0m*Ik(S)y4Q3G;6DaUlY{Lz}qDeMl^gNc4(4vuP`ka|+d2s5}-bk8MdfXgy? zgNm7t0stydH9PFG8ze^rGdDpU0;^*Q5A@%0{F6~Pq37JlfASSz zGQr)N!|^+XgX$7y@n=t~w5d82Q5>B3_To>^TI@sv=WFH`4l1NXo&VngEm7NZ3SFd+!^16X!P|eB>#A@A@V5gVJc{*wy!3q8d7<2uBGQ0Q_JjbSOjRv}#zR^2 znTq*9&ua^07x9;Y=52YDOGmJ^dP*iP)=`w# z^f)%-ZiPyyrK$hhKw*grGW;>tSo|8#ubf zrn^jFHk@cQ3uY@#4UaO^A%{8}ZxoZ7E$jge4_( zWe!B0s?KFK1)|3Ok%}tMM@4*nz7Jhb@tHpC&wVHP#_NM75w$(r57EaK(a(qKSTQM3 zgC17}JB%$mSZ!(!1luu>YCbWI5+D3*N>6E`1z@ccOKMgit>nQei!bRLS}l_SEEw-Zkq8!HgJTUK7H9mZjBB_BTF_v-U@=1fpWIi)Z7{0QAJ$Wm9;|L93$?S z(`!17f-Mm&97wTKny6)Ex&W5WL0M-$GTzU&Gx)LV0&Y6v{U<}q@q~0K`F=h$N6`0A zTyWFVb@w+>K1FM>vgL*}bCXr_q|>?n(M9ESD_Y>g>=~qYzQ~l-y;D=!gh=}l(+JB< zPmt&xX}(iB%R);av$mP8S?6N&_dGGYOn#`;<>ZHa#dL`lkL%y843P3${g}Pq_E$KE z%ppRExxvJi%Z#tI6mCg$=!0 zLe(J5yhb?J?LCwGV&j@5f+)a@kPUs#i?Q=6CDVT;81fs5B6>3G$S20yksYqKvrRU# ziDHgayDY*bEZwae%sQ{=@Ke|(@!g{DmZ57a!=zDzsw368ez zr&PcekK!_$=QJDl3C?%&jJbwfkR6eI(OSqVSM(`?IJz|iQ@UHM8Bx`3g8e9i<^=bD zT;D;iS&$1UEP+A@*A>AQ94vJk#Nw#S`EFkP9h6=il)e&_o*k5)fMGNV(rS*wP6n<8 zdC`BgG96lvO+wEk8X!8`@)g}Rdfxv)lY#nt>Q5mTh$dGj1g#eVI=~`*K&4hrrBzfA z@1^}_MpYL%)QvCHVw7?A)^s&+PJ94M@TZ~$f4#UVB)@9H%<8 zn^q+NqL2Wrm7Yp6zmsKRaLKHNQT1NVLxy-nX;Tvv&{>cA1g{LDjd{^uo^R8%r=c7D zF52qrAmg}eZmoTJ zG~{`9+Jl^7k4Q3-ICh%kXGArA>|C;B7r>`vBwnLAI*^4h>F!Hh9O6KVfV0H z_X9E6{a^m?Y)sM5VmeRVp|yS_XprnDSho8RL=hj-zibA$cae?P{zzu8!jv$Ub4)9v z(ER8h(!Xq-|KlHh4weNVPZt~1CnNb#|6_cF^RfDGAn6V+oj6CS%aV@hQSqPjU$+18 zpJK5J3FiC#Q3s_gHsBZ9547iz;OY_iiK_S}GxqHbIW%Zw>^0`B0T*c8jU$B+?Unrt zHn7_?OsbbzN|913PHL1z$`n8eJ4Q}moWLrpoFs*7n&2#}oGvxWIuep*3ZDpXmH?Gb z&qbL&PHvLECnD<tW|V9xBR*jxKaE%=(#Ju=Y-yn3^g3Bg5m`)lKqAy=(0wwx1sR8` zd97hOeP|jz4y8;ItnC1`yx|9Nge8{`|LQ2Dpe*DQZM}Cc7miiV^&Iv1^$0SSTZV!n zquno!pWW<==`y{}QlZTS_^IgoJLX;keaAXd@~7(e;I;_83TY)lkcbHJjJ4jUlWmWF}|1N zvL;5E1RMy6V~+r$wwhmlhm6WP#lV6ffd2<2-AQ&DL?8nV;-|jPDW;G7A43QDXzcGS zy^?PxkVE?dA1~R~|92ybA;?KU6#M_=g-HG_?v@gILqrz6Cm`;i`!*|R#(2hybSNN> z`;i3z3gbVjyOd7&{~BtkcINx}j&1cnNBm6dY-Hih_0BT$KRY9+?y&N_b1#>_LQ?;H zSN(B425;Q+@*5KoDcY~BhVk7hr(@$dlR1jrM3Wh;G`No}f77~L<_B)EEX8(78VP+G z*nID{{~vn}z=D||f@)F1wdyzwrmVm9_GR-?6Yi;U&SzSc5f57PPjCl<4Gtcfw>r_T z+=>v%C40OWY<^IQIoe#jw9gfTt>nf2qpC%`7>U)8bvfeLg~r;^u38_)aSvKb6WAi5 zXlChwdfd~Q4`TX_DrWMGA>kZMzA9!&1S66)Acr*>N?~A+zDKkeMZ6?U-9(RcPSA{2 z=2ygoRzNzkR4N0Qu1#GHEt->}XH3$8Hya1E3JFzoLJeCdEryd~x-4lNOQJI~meUM1 z&bPxdClcu7kpgfWHa_UYf3~_#TAU9XWgH8d3p3t7+eKOJhiwmJ1BgM-{)g+LB>?&0 z1#YUKA6%PD0MV38MOuAgSGBSb=Z?qq<4#f`&EwpRmiNXP9J=UC`~UsMYm^23eT;iB-jFcj3_(r& zC#uVTh@Om*B#hi3r}6)G(t9wDkua*n{9k0f1yCJ9(>98GkN`n~yE{RHySoK<3+}eK zySoH;x8UyX8VK(0c2C~#{qOzizg2sxcW0iK?djg>t(u*Km_CqdN{{tgnF$IW&1>!8 zy41w1hZ(v-Hmi{>+cC}(UUeySfCUf;&U*ZBYxN#yi3|nWZ~>(8avI^pKcPtPosj{f z#!7xN-$20U{{k8J{{hj5cfDC~cpmaKBP|x=d;X-_gWSvzn}!@~Knbu#P(yREL=dHw zN{I0;lp;IBOgU|4cHU1qNsU~V%0ZWQ!iWveu0#TMcD`giE+1gU+{mjZIi2uGPUaaQ zd!O+LC2J<2ITt}PrAh2?a0xXTdbZ=B*0g;c@nJ#F6^In;En?$VC~@)6){fxFE_f>Y z@$lL(VndlAUcCSCuKeR=u*1Q|E2c}?T9)wt$Ggi@+h9$6JViZA>Z?m{t&V}r5qdNsN;LpwxNKT_Wxz}KC9x`>V z?OI)m6rPv`udA6|;Kz0emjd|bn0NBUs-4SMH1SBsck+LrzVNC5A)bMLVa8hu_~&Tc zN}A%U3vn^iabw(dRnY@*_=u9Q6TOMJSH0#=1o}8Hx;dA`I*afhcA^Bf)T*-B?+jw!PSlOyYwdc2djkaI@kfJtmDRbu;m5mR15j5 zizGO~=XT+ONE;Qr6j^J|4*#P+7zw7)06@sD~s_(v9=>2f~ zGA*V>iWjM2soD{@DBy{<#^DDGOZtU{3GEY-7+nD=rZW`jm)W=oZhthyBMk}e&U%{_!)4Td z`Vv~TIK$Wyx1Ve66bBz4gih72^~ImZ0!lXb(((w*brvpNXnSE6{Ja2-Eugo&5OQ78 zD%UiIqa|U#VCK=XDH@Z<0(o>03sgAGJYLg@G|%E;L@~~S+ZJ+B;p)l3b|&rTntQQx zWBjoAG=F*x(+tdJvf=8v+-Nj{daS+T;306M7_IUw87Bm19_zSOJS~vJ2SF}fm3CBM z>#RUt(A9!uUu*B_V55v0OxgIZb_SCCRnOSpS8Rt?`8_cSMf88u+l2qQzC{;2)5+N~ zO-~Tp8M7fQ|2Bu07{v%G;DG$ABwFBkB;?osrZoS(rU}cvzgM;6n2^lBGI@wmZTtUj zE}aJW4~kv&T_ql*MEYe;hz}#GTK;lQh;nt*VLyqormhJShQ{hgk781zmHGV3tqeAl ze^O&5lY-_NLUdV$4yZN*;K!gUDt-p}jjpQMshFJoD`qq)^i6)!BB?Ak`RCJEEh(f) z4zhsLTKzD{1qsAc)olA$y(GhHfTTcz#BG&~u7WBN7LzpJ|4TUQ{~u)be}MoK3dH{( zs?Inq7bJ@9zjkg2?3Kpl?9G5o#4V}#2`#R=Xp_r=<&!NAGRorr7zLWo9@7XaD}EOK zpL+pKJlh8z4RuXP|HlhoOU8q8&i=O`z$Orh|s>osd1~7O}&Z)A5Y)#<_0F=CqVg=I;4h&LfRFBV*Bb zZR|#Oiv^yBxP5DH|F7H&b87DA@H5MP1`s1@qKT3FgdCePLcf%V0@Ce1YWH$8$NEwxsQ^ z&RuhAT5{@9{HzpA!BOsw@>WozApJJOU;0|s{rmH&zo=Ok4<<30?~3bhn$cN(^1Blr z!hK{3FSo?u_H~M=q^&VA2taf~k%>X3*Ynw>K^x;Q=PPZO!IA;DGM&ic=JLCz2TVOD zW*fBL;fxjK$z;y1&tqz6W|(t1q4;8=cOO8u57!g5zEJ9DeH*)Gx&+pCB*D~eV_P%lx;Mv~wFp274^kx^CL6j4Wta`CjslkdwT0^8{ z?0QqXH8L1)aItTf1GeZims8DDUKrm|06SpoPP>?i+{v`hWW_v?VMpi2 z=;lJSn_OOWG;oX;Ea5yTOIyhUn{@YOB@|UQ5dYUCuSyF*hd^-3LuM9RpX`f4HJ}}# z(o7b;VQ+*wQTg7`b-NEX%5^ytta~`YVVcePM6QpTgJj%*9kg2(~Jy%nJ66Vc8S*XIIq?V09(qyQ=-1uh8LN$l2~p6PXT)A4a~) z`<4LrtOEQjGS9Gp@-F-4*f2ro&!?J!*f7EC&qo0-vX&_}U2M%7w3aFQkA|#eii4;l z^Ky|#YlkLnj1$Mg{$iM^Kn>ij#FCU%j1ztM8Dl>(cPEp#^X*yFG5S8LnNf&250j9l zU_iGV^Xt9QVJA!8GB{doUx~Rx-T_VXcMssixxc)5?Yg489mf84oWNcapHiK6jZ5KO zfwUXndWlclt6Lb_C=iq?n=v6IzgKMubILPaRrwUBOk$>k-Iwr3L?oy+kQ(6ZXL}0# zXFeli41O*rOG{n3jxqGqJ1w^p%+5GQ`U!1@hYao-8mDH0hs?hIH5A|J*;NlOoComS zt%v6&Jt6Gk8DfNGgY$waEpSeO#Ko9H3&l?gpL{;LDqTnOcsajh<}O3-a=D0jyRnPW ze$#M;YcQ-v3s=lfRKxJPROnI6uZ28``^|y8Ky~fn%2|W&;LzEWfaIi{D@H|;CWXs* zu$AYZfMf=HhQqf;zq@T={k9L$MFLC{*=;5@oQDep7@Cv1ERQ(rA*bEl`EtllWx=~> zRN^zte1-h-OVdshn%V6mLtz_Q{U@x0E*THT$25OWdoJvq-ENA1RNCyhmI%7gdPnj z?qMy9pD;#>NRIu{rVgd=Z=5AtmfjUovPeSPS4vu0>DVgMJMExnF=i#DZskeRVs2ga zWEanOA0r5KtpFYY5pS@~G5-qXSCigN7m#m)M2rj%mcvUJXG!QdRqd#KjHkmwXNZ3h+`4d%WzRrI(~U zQ|{n+cIDI7#nCflgAprfwxr&BYb;*M2bGzFYtb&25@X1XP@Au0@J#yLWUR}VW>n%b-kx5H~ry^XcO83`t_A&;F%T8dn$fIDp7EsTn zuJe@{?nTEL?2^m_4j>s^4?d+0&0C9w!d0WLN>+oKlS4jif-9-4d!d*!dv zSBl**qoX=mB0SU+_4agkC$1Kbmdvp9M8*HCXL@7CSlf>u%(YjAOv#dOtSzOtjzHMx z<;;aj#|Vh`M_RMJOy3HBo({7Kio~Xc+j>Le9%!V|#Ujjq0Mu5)h49RA`dLo&Z@I)rRCuCt+%wHJ zkWWI0>3zas1$f1mgYR{nlFE{7h^M!>|Liv~?GR7bBJzC@XL_Z<9ytNQV$HDvYv zaIEdxxzJGIB7J#IPElUOuuH90o{RSRbcu8Y1sW4@2H)E&cpp^C^(GaQI1c`*%CXx{ z{ubTxl!AX{@Zk1w+j9Z;=6ybzm|@!qnawC3F0hbtrvDOHD->)B?2>@54Qve$P?e&c z@eAQ2IbD1hYbN|0S^gUty7r7vD#?v(?Fw6trIZw`6WX5bB=g%J zwZL~3Sgo~(y%Du1p+KFWWWAZ2w!bzHYv)y7hMO1X;RlTQ32$>DLyQc%$oEm*Fw*_p zrq-Q&Z5F4GC=<)CR}L+V^vpPU&;CdJ>pDMePuMWtqx*s3p|4~je*-Ho!`Q8w!<{Qv zqp^rplG=1rm(Ru4uC6a6PaB4!y-$a>MFD@>EvZ{Bz5{oMzeYUK%AOHCWCiRRD3n-Z z?3EFUnkISU_T^t>y6$Qjd!4kHPPzGm#iwRxCT?u6?++QA9@kex8t)HMUhq~Zo90!~eJ{cpwv;q{S zt`xbE;$pwWY3S1NybW!2kauJvZ(uK$zf?1h?A^@mZ+riucw=lk2sluC37;g^cS$)^ z5Q)bPmLRE%L>#W01E9#Cj-Re-p6oN&`rJL5H=WpZ=oq?mswtGU-U}wk=oYmLsmR=2 zBdCYo==-w9N20^J%}%u}^d&sgT!3VBk~N$^bW39yPiTTKZ0#EHDf5j6KHi90b!Ho} z#OMM1!;xsI`nfEvRd&|G95|$>!)}2j&7Um zJHasvEe2Ooq%30>4))ACOR$*Uq8`%++8T7w!idr56y6g~C98a1#K!vrhX9Vh6sc4} z=LDRi-RGt8I|r6F9d%kQ>x8APdLI5{1_*flK7T%Hhe6341KygHvabmx&Skg6X!Oxc z3OHE@Me{#ogpGQ+$p#}VOy9A!0}^!`6g}(rKnnoxulVe_@cv9o!oG4wxJ-@M; zH;`l-xZT=waGsvicyEGsrQ+?7b`5Vmb9_wu?^zFQ=r4Ut3m#avW6W?}kmI+pQR$8O z`yTOqcwD6g_lhIL3rq6EseNs|K)unRUg}_=-TEH13!^2_YHWj+4(ob(NKXQS#M;Ik zyD)$R+@8BQ@gBRs+&e$mJ(6m^E5^uY&(nYYNUXT}UYgt)hpfnzXYyyk`Xw`d@HTTi z#C3ux24ysDU%6i0dMk{-B-%j$TTIXj?9blbLBRd%q%Q=HV-vy{<)g~DLCTt(NCi5Y z1Bo@I2~d&1vRhD-g=Cn8BqS#_^h6gYcTKmutLzDfb|M0mmAMiSszGToJ<_^ojCx{> z>cnEFolt}27?19Bo#rh|k`-E$z*}D>S&;DAF8;?7+3X0I9m%QH=ljpNFbNB8IIsT7 zO9Czv**G!LCc0<@LH<&|0bi;H2xeWM6yVui7l1nHb6Zh?t>J5M%GLBWP^CoBz}Ld+ zDV9i9&7#o%X|4nHXOp=6D}9?+0uIY%G`X>Y%+2|}e?H7cUVTt%9vB{q%FWec?BD3- zU={mz_5$slN@8am+fUTpZdMY713vw##Bm5#f7^Is!#f>d{CKgeY8Pi~!WT240lVyf@eb>t>0QuOA6j1NqqV3Ki4 z7chVg@p|L^j%>I?dFfXkK|K|7$`0EFmB;1~4`IjARv0x5K^LwA2n|Ij9k@y8nqP3g z6<8aT`RHo{wP3n_R|aI9gpnoU(p~m^fdsx007CA~#rSDFEM>Ex#jk!>m%ruRC0Xcd zF{It}iVf0?!kiuayl>WOFf3AY@saEDW2&#urL)mTfy9@2Do!?EDa=CPXRMop7`KiCe1+;rf!zI^&k)xm%e5+PWD zxXPQS`vivG)C1l1L-z2So!!R{sFqPlkaG z{x-96!c`bdJ5?Q$vLsx`e-19)k#5|xdtEo)N4Mn8)Y{GfwIu|VFm@nhnw+IQa>NAA zG-Ukl;wY1>2@|!a@yTh(I~%&7wypAfss}G$PO30{3M*NLE(Xl=s*fg$kFCG2SkKcMeD z-ADzM6hE4E_J>>#4(EzHwhj=29km`Q6+8oHR*<_@oBTT~1`YhL-hzT`Bq^)Amkc8J z)ojWL6lENC(s;76lcaq8N%(GLkAY7m+F$gvEl%RfJq#Tw5+0Pi6RGv^`Laj<|J2>KW>rCE<3r99PF4n<4qO`A|hXdhUg+rs!tk0>Ioydssx~b{UV( zc3worBSy>$GxnOgjp?NP%`Q^`F{+JvB%0FcjJ$xQ-QPwEdI(<9d|g)3g-?hyId=RK zp@aGdr-O3S^kGI_qmhji#BCcj-9zoMyyRuXS%#8)-AKgZ`wCIC8?CqpIp%A zqg7c|s9z!f^iPu{y#NxQ?3IR+mABk~3{A>gVw15qNq8TVvJXl|#T3NK2K~mD4+nd5 z_^q2*{qw4$AK_1Xu6m>K@A57_-iO}|b501Aap^8$SH*~j)pOcSJ%n;1f;f-P-uqQa z^8V+aVJ3GIq8ggf5VTe<-KN?9lIY{M;OS;zqZQt?B@UsJXQKmxXVUz`oJz*a$c$OE2(1MdBvQf^#c7RaYFJb=dR!`eIQsX#q_zcn zDAfzvt&UTQNHYR_yaa`X>{&t!;;g&oXx;KBHk!8Lq=rruvZ#chy>yP)+EbRl?V3{y zaDJK!#p*aa7$~RkW8>wyhR}VeN9wR}+dpu&*W?NhKIH&?j=+XX#fmW6N|21yW-$zn zw$`yIJUR1o{k3?oycH_T@|SZpA19AmLmpcBW>H@0XLKlFtvi;}y@(%bh^vvlc-cpI zgQ?#Fdy9=iE_(%~$6juSl=3u-W+HY^#5cPy=)^#UkJihZX=LD9tM-b){m@RAvS<(E z$IbMoHg0CY7Tj1$6*Tg*3j8lo%$Bj?x4loSUFN8Nhlz8@ za0A@Fn`yj&t=90BMSK6)2*J^AM)v1*U1#&1r!uAaP()GoE$g5c^(P7b~r4jPBL z#4u1!Zlp%I6j7h6RC4q1%X0m%ZAH1_B4xXj5Yu5h65o)7^nEni^i+@S_bVP^`OMs~ zQk$VG#jcOWHda%$)$RqTnCrA)Sw7C(_!Wn6qzoBASd0?lGDY`Od02w2oRnM1+)RdC zEu^W8Fhv%8cbt-A+YEgTo|Ic6278wOUN91l64aJtmZ^(K#C|>>Z=$cq9QC!0)lw|6 zC>Q{djYj*&I`NX8mI!=GOKp0a6<-+CSX(h)5zYCu|0{5)EHE&eGtW_xWw$I4;+Eh_ zWdSfIcnEE0R(Rt)V_l3{yXvWokoP>}mRM@6mLOjY$U{T-1MNX!iG^+eFJf-n7;(jP z*zu=M>u*k_(j#~Lek|{0)F>&Q8Q~`IxFo*wRetUGE(1lm^Ci10U&8ntqe+i4lJs>A*iN2Rm`JyRD z$cSbm91S;2_~rEVwRpm3>@gLXvF_n{ouxNSEx%Vbe=PhFls07pwm%i~)t#v@(Zil!K%;k|Wx<`7TLxNUOZRiKM#D%-AaV!e5L za2Vmta%r*-Ei5(2Cd2kM-k%9qH|G|PcI9oEOiP)jP06C;?0Rw}6piVskLl%{y&;De zgdANqYY&S!wpm8ttp~u!Z_z}Ux;G4-c;R{ow$$gF_ot2R<_ViM%gYA$t|$AK2JeeS zgR6RpJ7Z||t|E8y;Cl6wta}c|5DYe& zB_Uz7WTS>a9x6~}Voc>69y)$dOThll&^APJ-G(|`5C)NPkB46Xf1mcX?t1Eo3VF?? z{n6A}w&IlDHWJ<|iX3MU2M?>-()S=uA1`ptk<=NaE?cmj+l8O#K;&`D`@180?GLS?Wf*RSZ$5&0c}C7`m=!t&yPE8QJpDtYBw3$%3oE*dM$hz zL+Qzkq(j^(5zmB4L|Yo-TEi#3EciK{DPk~qb1)g4`BKaL5_q!%CiR^4=68?$UMx>; zFzxn0|KG2T@ZZlC46FG+7L~ot(rKHnr^oO-Q)HVphwdZVs~cGB z=;QT68IEdm3(CK6ZSZ}+c$fIHRy-k{!DX;?5_v>Ls=4o5o_WMbssq2dATn=8s}p)R zK>ulXVq)6YfS#F5d`NS3!v!hG0v=+ByknsYAeW^DSBEZ^_&y4Ww1Yvd9gc)5il7nK zn=j!< zYuGH47@6)X_P6mi zFFFFQ-Q;@qL}*g(u<|DK(}anamx2}6E_r1BpXeQT97`D+9bVRn1YKu0uRxWq_A-7` zmwf$hb4Z{3h+Xr>tG2C@Ibc1RpyB3ESedSDL-Vxn+PChu>$}X^b#wd>rxim`^XN3t z9V($Mlxt}$$@KI0IMKlMq(9=~`Jay42iIyjp-)u=*-dTU*G2o7uf3%6`r|oWz!Tek zR!O?UV;0ru7^#nrdrSjqCU7xKhA%7+b;-DDd0&Kfk>#lPz3bacvAI#$+1{j&9uMUp zMfA~nWz#H?QO}^E)=?J}H3!4F?s*i0ued8Qu6j8Gxs|_qwe`h|AL0 zp7D%{_GcqVEMsjWra||?0YluQF8xTx7|*&wNbwlv!ttUk9yvU&(@1hSNYi`G5QY`U zjwOuoQ`|?LDsL0}wObQHTLMBKuda?1tgM&iU*|OS!7ty#!XxkET)jiH`9>pK8?X>P z9wM6#m^hmU&4$iK$Wr4wnz)&!#gsX-28%F@lA9yevi{{D4MQ*Mb7=N z8-aqJ7dMkSqM-46^H1)@1({x{>y+~Khh*6N8LtKeDcn9%k3M|lC9xafuao@KqX6pq zi8!w(7Hv~8JFA;Gpxbt&q57nr)Pb3IJp;Z-1T4) z)B^C1nNui;G@@7;DtF941LLN3Ms$&Uf4K1J@3`y-fC!k9AWZ$ z#)b-NBm#8ozr%g7Tmf6mbnHzj&s>GdpTtQyZwthd2jY4Z(O1sKci#QVAXlza7eB2Rg@4FTrLLo9u-)fSEP zKIJD}BRjwS-5&0}CdRJJJA)j@wWW|P@6hwZhH4b{QU|v*)g)_wy>4>6Kjdf>>*TFp z>_&7sSbX4%Kb*ke?)AM1JP(XM8rE(U1C6!u4t81e8aD*Hs~$TowKbpt-3I4z`4d2~+CZ7d7Y^X=w0rg_7ac z6@qOrOaz%A@UMvFLNn4q5NdfUagH~9z2G#7z`qb1>@8EcSIQGnO_f#MU7sZA4Fa7J zV~XsDi8jvyJu0cPf}6C4vXs{?b^_EIeucT?sT#{lH3)TT46E*Z!`__mHcyJ2zAvb| ze8Z_48t1~XZR<4h<1Yj*YA>G%To&=M*c;RL`%hDawjVEw(ZnQiw9^kGsfRm_M1Zcq zgZ}YULm60ni%FG2f|rMf&(RYky#hDaU27wd5vs0mc zGF8UpXckYkGXR|_K*rV9rmEcnh-E$22sOHBW;S?vb^;Gw{%s#DMurBzKQOyju*Jc~ zL;5qnic;Zqd%>|18q3fj-4Ks!N0WeUI*X=J@2?jT^g`dX4+^;3RQ`$o{^P;aV1M#A z<&=w8`FnNs^~7M0&UXa3VIn4+3UbprGig0}94IPbgR$7QazY|uzY+a2;Dp$->G>`( z56pzhY-ekb02<1eiWukA#G=j&QC}WMN;;TNIyt|*Y>a`y@WdW!6>(f}bL2FB<&q zzyR=T##RlD_g{nn+P)s3?Ou!#2>FOb^Z|~AIM#JI)CG6LSlvDc-wXaK9SLOH*Vep_ z`Mi!1eXQJ$@+1*yr+!$6Ut!^VjW8(qn2q_kibAho)z%3z!~P7b;)|&TJ{lPoR1Q{N zgE5Fi+VA0pnXMy%*Xt4x zJv?0%iVUN%ITaol^Dp+`JKbhm%=MqE;L7Vf^t4Fi)6y8c-S_zjTepR8@AAaR85rwn z2+N(la7k-8sTsynSEY=G;L^Y2)NTsD6dwsib9icv9(YZDdWRkZkS}vcUtzOB_kP3o zdeD=S5;GwWyiGB|iz_-kRDFh#kQ~}nty_xZ?gDFeg`9J(b`g!cATJ`g*!bE;*|$Da z<7xD8OWe*ExDA>^^2fd0^Ie2$7n1C{CzQcCrn>uD3~jT^h9;CpqW+LxWX;Lw8N-g- zn3CfuU_(!*@#wx#dNwg3R4^gf8em8mUk{VF~TGi@lPt(|yR2hDRE+iw#Y~v*S>*-+)wFe)gV|ee=(v(d$eU-<vD8`HaAH^v`gmQ zd>poO|0jG%dHjIvJV!CrhoXIdDb!FNG$yrKf-?t^!7R84o;c=n5sCFM-M!yyqiNR7Rc5v>BY%Odu+#59*I8R-V6x#5c|p6Ui7a-bgZshS)!I6t!SVV=50^mx zBmMs&$b42ebi3kJL9e0wHc$vpLeW*~R5GOWX(Ywb6czVg547jb+>e`|z_2 z%A8c3zRVYr!(yOnu^q1u(^(!X4`!h9C$>{Wgn%vVE$6(G+M-vXdYb`iOVSSbY9mQ=1W zv&SRhlX1|EOl4xnQ^C^EuIg>C(T5{Lqf5+=*Wr~$u>1uqWqjvTopjXPSlB5DN}2tX zjQmxugNS0kq7!i-%RudtffKYc_c;Ey6%XBW_^rgu&`%~BJ{b>P*+GVGgc&@Zbj#q+ zA#p4oIDj9g2n(Y4l2ds6u~MC=P<2LzQ_+z5W5zBrymdy`IV#urcVtn1Qk}8+w3bpZ zB@jonPYBftQM4MO^xxFx4TVKzEsj;@z20QZ@w39ytC3r8i5tL@{&{IWF|xz|SLJ_) z0uzK4q*sGxSNdO(1N^VhadJYi%;tvqE_@*KA4~qqK}04sh__|N+Ee!Yl{1Xwf&c9K zndqFzhk}CNuO;9R`!=%qOX)76Akih+efGEWG;In+=D0CwD~jCIyNB5OuLk;v~1UE@37t_De}$fyH3!L?UUR=%#$nH z)s(f}uq8_!>5_>Ij9Y312VZ}@Uqrut5>wX@Seq3PsUNHzVNOk$#ZhxT?~;=TWVX*s zBQ?z{PS6U>pTu_qYc>QNZOZPCn5URG>t1we@sMyMXhJYBKO}^%yJAp(5QYI-wIsw; zVZIt@g0;W?|0XapH+PD&M&pIsc-woo&P>LWKOiOed< zG`b`lPEt~71c`LX1lmJo@OH^ypG5IAJcT@+yaZ~&BBPzJ&6G0e#cxb3DY+P1s7T+gw->*Ix$IfmBL%O`u zxUYtGpSslEX}CxMsqt0mHar?T#KNlOu6|k-m4yvy4ZJTlLz2wy@6|~IQj^2KK096n zVb+L-|Az3X?`#LYe@|J*>S&{9S7ZmL5N@IC?mDr!P6W zUs>F6`btsyA4uSM+B}V6c51@JkX#&~lpg_GG;bQC^@3cm#tH4zuIh|19qlSjK6iaU z`NKb!e=nrveDLDtbABg#?%Wx3P)vFp2XHvmYRk=kQoYlyB+?mBV)5mYTrvr&2BkqP z&+nElz;&c67xXrX3h&_1oRmXJj)|3wa!M=c8w8pwUA+1Z9@9r|a2t?#jVjVG`1U55CV5?jdDjt#dqvxxC$K^bbeN4@|r z!r0C!i9cq!7xmW$lpA85T6-Tie74MwUjaILxd;Awx!0S0)XUNrKa;&odvx9DUqe%C z7ay#=-+YGmGB4e}+dt+m;}8Q>vOlPCbb~~*<9aB@6dbbq*WOOpVhSmDJ*KJII{_Pk@vTK zJU3AWt55OGx&4rvEv&4qNMnHm+vPOQQLxtpT8&fa`-(~U#6u732ZO)HiFTq8# z?nmg8mmB-p`4}a67aotI6fG-``%savX8p9wT+W77VhQjafEs4CzU zYK2(R5A;|y<67g*9_^#nXFb{JJNMLNC32&=}`%s>+=xcj?JKRy2iv52dsFL%y3lyB97h}IntrD~tpGOVe2!}g=TW0c%wygABP1}~QV+a)mz@7&T1e^Lr^EBn!jUt1P5rzBE9ER?8B#F_!Ye1kJLiHh`s;S9R*EYoJwh*VH~9mW_}2ei z{VZgG;U&FuDYy+*rUs%u`<%vDLnx~@D`r)>Vqjb*C{}b*fhls7hMFR*_n`_A* zxM@+I2b|UltQh>=nm_$qbRJuk424;SyeP=20Q#2*p~hd_qf*cb%!)l3x%EAlW!SE7 zYBAUFa0FGWXz6Q}3WjUpf~Bh{!gQ(d*}TWU?va3lWHO%Pz(7^*Z8=pUMMvcJrITw z3c!_r)y&pH*X*y0!SjIB2WEr2AG4l1;;d7adE9tp#rRvb>@EJS}oAdhX5 z*rg=hZ`Dr!uRuj-VU)y5t`MhP?kY-8onTO%1Cg-=^0I1bfGQ1r|1q=~)HnR9X2RY( zf7VfMR2m-bV`wUBjs@=k1UQ7AiXI8BX2M_4P+=s`(1sxj_RU-{b(lh;a*vgp7Qi8i zwui9K{nzDNJ@FOKfVu#OOlbv#%rY_vaCOPR2FE0kU#BYqD}wwiieERWMJ@J~=;Kfu zL===!{|>|>m^|pM2)^W;yB7EPSP|UlecC(ss*zI?#Cv|%6ogBWq)BYNI5}0I>5Q-M z9-24`dBe{$QFBLD6NQ3e_}WDUR|`DgTb6Y5K_ud99Xy1z>9?(T1J8cb_Of^0cl*My zf7vh-5rhsWLU0jM5p*+({FNqchxRl@ciS@~7yD+0Ex4#r0}0EtXJV^v;4x@v60>Fd zku^2j+IXy^#XBYV-xS#KPv_-Ing)+lxt%2oKl=rvQ=g?vkxNNK8iuUHr~?G@zot}v z$mcYRhx@Yu?7I}dEL2JC5GKz;kS$byH6RhWz+ukbyoStfJqfMjapoh0_HFRf!r`-& z320vMrPThe+AN+eOY_N|XmvKHsU+HZZ7m||SGEY6<%(I(YgZ>$EjDh|3U%Gwav~vq z%=*VV8zy3*BYuiX^Qc-29IZ1Z^-q?P>DI%yDbsAjd1=uUWYH!-6q^j zZ}(x>GBqp-NGd}Bk1o`DA=WJ|Q{YBM1;wTM-u?T=4C{}Sk6&M?0-FpQowSk>pm^D_ zW+%s#!e*6xLD^GNzMql9(jpCG0!KO2+F%7^Le+gWf9Qt5$p8ybrVBtrG4#x11iC>~ zD!5D);wK&)4(oZPVM3;`X$g+wnXeXSu(XxUAK_x_VzNl)Ta6<4r+>`yZD9QDjAu^e z{}CyI1#TP_#Hc1>05eqv4d+H7tEKVXQ~XkC8Rb2x#E)% zuU6d2xzoxUMuSVWvj=&;ZLQ~VKV)v5anlH{MFF^{gfH*!1<=RxTE6>U$?{)XzRQ9p zh^Ar-)D-;S9zp=>PhAGeyZLI%^Ve1E5Dbp+c;b)E>F6#%iNj|zEKE9uoQJ~*pWQEw z=fykWOSrOUH_uX|Y7k4!S(1hbd6JR{*mft6tm>fw!$B<06zoMy zgrkRbseT#LLzbLJ+@V||E15d^6;eI9vXx8buP|#{kFR6_ZkM?gtZSsWvl{td!>UXRM)m7pIeAsG(}@Cdtqt)Hs{fyzSvPp9#_Z;_X%|s*|vr zLcGZxEcm4SRD;A9(M6?%HUT@2fKgPg`vU|2hH-!7k=FtARq*k)>( zQtp@X@3D@t{^^)dFUJ=W)%D4p(#HV5xSoVmyK`Uq6=*Dx zW30DGKF)k!J0CH19i!tJCUDZLGs&l>=uHak8f#Z4ua>fQ8SIWF!Qx3vru${X0~L{>Ct3=2*U#f>xfbG8?w!l zUyjDx&$vw{D8$1Rg{c(jhuJmPW!_}azY3Qm$?v(M{Ae0M&}GJ4u}=M{FTkJYsI)1s zFRl>VTd^dGkBI!Ob$t7@_v`kWgCh0DKn101gw3)GbFBK{sN68mae@1s7YV?No^{Mj zyi>n-yL%z@SG`&xnWgl$A1T}l2kq&f=EtJ_hYmp#5@rd4BSO0Go4yLEF{D@}#Tb%D zr&fRe-;nSCs(GW;C#l`&6z*5=$pt@Ap>PLhC6s1*`I5!QEXvS zWkaK2yjSt4r^jV=_v!G@6c+*P5_eUCbD#Zz)~jUvb01ngMR1P-qJstXouj|BSQ&|` zF7X6u7CrPI`D18LvG#-Mk|6_!hWXqoBf|7mqX%udRPqZ33IasQ4?o>Hw6s4}ix1c( zRf@0BNUNip&kZ&iqRVF5a1O=9{p|4NGmam>XH2AqxiV>Y*C~yQ2F$ zzkOLJypQR*ZU7t_5Z%Vlht-z`XY$@*xC|FcQoYi$Vm`y9JXWdE--Kmqmm^WM)@Kam z8p=h{&1z3LP+IZgFus3@hKryWFfTC)Zi*0Q*e`lVm+8dy4!&46PwVUPnu4i2J*ev? zF;H#{JD(b);J)X-zL*E}ocA`}TFhYnAG+=`ERJqX8#eA5Jh;2NySoK+NB)Ge~ z6CglvcXt9ogS)$g@D}^oGka!^@B49Heb=g0vVJ7p)atH+I=MTWzkeEe^MB>^d_wk& z9_kld1#TihMlxylwB*8Zepk3P345X?hiVe{hkl%?d$XDYX-@L52kX=6Pr8vj5F=&W zvL7bHP_H-JBp=E0zLAPNBornX7#JMbg14L|eC4%UWDXeEy*xA+9?&Xb;b~)L!Q6a7 z30|553G`@A?+4e&{a1Bi0-=(N`o7gr5AqduE*O}p5_FPN0e+(mB;`L{5^^DD{@Ki2 z04l2p`MvXiZ8h+%I505#v>0bt;%53ysGFjH?T<7Bny~m^l_(7i!9SJp1PsYPRj@NG z&OcQSCR||=YG9CprjzEumkBU%Fft{0;J6?2E*?3+VZt0+;L;ph;1^M~a^y9?xw(kk zzyQPh2$tq70QC{%?agG}sPoxrg$3=cTdljlI*CfnLjVGDp>duj1S>{J!n)Zut1uon z95ZnQp3ypPx~l;LL+k_03APRN`Bi(~S;IwkN^Be|Dp>5>Q9t_D>#utF%^k+7>y{2} z%(4Vi2}U+4$rrh^3g;J6+fwJ5>-NAV-?b(%2E-ycNqpha~!ZIsbO9w2sE~Nj2H5&rWrodMjM(Q z;*fe_fb!82)3&cdf;dwXC~}c#B+e7u8avA6E_Yyy2O8~N1ohTNu(?Y(J;i+aRd6Nw zCrkBX`br1x6kI+S$=qDwUvHbPi_0{#B$H+-BO!(r9x}b$2oKt3v&Ld7%f9%s=>oV z!}|436nsK^uctHWYkyN+O&`Xhao ztoDyFKSz}G>yyC!7^)|U`Fp2f!;?Og-1Ol#mVMHY&)4N6RT8i4r~y6I-V`CMaoR1Y zsIA%D#P}sBp{ZU7;yAa`OKc|lg|?$0ME$j%W0?EO#pv&eFes!{RRKax-)V>wHi3uW zBy1X3+@_PhVVs*DDrsD1=oDj6eyG!5O+QuzMT66NCwnhg;83JtyXltlYtAz1`B$?a zuG2%(9=C0mR^=G(9L0`KERG4`XUMj22AeOE=Xk)Evoc0HP#kV~usCB#&}3)_d`Xy5+>Mth*nMne zbHtt>bJzRWw7YFfcb+xn$JK|`5?7m3;+|IRk^Ew)H;blswytldRlULafgu@ZFA|gL zCe3zFqsBiNkLerOZ+Q96_HqerkVPP+mNNaF)8@2vihtd%;S?r{|EY#>A1iG`&d*;fM zYEm}KQf6N*%Q#W5v5X0eYJN0-&nFIcf40^^Xr8nFL7Tk0wsb6+MI5J)H058gC6A%U zhg@rwLZG;iy_o0T6+y?lKBg05b0B5Vqk3w%qtl)(5sH7$u7aA1@q zy+uJAmcxd-hP3Un(YP8}$>yrxTTW{)SVX!%0eq1)@93AjgTfQY*4y5)F>2#Gi;7S- zSU^HwL+0yHLAE%!MYP}P>^Xh4=p6OEw+Bl191~;-@WAwN16Q+rJ`NM*Q|Bpp^|`J2 zd~S_&aop{$pJ^XZXk^q^;7AA(L$$bb3?EFO3Dw$dD~OeUt<^Cfb|DZ$WPe|fk=X42 zqp8g+Ptz-a4mTPPO3SNcd$9N5gH#B!R@}rjAvVB&D2c&eysCz`L)#g4h4_&WqKD9^ z_M7l$p6UH*$cjSH`4HBsaa&;K)R}wWxOJ$>jf6hKj|#_~gvVhn)|b7bX$L3Zxd|@e zwrL6(mfarh`vNM~@-tnn{WDVV@OEyD8;mgNqE|S735R! zjK~fJ@|v2Yf5^Du!N5Y&45r{&)6jpx8-PmPUT=9moTe2FOW~hB56U(m+t1x`x-6$~ zn*&dX?dO4$J=KT!1DD%27ABoIOX-595NbAj6UVz5lg4>Z#)iDcJ2IsWw>^KT$@)TW zTAw~(CMEDYO3+G7;gxHxO<|*p5++L9-izRO&Ua`0tLUhSIC0cJf42tBlq{CSxuQUw zJ#lcH$lEQBBZcKi%~*VYosn=|MC?B!kU}8xrYcZvSR95Ry1otn!jFY-hwyi^V$&)9 z@?-~xgf5!@A}vk1l`6%G`1MW90Bz{BO%EhvX~F_k)ho{|X7BJV68#fQqzAt+5%pSqdYn4gzP$B7F0RlE5*P|y;I+UN_ zf<$E?UkB_BuGJvEk2q0-xo37fbAAQv-xi)Mt=w_v4+KKV!Aj3$K?{|Cpa*IXWGT{OPD`dA{Nw* ze^}xD;Qao~;;h9cdd&nuhW?j1{8^S;W1hl4c&4UC6$}bFbfKZ#b`kDubVa0~bN(YZ z+T4krM3I3lc-GI_0#k|cC=i5kmb<3-d5?01B&V%`bB=@Uor)1Yrkq3?Qq&lvB3rl+ z%WYT1hf%b61WpUZLIX`+75kvQ_|pkpF5o@JIq7JZryWIoE#M+#t{+1CL*T|1KjM=W z8p2gJ?lT`%lzkM`{9F%;To5A5QCAlX;w`3PQz>}XhvUf75PwBrwxE|Cf2mUm&V&V~FvwujISz2PvN=X-6hJS2`U zTBH|yq;@QK;BUWmBi-~;zETz_CsJ`UQL?oOH)$3e^w5f9IyE{@CqdnGAJda2L;lXJo^%wP5=u( z%!f?zT+L9v_Uzc_2pV7nCIwI(pA(aN-b&smZEh5p!&X`eEc?`PE_*rNbkLtT5nFs7@2mS^{1mA4(FoOl< zdou}6iwRC6*1g*TQ-cJRdviCd>aN_wT7ByV^)-V!)?j7KgyB0BVdUi`&p9%C)EJy* z9s3>efZH@V>J3#eKD66;(}02)ilK>nx|T+a_r*q$3_#?!Tfe`c*sCBamAPFZ=Zh(u z&Kl=Z2OF$xx)}XFl~KqlYFdH&2#dI>{VaPiWO&`)su)nz zJw4VmXc^paYC6od%I+|hQ88MS4K~iCKJQom6|Yo@e!?4pfj{HwTbnj+`ekb=gL>99 z@3@lZDJ4ifi@B<^0*bfd083%P5T=GeD8 z420i_hT_1X^haD%RbFe+(qBlc1l8y!@kdl*hd}glvRIbZNK*FN?op=cWxHx^LbHVk z`G1@yHfn62_`nu*5#{83Q(xLc)#2s!AFIcuL`YJx1<1R2>>c4#cBQEZYr z%svsROzHYJB)`zlRXxp#FD?nxt)6%Cp>Bvpu5j)6(Cc%Ig%E2mv2smVm24#Aoj8zO z&*cb^TrCeKJzIf&QdK&NiZpD6^`FsGF(b6@nfA6*I>))TXR1%hx=xiH6JW$T>hGCw zY8gPC%^%YCgzp5k8a6f_tw6b4_>#*G;;<=mOxqm;75A@~`F<`0MD~_%RDyXM_(-x4 zX)L?y$#G8mhIFdApWt&=b7CXRN9qK}qbb}{Q79VXQFgbVrTKpieSb`3He3&e^DEhQ zb91eCjRUoJ%f>bhzNQp587+IJjY%05Rd0hPSzZ|1L+Axn%guF($akMO1jOm9$~M2P z#DbtaN4i8aOrtQq;bWCTm>h#iS!IWmrhihkL$4QLr8Th!+j+f}Ioeubol}j_#<;p5 z??S_9qZ?FGu`j7^L0X7TG;d>lv2Oq3?0t#}X5&7_JHxml3g;b>ufhZF!x02P25Km(u!&;jTH3;;#| z6Mz}O0$>HO0oVZ?08RiGfE&OA;05pj_yGa{L4XiI7$5==1&9H}0TKX7fD}L)AOnyE z$N}U53IIib5;Vn{M}QN+8Q=nN1-Jp+0UiKPfEU0U-~;dldz!+d0FaekZOaZ0=Gk{sZ9AF->0Qd=51S|o50hR$PfK|X6U>&dl_zl=L+t~S6 zKX2eXh@M!%QRpF2fL$|Fuz_o0L6$ko=Y{dIfipl^rypo^Hv=USG!%ava20x3hz;Bs z8mcJ+Xy=z;17}9Uj8{F>u!vw;$O7I;>Jz}g$bhTyd7_A%;6xxNXLs*21G}U-7R=Z4 z+QWR}g#-u0mUi1gQSF7g6E^I;ooIDA^QxJ}Cb*N@hYbpc#BDQ=g)0|42j%ltSw|wp zIrjXGoHJV+e`6o?veC2D_Jbb`sS-y5O4!YM%B4H^CgXHtEE!?r945_rvMcrHx6Iy2 z0{-KL*A(=OG^8L}N5`l~&yybv4OvZ{%l7wN>zy1%zX*q2&JKnH&~oZEf5l=jFqkqT z{&Au@Dsmo-WQb1ReC0rpCz7Qa1Laumc{=G$=)EH1FpOh3Dob|w!!0!+CtbEp_wkOu z;4mBhSX4Iqp~tpix45^3bwV1I_9?!LmfK`XK(8h0oAfFukutsLQ2YZDy7sfy1KG3` zMN9z;ww9BQ^CWr4S1mz)4W5|9O2UJUi(3s=1&bZCUih52#UP$^DD+0!@~|EoOl%#=vhZiroG-^zt`uj- zqJ`$U#!9}pygk|?_?jkzyz0Z)))gQ8Hr9Qb2o+@?sK3Lb&mDInS0Y`fk558xsGO|p ztwZjL+7$mgWz_d&?Y4wZjx(9tx94~hiLWP1?Ms5~Trj2~wjmCCWlxhk<=qHnxLC_YNcP5sfR1yO8lfSDdiH+1h9Ge?-UE5EVid6^M?du%^Un;^A;1`$OrpZVp zT`cOw?Q! zI6>n%u9H?O2YlZg*;JFrx%8Ox*{VxD&~B7^+Z}WF1q1@L_WSZs>yh9C-H#315O$z= z;XSUekaB-`X(xohw8D=cV#>lJyAFDPA;2BT^7ueX9(F44{>bmLc|GF7)VxVz zhdiGR?JNS^4OizghmAqq3i)PsyZ935jF3QNZkS@NjM~|@eFKuko$v}=;OAxWPM-%R z0pApOP(|=k0e|Rfa8cdk<-qQYZJaU+LyM5>7F!5|Grq@h-;kNKaBFa{7he#3cK?dq zwtknp&4ADVdb`ex7xPu{9)0JR&N`4Ev@a_M5o!DJLmtP+nWDI|>9|}X!5{;Wi8J%# zT+1UY+8_A`mFN-H`=pogVEm^CDYQ)-)3#H-8n^Z{!>TtPt)6`Xzah^@yjA4+d%b60 z_lFIwcAw*HdW7k}Ly*Vog9g;{JH@|F zZL>VMQA@kb%_nlFr+hEEyK38jTiN75k{@>HNC?5Zg@6N&hzSIL=Vu4$#a(LQxPdF&P^o<3eIf?|Hir8jDI$fes2hGVG`Ss|P3(F6u=E9Z&uWBx{kyzg>V zO(oP4-m4{|DYJ-t5P5WgP(mLbWj4tJ^-a`I z0rl>ky-yIof3Z#-AtO(Ft<_fegvm{+OU7qP+Y(jy6z?beQ@llH!d8Kt-#9zm5)!55 zh-iI^ci)SR-&LU9)_-cC@pr}U>!{JsqBq&#`;=u z)!2n3CQhCU8xJaR-}bob*FeD66kA#Miq{la zBas$vw~Oh(K;6;Z>uU&JXQjXdg6!5HOi1VK&y?iT|8 z&jkV{Ga}76Z5A|3bTF`|pgd2L?`lQnvZvJYC!IfAO!k57hO<~(Jo@o8Ufo9Yk z(eYS+6aLiLop`IB`9Bzx%vp4>V>?WL<81R79n`*v?-WtJ2qO+CFScU3((?WxtYxTE zOAjLP(#(KO8;v0>aLk$2S;XMi1r<`9oA4{ohR7u5e{Sf`+@G=jcyc$a)XW6diyWjG z?O)*)IL@`mII-eBDv{d?5?DS#-OsK}#=R$>uJ?VBTJ>&lA|S{~cm9G{|IIPS0-aKO(Iy((=o8dwG*C5y%Un8Oz&n z6Oknh_Hf06tF3;ynmuiRPy8=gxNpPl;`ySESf5qXjSWY>cMP`VkU2~C&r6M(Ei$|s z3tmB@2d@1SY5_`HrOlt>(LY_7q!Q|NOjhs-AE;}i8*RS71#m6iHk;wr(iiQ}_Bxwl z^lL=xG|VS;TT0hfenO+P?gVkO22`3}c-y{SRf^IidvFltWJkxfdFZET+&NneYn4T` zXNHX&d7P-}noeQx%gs3-)}ZY>6yILMBt$K}8aE#2#46g&`89HL(|yMN3krQBM)B4j zXyUs)@P~Y3=is6i_MB+IHv4R!K9P=B8}KIq`5+K?i`Zt6mU9xJv%^@xjb- z9HS4BHS{f|k_1K;2A{j4EtpU!0uKwu$7JqQt4BZg9OO$S{(?e z!v^%eUgGM6B&z#Cgaj4Nyj*Z)=(&J|8QO~(-@|=qgfLgyc9}HqGnfSFX1=UqHP zXl_v*MkDCmgF z+`nGGppw$p6jrZ~lo85e2c9M@%^nYR#oW{x%jTq>xj(x^cSQYk@T8}|mdE4Gw_vy) zM=d=X9P`+&=x(F@6H_cfj^TW4)!t4NFp?tpA>*_F1X)YWsE+yspDP~G^>|z zcam-LI=_}1qh2e)D@#jbEnI3BD2OlBit&8GZtNnL=5yRG z)E2I`Ipl8lLf@ml4DIJT)`=RZKlYQq2=(Dq9~Oee}sPMIMwtuy68EFKC10yt%%6-P0Q-+ zpM61nbY?L6K2gn{wVa`^KCFwknE2iK@K-`uvobDr)08)Uf_UlLC%ngy2Oc;XQZiDP za*)@A<7!4HFZxef>KcUfRihF1gx2d|;#b4bJoclH>i%-r`~kz3Oq?8O#QEs)A3yTc z<+ug0$p;@a8!8xE+FZ^Us;2Am3AAXVz)dg+dZEpZq?hzmL0{O~TIWl9balv3mqrg@wdt z@b&7O-x?-o@NIom1-|wwr)`w@$yvR##gIRu z(X=RK`Pnvel83V4&h}D1C}|b#j_Wt=rW|zs()g6c6Gr;3%JPQ0lI^fCLOcv;%4HKh zT942E;CpqS)_qV173uo$B$=2I+B0;B+bJcdvwGZSc36*MH97Xxa`fif+}0@P`ggYm z9*O5a*~^2In8_7V89NVbkDfpKrBl{4R?&;*vG_fAOT~JYz_X(^2j*_#Fsx)%Y^_m$ zJbq^{jM*(+K?G-V5y@ptFX`h3@%pKQC6%EO;d5g_Y&;>M^Q-TddS3r&mPbuXF9`nO zlu-~oiDZxcr5ec|>&pvXORa}Yf7`Q!ilxo>jDAb>wTZ1#lsGaqij3QZxvg)`rbk~_ zb*vZWOxVK^-MHOaXgHV=V|4klv8EV2vi(oSkdIE-y9VP;hB3_O*LII3fqCLu(``bl zt_&ly?b0%u;1_072~!)@1sz;p`+dg&OYFhLwU}R-l68%q-%(AUw1xT4RoJ zrLNi6VJK1US}vgZoh-EsyzrN({=Gh=Y4(nr2&U_v!jFr6*a!^Znqa^Uq?tx}wt=aB ziVnaGiDSo%^Mm+CpdU$o@KyKw$&T3-{v71Q9I?KEFN7pAG?J1&D9)3Ja{=}*T3$o! zQ3V2bqZOt5kG5hc%Sx#0`=x>~v5C1UNHwQ{*prNk50><+gZ^@GYYVw*;=Wu`0gbQ$ zDC^cUleh*uuzn4C)Tsd|F0LuQx46MNbOOpnXx+vXArqfy7n!@`+eT{rVsfvTwuA2RM28HEM(1ln*i+LRGjMuxe1(b>OEnp)*L_*;<=bj*@yagA z1Opz@v6lioKR{+;yQzHbb>FC8`nv7|JN3U+>v!wn$fQcYVSb$`iP7MVQ-&HWx;(-* zc5>QU8IN=M7+S2D;sV@WzX4DFaK-9{oEZ2~H6>QP^oamBl@S{A2mb0|pQe9=v1OiZ`r-gQxJQr2z0 zd9}e>$F0rdoWas++Io$N>gpo(r`TPcc|a?F%BBzg#j@n7g|@{PQ)*WmEvMEvXXw=n za{WWDmvCxY(TNUb^a0M5{P5LSvYIAx=fKp+J`NUN>7< zOC-1*5nR~5mf@%_kO=O>lh88=Zbz38ZOB0y_hEkzVdwnO&1JEfG1|_9!z9}yjO9EA zZRmY`xDPNPF4GLrpCS8r(1rvHSZaQPzaQe9@!4lKk_c_+Y$N>(%lRNO-akhGIt8+z z{P&r>AN2n;y&qq{4mdHBf8s2X<(%?QFAr>pixIU5a7Myogdc`@AJA^UusD8J4SJ9B zWEPaarodtUH3%z=p+>&btztj~qGq=WQoqEFx~vT3&AlU)c^h6EefY9PmWfTDn{W*x$UfM(~s8W>z6 zk;=aY$M!xrnjH~5*s+$kmG-<;s2~=Uo(CaG_sS$b`lAB%nO3-Nkq}W)x`l$c-B_49u)~r-G zaBU9_C=2cAf+N9qffY4Ee<5}~YiH3RTYnyH-aA4Jm-Mzuh~zsEAAliHybnQEzpsmQd#;RPd#(gz zuREZ5M2@lZg@*(s+zxdhrQ4j;8BX6F%R+?}jsPO8=jVX|+}b%OpD9E$A9S?XQ{0Ov zuA8$BK{lz&6CaQGwsuP<_EbC%c8ww;w@`ive!Me<{^yXekZ~tvnU*OBJb3B81ZN6@ z|DP97A0Zt+JWg6nNYr?0LAX~@=G$pm~q^1~td$Jo%K zE$fz**rNyU7S+d=sUEIbXAb?w$bv0vo{u$Mw}o4twW`gWYY!ezGuMl+yOyunVS_h% zPX4bvAcG03`Q?{sLFMtdlj@Dl6HaQa&U#!-qtbEq6YBq5q!D) z3y5L^r-M}aEZS;+RW9YZN5=yj zmUANaZ}kZCJ}o0^p3O;?geM!DiTsT9%?y>XH)BEAbJzE!3g@0vm2}+>t0$m4U#rgc zB&@o1uk75{ZR>4mD|^*;v8jY0P?6R`4r~co!ZgV~3S@>6D1$(@Iqy+AK@h z=Y_{xrKYrtG_WdA;!vr*jX9u^Ms!&-n&`boer!J+bi+Qo8bZ1>g%YdvzuQJ7_`T1Z|*4cK5ybv$Qv%Pa44ZBJt{n~G1TX^88ASZptFOBT-1Axh!u>^ z?}w)>Z}xi{Q(EuG>m}h+f4ah`@7mw@NOK=K)^A_#mh<2GIcrE2E$t92;bux)Q^ocA z&z$f-1_r{3_Y*4zlk_Aq4DU$drUmEP0TXsF(R=;JEIH&=2xD93DbJ%H8YtssBQC!? zs(RcKjDV}jF*yZ4x>TSY1a7yxAA{e{t>4a? z?vN8=Ghr-=bZ`@tLJ9N3;Z+7ppXiKlti#~w@fNcb)gUYAV;w=!$E#fx;%koR4}?&Au83_WgW^q6#XuaJvq4^dFH$DFN(a2uc>R_kfK(p&MgXXV9`6!4rx zNrK17bd<$%vTKf|(3?hlhj?Zp`V~=L;M6`;MvtDB>&M*bYaVRIb-K(@8H4Vz{p4;7 zU41oTKS_eyXuMdA7jIkprcRGy8Hv8sFq(+_*f&KM&{yYyQt~d7H#NCop;2RvQd)uM zqWHvyi16K!=!MEgW{2?kum!)I5_(b;h}QJe@rkR61?#gBk-);Zw8@d1L$Q4x=NfU& zx5|Z$i5B6bG~HkO^q7KRB$k88y3<3sFv{nL;vNJ$N#EFCdwj{u5?=YmjN((`4DJt* zs*s+UApBh>C^C7byj9M`!nonXM|MMv>r-`c$tjd+Wo`F~hEHZWp=KxTTcN+TI2VsZ zih>#WkmX!{yX1%MGGaq6h03q;A@?$U867B$lwho>!OChR%ArDpi3am!lQi?5t@e0> zI8>PL{`b1$zg3=ZPw3g!=fb|%&qu|=d@Ji$AS#R{siGD1XnX@ggif-+C6e&XkiqY( zI5@ghLRCG!>2h{vwaO(m?=y9lIFRUH?cQhVD9(fkOL0Cuv|OzHXzMcbkiG;R_bg!y zx6TEced8QM*zdn8um5vk;Iz_e>mj(A{ZeG;20*MS# zei3}U{{uO^ERDwVD0m#Rb$#f}Ak@Jk_`Pjs#~-oF$ISU|cMCV{k-*aJl(Z?sKn)3!M`->G%S3*VdRRs=4q zH}a<7xL=Nq_T7FwESML6gQrV*AKUOiUT4f}lIQ+@9J@M+pPJfkob&d%UMF5>%%UzK z`cqXr3h8jC9sUxPa?T1Mte^&EW5HYF|5=_hmJCa3^qz3Z$0$10H&-Lcxz?E#4-Lki zt&QkXQV@6KYWi^#Qk~{Z)VpE#ZT_o(wTtnsYp)UYRb>{Ww?JVIm1^GjvA2EF=0n^d zy~0P1$^yO5A%?U(XnXuYdN2}J zTYT{8l8i%lN}dGk6JsrQiaFNCIX5@o)T*FcSMRDnc{PIN1#&Gy+CWFfaa_G$iNMcx z*=Nin^f28|LFY6{JbEl zmuEXb^F+!TIZ#fFhZ3PmA(enDX^I)4YD6w|b}t)E2CSj^P$cs|i(?Ra(P3B#aDe|l zlK-*OLfQRcoZ`RF>z~7b{^zL{E58hZf1T%lcJuEue>S?MeYOz# zP!w?F{67x;9E}UTTJ&~_+`$o#DXE4jt4bl602B+|bdq;6kz}-y#Wab9U8<3V#3^JR zkqaPNwKAEU_o_lTUrCUr9?PqmRT+N5Pd`N74(UMUn^s#B8MFVb#eS8c`ID>}7b}nVlqr9nI&$t{0Kp8>cqxPCEI+C@I=v@`{@B>|vC$!S z5EVBJ4bQC}TXi=Srm4eYzhdm zuDK&n|MTG~>$AM(H0YZt9U2(eiyt@`G4RDDDSHz)Yi1Q4b~Y&%Z|}UBS~hSDke$;i z7v^i1QGw6Pj7d~p#1eESx3s6OnWw{mY$`H1f}|xuwXbO0z;Z1yv#cx?Eq7eo*ZFni z80HJ!VkY838M)y<4tt-67$Y#akpik4k0&!lA*l6RdasvOmXEGBPBIgUJ->hNWFhHZ z4Ek>QXYpkydvHs5Ko&VuPzFUS0`y{cMx|KPFST=iUK6lX5q4ES>&T@S69vqAt)czi zaD${7CFKmhMh(8qIZL9bC+xd&Is8S7NWT5GJM6cne+q+br&AXzQqs+o&yP;eP75vy z9IH;s`=Ei&i>{Zcktu^qe6p3iXst!mA>x6%XdmyKjb&C={OqZQ+?A`uVvuayiex0^ z7zNaN*6U9jVs5RfhuTT0Bc=?KL&}A;C#@g5`?h)Yiw10}=I40|_s_wt`E-<0sUE5E zk{9{Q4uAb-1OxoM7SyiN#a5d+B@q70rOlY9AGVuiu*-A zuV4Nuza+hI9xso!G;?(c%`koAFZdl!vzXt?BROU%spI56m)Buiv!eL-xAG*`>$sXQ zZc!4gu_FBHK{_Wt|EnFBpJqcJ4`o%S?9K4UyV$Zt;#yq}VJqZ={yGpVL7bBEuy})L zEw#bhuZEB2Y5+uv6r129cLgGdHF#{GP`W3gH2T=mGZ<4dxNDJ*;a-UJT_A{}u?-o8&_^}>Eo|AG%p zV(}}R@zttwa8vqW>bD1G#d)oKN-lrejm1Z8H?Z5Ln(4L>JGfoqeYHi2$a%hzq;pSk)Wa0>p%SMdE*D5BQh2_+}%<-SCf*+x)MU8>sirW{L1ql*lD z=5gZip{itTU&R5f6|*mS30~f~yfyBy2~vtxC_;@s-vQ%@05bXJw=%3_)zngxcnnEk z)(UZ+n}UQjr$i_2TN!kt{hHpY8_ucc*=&Y0BjZv{U4`#HhkOwOVGFDO;w*lJR(El( zd_%$GoxrntwL571!BoNeupi5%exd6c4yy9$7RjANDgQ>Z=Hi)hbbBzaCle z)qEkF4P3`>OI=}2=8l#6psU*V*S#ag?9UXJf4%xHwt=}iYN@S6C$3(1YI6m6G%K8< z{-RbsO(Nf*ZZ(j#sa0JNs&Mpa04e6-px#NJ+}wukFdv&sMu%GPn7BJFbP+B^f6Oxs zAYO_aPFev)o!1Lp)UVYP|5&22P1C%O89h+0&u^g3dX6ITM1o_|%>_}vltqC`Rws@Z+$>-e{&`5j3MN%QNw_4fWNp?UY+S^$BG_i$d z0BsT2k7&&RpQ3aFpPD2E$P1!JJJ|>rNav5ccI}44_9H|QNc4v@7sKNd)S`0IiQ6-J z=!@KSguid@m8?_cx|18h(5r_^bkO`p!Xl=5;h2!_c+~6)~);$Fazf_*~fTI8+SNS=@js51Z`g8 zP0i=mQe#?e+?LsfM${pb?vi4picY%gpmTVap^(tuocMM&PrdmXh71plO~Gzh+#a%p z#2G(shxJ(r@{bnh`8-+*QA>O7H&syRid$~)dTF%d!)JuS?ZB3cQm11tw3GcN`{aAJN}o z_P1y1>@KhzrPcLQ{@PzLqKGw3g1tj!*}8u7hxB9h`d_1ZLarGFfwwY9B9_*h1D;G^ zd#Nzf7q3vpjy9KdXRPTuz*Lnk3J7dJHJ3kH$9zrA*oibV6Yt|;L-u8rC=P2YOuXJP zYfL)FT2+6O5#OHKGHyYjCrpr506i?WPy z51$-QyyoqxXj-d{LUR}LHl&N21KO0Cbs?TTo>ZHEeU?Q@Ia5Ax_ING=(>crz5i;(Z zGim?gfYnupbJ+)xshqAE5+Hl1g~n8lQ$wO47=(x(#L^h5O>w~9^R=WuNv}x*$I>I* z{vdnx=T8P&^%%A?X6eJ7N{}=v?bnJ$a#AZIVQ0)zvHTmbNoYps)Lc+DpZv%qk^{Yb z9Ix3YS(D0Yw7Czk->WuL5q@J`8bBkxpdN>Af2}|}96LzAY%n*mrJe${pK3?o^Np;e z;`99)?Nx$q$qRnL+7v}0vPPb(cN78}V?=huac)OA$8?qslV-&Pew{qZKsbd6E6=<( zC2p3A(u~-`=2iBkO6=xlCcUKJXKPLEh4;JTT6iZKhCC9U=bw5fdF}~Am13c&|3}z6 z09W=sYs0Z^XJXr#*tTsu6Jy7=ZQGb&Voorz?TIzXL~nk7+`6~wtNN-`Qx z?n;=t9$Y5BZ45j|{9NqzO5ck`A>M%zW^FO=jQLpOHX{6^;{EjxPhVC3-e`OF{m%l9 zt~$=q0v#7E=r$pz+VNram(YJ1u+)zSW4U0D8}37Hng#y`~QNtAPczk>}apnwyM5 zhX*q60bYw^nt=s(X|of3HZU%AuA!^{9tQCMWwR^+GOT zD4tzSL7vVGun`2v?u)q7XkwvGb=Vmh-!il#uKN!Au`TgqcZx&B@K%q+S*DaQA)_#; z_e>;EvoNTZuISW{ZI1l zkk&_AT(C}Fvr#{Y4rd0%aiyWrz~)QhL?0dL!^2RrH4{K&>ML*#(dMwq z%7&J2cA16P<-;US0N_-oWQ$DK&7r>!EWEIPM2Ka;?WWY+98XEoxZ!CBMk@41N0``%c+-*%`P>oyZseJ`5XE+PYwohXWHOx!YX+zO^;b zntqi`A61|*(y?w$bd3uC?V|ccS?C82*5^SdQSHqJgaC#?A3zAl#BKd)qe2j5S(6EW zEo!|#Gr_u(C$LETk{ZXS@4eDR@HEHJ=C{uczw-Nf$PS|*1=6Op&BZ`h%0nL2sJf~b*fnuKg6LOC8~}3JnqL7Ux$7qRi9wMy<^A zSRzFngO+LvtVe&Mt{-R7e|ub6Vi&}mXw>k44iTaz6g^#;mq3siRpJesYg9}ZFZ_1C z%lTJOYIIFLC9d!rLaFILIyf?;y?CcuU6FGvDRKNdSa(GnOw@$yJp#g~E78AM|F7mh zU45$kyD{+Z)=InMmkHz`VAo+~ZBBv{Z_V++SoZH%ehWXDd06&hoMg{zT zmf_PveY@~<6V(Ioq??Eini9}QpJKmBA-po~1PXk3CFM4Wb)T1k5Xq#z-I^`I?cblomm zIg48g^3!HnAgTK&f*h9DEXy|pLebIxkSe%;_{Pfh*~TW$Z#6ZDgufTV<6Gaz7vrYBlkQNsW9WXByXGCF7a4gOnA<$v^m zf5aUBF4u5HYqxj_j~;PRoviGY{jcHw?__2ht3>|Q-PymVLT4*F>itk?Y6@9odXsvh zrD5HKMi^Z!HY)N*;@^vCWWI9^jpKMg_=3V47I#>S^Dl8&Gxaxso?n8l%(NUjsQj3L z8!9f)bO+~?)I!CzzTojl#64)RL{l;yth^qD5a@2CB$^)Jd`ka6h=%&VYUDR1;!;}^ zP0j5OwCV+1>}rHu=zEh0CTZn0l1!ab5429Ur2gF;OTwR#DN19e?|s&!<#UG$hpkw2 z>^ee=+(_jrRpV?^S`kk2~+zr>&g$Z6w3d&+x$?oxXQln+~qu`?h&Jkh9%c z{4c*lFaECxX8+i2^4a@XL3dz(I?1WK)2byTSqNlK!=(B6i3K~gya{V zu!7?M`1@Ixj}AWjX|Kuo6#PI3pZjDDURgo=(7_izSrQbsf20$i>^>PAXg50e(kENQ z#RjU2j->Y)f{a_-)y(hHMax<=A6}O2(>Y7`AGa+35!?^a^Jq=0wJ!yXyjo&}`sP?y zOmgjrvyEKqO_RLuo{C8Z9rGeLoR7nl{Nv9Gx4E*-!^u=^qY~KcFbp&HvNDLW5#Pfs zbuK#?dVuBXwi2rNdc!XNi=pM%`o9@Pvl&W~9}Ub9l+J_U%?%9lMPmT>fTCgAv^xTk7LL>24;CRa~s z`95g$?KIV&G&;%*Z#X@(c`rp=lSDbD%Rg< z$nto2fro5UdXQ*ARzl#>VHL7W^gwV?|H7Z1FT9DzL&Hx2YZxtI-Knj|*lG32m69zC zm0If6aCNk_Y;`JLSIz!+B&?xC^K4~EZe+b^9F)IUrNtL zYkC%EfV4ev+YkR8CM`RY1oP8;T~EVu*AUU~r#ON3L{9xYWq|q{2t6NS5b!+=yYJRI zAZEI%{Hc!oy9zN(L%q=USbiG?0+)gdxT`KNOm|z+Seg2-lmoG0*7z-XtER`eX#$FZ z@4*C~Q-)!o!cGAKEve1JMv%Tg&nybK zezntKB(JH-GmKnM0|)|~y^LQ;7bP6ojAWaK_Ct>>-WOzc5W-Cs7d}cHudzaQkunav zUmzX4RMjuN_OM(?wsJGNl!GH@1Po25kgd2g^jt;z0kT`7zd{V0=LdjF%+q5|aU(Q@ z&ROH~BD#e9eB1#Px7|qWtzgg*h*Oe@B^X{Rqv4P>i*vQv`Q-#;?pN3h6H%X^BFJ2i zUO<4aZu|<~0Qe+FdBbCx!;EbRG&^esG(B_x+;8~Pb{aQfRFB$Z{6$)Cct%XEGUgKE zS)24Ydh9m)gs~!<)JVXx7&ThjzEXCk+!WE>7UfiUs3-M#v-1Mi(5skqa;JlavyJ=9 zS(dj^(bfWoR=I=jFHG!r94%CeGX_4NFc$x%i(Ma>8Qv#<*N$8B_zO7c^F4ijOQh2Y}tDf ztQ$-K9OW9n7RaXF$@f_Q0R4{8=iv(-jzIaSX?FXSQ$fGSBe_bqd;#F`=x?h!$HW^} z-L@#$z0%joA4+nFa&%$*A&V}OOP+ADQ2YZe4{JJ+oKOxcFL|zxA#LAQu+0r9z7_gU z_$e6W}0FZ|GZ=Inf_J2>;wbOmKHtD=}PWg8Lt5|br~M);rQ}ruWLH{a(;#`nK9AJ zUnNKG@9Qa;Du-%1oOA~q)nI5Z#Jupad5=0`0I7Dtt&8um0G znr1r{@*U#&VN}qmmX@0zoJh+be5;py{Ae*794={rx(oXc{UWCMvU_j-*P2#4d<{

M!7(!blI6s7%KTtD0Z>U1O{)qNvQj<|ucB_@mHAY==4W!L7) z2dZXkM@A0hBb7U9y*Yo5bfkE>2Mq^C>ksmD9cb4|Hv~qSCu~<~em+KyGq28)9l>!4o)p6O>o*x@7H zk7V&T_ZL$2-w&rhT;X5ec~*^Y;uM`@0>ZC8_5#9N2f>I!h%t|2+@Ib9e_d8II*3}Q z-^YqUqfdmfppEeFER_ulW_$B#BG`~VLO3P!L0Jr=t>TyoM@XB0wJgt~G|$)Y&jxg^ zImW+|`ER9l2tBIjejau^Vd2aR#M?A>M@~F!hcg0%cy<0*-vc}zL`7Rp#5|UC8=@TF zuRhk9EmX{f$)8|XA)1?T&H1q>yd$Z9`xMw6h^$hhnwui0OzBZ)Qxw@<1~#R_n`hdt z(ng^r^K}oE@EMq>{3u3)&dli!(Nfnd4!fKpSqYx8RxBbTym7^SU=1D9-K;K zR8u#b*l@`)YG5g3oR7c7cJ-P|C%W@`@~p&ij;D4jpcv{$7t(F3%=9Z@mf>m}w92#D z<*Ivu!OV>Way=A2Kc260`q1L5R#kAhXOpAZTEyd|r*VI6BVX)Im^x$#0wyt)g^A5^ z+XAc~T;!|Mjn~rjZ84Z@mFuiyS>@K#Zs0SP=$BiL66I|%nQPVStZP-|Omp#FP5gnu z61C4S0kEEPdG~@(S^5{Ba`b^q?lu`MSw%W>{6>1*CcFEHWfg78be?dX&j9_fH6A|Q z>Pvn-0zCE_iJ)s_ygfgF?QfkjJlS zAfQp;An2b4Dpd_JCMPd8RtsikR^!hQv99iB2m1D|)nXX$HEi$D=Tw9j@?WfL6>5?b zhFIIA5pFaDdDsgX$O2)8IN!Zzzye!(8Z5Pu+S}a;90MTpEdQK)tz&x&^4IAf5`Tpu z+>>Av2#4F2MDe%M~m&h`S`k*gd`r;(l7rxCywX)I4Qql61b{82XablLneKE z?0aUeG~;`pUfDd$u-~t7-aWq&i)Rz-)P{$Ldm!g}_&Y7nt=YFeyeyXDZhM`3o}bEo z?PYlFzoS}OL*iPRQ-IU^D@zxZUu&2d=4IDQ-0Op&DH#BI37ou{`p^k-=i7T|)Ta_1 z9LE}an*%t8cRPs3&7b!JI^Le1j-B{^x2{w^t)-8S!hKbG)ipPT{B`5(%i97ziZq|? zU33&Z$!5qZ>FG)zjOkN$1(UKYTm~B?nWMS_EEE!kUx}ni6>maS^*_dx4xBtyCI! znA@d*(dk}~NnDn`lzlN1R7$4Ao%zb7t?_3u=2T$Llv@XR=eO+$Wpz}0;%03pmF`esb|VOEPG5 z(9_jkw-sC|OvszW6S^)jbdXfd?v zILny9rQI)e^=&&)u8KAf-m}hYy_J}P+%cZG*G}5J?D*=j{3{jM%`>JElLYSl*MAz4@DJ~jp6)W(#VfL{3=>_P=`4jQb5>Td zAtX;_8k?5@KXv;b2<26E^U*+=Stu)%0gZoIx6=f~@EsV0JFaPY- zbGyRGfv6=YQ~H}aK?3WN>XB@PWfnySgWJOcdeeM=(41uKW;q4E@=RJluxv<|>wc_QlV8h!{u${fq^ z23XlA?zWERZdu_AYjQv?s>U>1LYS(ZeYNE$(ife2YySQnwYfJGs=jNcxOs&x(O#TB z@LPytK(5R$(v$MW{XC9dr3y+J(~h>tT3pVzIYJc3P&|PjqO$jLRcbuNHb?v+#QEa- zVQ4-$?e2NiMJG%$JJu!e(=Gu$2);M`Z;in1+L%MJ^wX`yQF*(wyP z?=9aD{`z1XU5S4I6r-OILZ9RyZg3g)u9PBvpbN`!5fG3Gh?59l3jb`Sbcs+@icl0o znHSGx*<*xr)`Va&c8DRlEI{!PL-DXe-TxVpfLX{%N?%>abHIx38}o2#9tFq;s<(9pAzg1k_%4f8&Y2Mt(28OK0~1*q5r=9b}NJaMEVSbMPNjJ(Qnl8!=&Xe zEOMQHP}l@~>r6?4d#6;FRf)Y<39FyX{yojT)k?Gg1t0lRYS#9mQvTf6jkc?Tb%Wm% zT>h|XvGD4EsOaINA5R4>c2!iE%=({oy%Kx&x%jm|qY{O}Q!;9e6_vWjp4qh>`uvG- z(%Dg*P$L)@Rur6%4H_sx{TKF0X&N9u{7EBn+g{wn3p^k{lT*D{IKP-e+WIO%?r}aJ zBuBhI#6_rmgD4GJlZiH3hG=xfj3jVZhv=e>$kj*$TEq+5KU;~3tMu-{|2VMi@y`>* zkRxzkQ(J3{K#S7KIw>Apk%dlfqa}( zP&RQh+Bx_3mr}dIlumns{s+gl+@^^V0ZCE_xYjg3-ii=2u+2iP<;(n_Z}2mh|WRu2;7ljj3*T^ zjH)r|?4~^ccdD~!z)ANqxD{U2I`WUxWUZ6?wxN4~?yyv)D*^^F%Wl1JkJ`6o#7%nk zlvB5uTJ~ID`Q#@Ng+>;T2 z@!Ra2E*+iyxT{frkzr8(5jz&Hx{j7TD0A8CCEL-#3Us3SD`_u%kov~)-vtx)2|ww# zVG#vAXixrlS2|~(7l|Z0BMQlP(^gTpk=OYS6Nm^8PuHmN3Ug;FxmNAS2(Yf+@}Qy9oGI=IP#vne`4cntEDfS>_t0%* z(M34a#YI{7p1zai)PMDU4XD>;Q6%q$>$0c@3;dhE|9qlp#y;~(soXAYJMya*pvLfi z#wy^oL7rXd@@#~+Dov2Yd}Qn35dXrK5W_5?ml-*a;?-I(xa*+EOThS8$TAx{G5ghQ zmWgGSiK3wWuu$_dc>h*_yKWX*`%zX6|HnIQKpD@GdzX1$NBew>p8?ZY%}!=FbBYbJ zK(tm&sIzKyTw}vg-)`9wzNv955IFe8k{V`E$Ijfl;ab}G&0f~C8Pu4VaS^q#(Lu&O z1q9$4if>T@B6nK?Nv)_S-a?1H#{2RhG2%={I09lg+c3BMir!hd# zU?yn8Kzc?-cE=kFgAWIyZfVp2V6L5UQ+R16T?sob^M}>-A6aX4l9n`pXe~3^Ad<(_U%`~X_+oAo~Aeso{qQ`2TVv#)a(;2So2SaLehk2 zIbL?@XPB*^K=;vX3$&tu$`GgG_cOj(i9j z_F_mDXFN+5ObN@-SsrILOO{hIZjh5L3MS1(p>u1vr^J2(94#g10jHL|n2*pB*i9py zuyaNKGTo$I4CRIqr@S2u7}bnp3}wcB*cYoc`cW%jK+y#TtnBVXYo4s6ILm3F;6R3r zs2G-X_r^ZwB4VD%E;_v5aX+f9F-$;5+5Go+I}_P# zCXOVn*C$vzKa4InTKc)&ufSRI>8*M%)1-b#{7P3_)liBqAC%{R~n9s{S-jCcEcBgpXvO7{_RV>u9G zMC>~wUQ0vBJo)3=Rj0UNx#RTD{Lk2TKW~Pro>CAlzd4PEevSQ5c5qLu?dWZ73bq-L zPbbbZ>|rWr4lkJ&40nmunv&?)UZ4P8;Hh1JhCx|A3e>wPU74}@NSM9leJ=G)5;}!# z?90T5=8H!BIIeZ0{qQ!h$kztX;F`BP&#z{=ExT847YU&o`B8rBEo0SE^`>cg!W0zX zr04JzMPyD34#QT=aUWG(m^D}n$u7V9#smd)*OB$VsP(SV2wMDU+3rzQ>^=I!boqw{ zKyk3Z&2&gM>zEEB&r~QjQ?MSlicLD5OH#(CDE^gX%_S420qVO=p3ZA>gvMwY>+<;; zx6LsT+V&@(^Aqp5Y+gIFcgLNr7ar%`-y|3W?PnYpF6Z4}Eoud5QYGyD5jT5HY`nfd znQGubU&2Q~2939A%CxLUj0D#ML&m^&D^5J}*S+m;zwGG89(YPB*lmzIzOu+DTQ3kf z^-$5!#;$=6fS#Qet>Ps7hMrKeW(O<5C&^~SL;RSAiDbun`4w9#j~xr;UmhZc$8np& z*{h7MXuXTiah>wmqkN}evzbjUV!e*falxVWSXG$EgC83v-e_P@B-4QHVCMs!eB0(w>y{QM#`AA=6ok3fR#I8#|KA?gQWbH6$=h4369P?H4+rE z9|)T(u`fJ;+8-icEKIVSVKh+oYb+tVFxh)b#B7!Q3|WaTP@)Ia zhH$omNvIYq>j5HSoc#=Xp#TJ+g^Fw5wg@#g_134i+OX6A5UZKxQg(hK{(`y?F$@23>^c2J;MH+ZoY zM^t{Y+$?HXiJ7q32IT>kzE@OSSqajmNC-zlUfDQ>51dzCKzvyF7U3l283R*loULH~ zSXGUjVkSVLR8hGwg)bPd#Tyk|j-En3fH5P>B#6fP_1mun40L(v{c`y7vJ58~JVAXv zj^QEIxhEP1XY{a)IV3LQFdCrN30)#%0g5Xie-4bxIKZ~y2WD|qAP*B<_1vV0GiHHW zfGFB`wXE6-4gC|WaE;g)6~v>Ar!$tVG_J}deU8R2uPxI?aghyYJ4(TJ*e-oTS{zPa zHh%arkBVu#IX%VqxLzpZ!3|s+TEEuKIT*8O%ZrgX=!LeBpHT(RiK77!1H+R)JmBCv z>RMbGuTCN23^(+RGRt*&XL4krk27jRR4rGH`n)XYcGYw^ah&Q_WpG;45Fv6L+R!9A z&A~w}b817BomYkWq%G-;G4wf6oVHeFHcG7U8K&Y$JH}^AWeep|HpovdAQ^G08i7Vwg3OrZHG6&ZzD9To+M$8kPkk6UO;KRY*NM0*!eA0d zhR~o|q5@4?)FaAZu#y&?Av9vGqyp&BU<1@C@W6H^#K4ReBf~&CL=r)?Qj17H z*y*~YCT4TaNhttPwx;M1gsD-+ITlX*uOIuHp9(ntaXu><@e!mp80_3 zY}pZO)$e$8jDn6)Pk8Eg!&<%Gi@qH6hI%Z9ry1cS+v32YFKQZ7RR*%J7cAWfxS_rc z=Dv1E$BFE4wn?RDF%#zYNU@{01_?0p@MsDuD=S|XSJXoqLP5z%^3+T`pn{$~J23hq z0VOS`BgCo;#`rl>9_BF`C9S9*7mJZKEAAKVmh;%EQ^&S#hxBrk zhf}12c{pI)q}!nXz6_-Ra_5d#HH1fIY92#ZJrsp6a&&>97RezpGJ(UO5sAsg{B!-Z z9L*LHht8B$gG6nkh0b~IpE?^q;| z0$=NE;u+4nzKC=mwYrN#Boo%*{==d}hY7m)eE2d#X>6T%gRnCE%DEM=alW~)d-<-f zCIB49v%ysiy6j#x8<%Mb6&`zj_4v5|UH(eV>^o#&8##x{AmJDZh85PRWfoaTk5Jw? zh9<0yvt*iB3T1BWnaH0;i4jVo@Tk;~?;EDQD%$UVjeBN}4EfS&*^$YQ0Z;5RmAK~c zp;|x7c}rDsIR9(UBLL)GO9kQf)VQ6mUQ0hK zaamA?D$RE!9KZXO$Dx7>=ios(oR_a-A7Ue*=>L%Nxo~&Zjeo_}spU_*qsOz8CKsXnw^6=Ru$Ab$T&v^2KbA& zqb4?+4pPn<)C(4Yh6WW=mY^hiCPG*^x@czBnmEX1`{ChG zyer6dS~|MmG?=fhfx;^{^0mDe&yA)fST95Ucl3s~0v#(?4R2_?5o_Znu0<%Y%ZahI z78`I-4`;Iri`Kw^E`g@D&NZP1r%3kI4;#?_KXL3^EVkgFn$-<$b3j&GJWXyqXT)|p zKOG{m=i^hGW$Etzncnte4WDnp-z%wT?#q&fyo3-qsX2K2nH-w=Sq5@50eJ}~a1z`2*~lIx!*^#Az6O8> zLr3;?3*-9FC;jL}7X$y0ASU)+N#u-~0da|W7T@?h zm24vhF0~F(pLySu2{ZLVk&+H;*rh$;P$~RADcpHvxWqk5JS|yJOw!oEL{>@+4ANnF z!Un8I8ZkUjGIKdpYO$zn1S5c9UNxe{f~ayh4!b|0_cIvV*XY$h$MKx}Ohj+%kj0{} z;)HYq0Ix>MkKfx@v+pZE1lBBy-{{hD;avGjnXrC8pIJYWW!G`eyz*w(VKtAF>tc9p zjcpg!+(D6u8LO%t$MUi>ol(*FQ#GX1?8_j(}H zjCtkF2O8roKaNWK#qycB`^B=27`6J@TY@76!`&3vog186lO3c5={eU9-fvd)z7TDFGyhmywZFFcvy(23 z)pGj0zPTDx&E+Kh)!6`;*c}>Ycji2B+EdHn{_Vo;OsbgENT8sHE0lx%SrUhEmiQzT zFwSA01QNk{>A*>c8i;cdKo5>w?@GTv97CB4J*YsL3pt2DnF~I!LYWIXkV2UYJfKFI z3pjv5SpbHVNG~MgUbUQvr@ZDBZgy0|1)sis&5%2f6&ME$a~5gv{my1Vo!y~8!}DS8 zRZys>zr(bUz+g}rKCXtq)!>W*$pu(b&mLS8W)}z>fEec_(~9 zY%&tg0tZx1!+*Q~icov!_K>pS>C%5Apl=!^?VnPf?<#D#1Oq(CRK8hFn+jtD=8Z;C zgYm~xC_{J?*%rav^I?gjo_N(nkv3kzscfq|w#ngEVM~`UPV+M%*-{4KR=+&&j)d5n}_i<4$LyX05d2^efZK zK$9hA&@Pmhw{+@z;6gm@1vm|{`gdp*{wj9l5>K^LLaB=YZRlWlYeIDy=mnnl1drCK z$aSHo`X|$`^VxZZ-tv~8VX>t71BDQ+*A#KFa|l%XXfjIvT+x|=IdivkB`qP@3*IwY ziasVj9ii;^v>@ND40qy>!0^4`knb@JO!M~M9Ca81 zKCBFBgcJiKh~XjySJQFsF)YwNj12eSH3Gq3z_>1Gd}mdkV!fjNY|H6^{HQSeeE-v_ zsl-q=Y>cDIH^IIgx*qXTc$eXdpT492c$J~T8rQi(+J<+CTD@>*`nf=I=5zMF&|53V zPMeb91(__}kH0s{c)8>BI`S7Nc`*|k|4i(p{bA^1SWrF7a`=%6eSx9 zOy*)2!ROW%B`XO`W@8t@<;E2y3kghSVi&>IS`|SL;O-P5Q|kv)ou!uxofuH7(9fU^ z>o1{pgQ~_|C{kk~5Az<-N`R|`q=9$BiB=|Q#W4p*BF;sq45h|*dKv@Fq!>h20|q52 zL~TGPpa=v=aaE!fId`r<-{o{Xn?S?k#ljYfk`cLmF<48ma_stc$r4CfSIofUApd&8 zAvMmLfg(~-Rpg>Mu?DTdf>IGzP7T2-)gs+<7z`7{ zrtq6&bU8g@OFGuK5*+S&9)u#)*{b{@qIS5Sw zlRiwzP=wX}5w{}(UzAV=`69gf!w_lOX9@CGj~Y#|Z_F&z&0h@iBHElmYe8ej*)wXl zUC6t&RX&AeJ~ymY43;Y*;=xpv_>e3ttdxE)y>US1=oBsut19KGq2aqu)ts{2Y!Y5p zeG`u|mp++`O0)|wQtV8J1iGnLo>Z_YyP`mnkxbfyW@y6qy_X<%zftBq$?xlLK5fiw zAlGF6iojMA>-Dr!@Avn`%TSp9#=3mLWL|T%S}kMsTbh9yB$5OhZ4MR?&F!WGkbvFo z)j%N0(9yI`uu;CPgNTk&S0I#1*9>3UsUl>X1Mb=l<^2qp%^7-&qttHabYZhmum4&H z)}uY0cc4k>YWZf)^V~g=mMM3fyewEVC#}=n^5)blllFUCQ7*m$@F={E5j0?yc1Qq=9qeZwyv(r(>tYpZ%a4-h_=QgG#7?eomo|Pvg%Pa zOS&KN4-Et^+SZ(3=}yY9A;~`2R^>E@4a=+z9ClK;KeomUV=6ps7^KLeu%(trj0ZYT zXi`*?n^Ill>10lrsaDMQjR!*0(U}`Tg#Y}6Rf>_6@xA3i8&w=(Zj-5uG=1&TAsp=* z+Zog2UhPVL>pI@KKv0&qsCi! zEvH#0EAPshdF_zR7C>*C_aG&=82{|?&Cwu8Q(?B1MFndiT3xFpgwFjUo8ab^9a?Gt zf%D9rTB4yb!G*L?W!LA(x}?<}Yl3t)!Hew?CkVJj#)#x*x_(#(YUHe(ubEN+|g8N;Hr1QR5H?BVA)&CEgyo;13xR#T=zIr}* zBro`_xw@(1l3q?7Uh2V$+k*sQWSeWW!JrXf7o+JBx?xdW$)=c&%u_}p7CyXF(rvFF zY9l;3-5{O?OrywYRf`0myHP6n@PUFArN9CTT}q7sVst>qJ6NxZ-#4yT@_-7E z-jz=xG~wH4j#7t?m-bm1KkpH)SSZmWqLLp*d)-_hDl9b7;bEmR9mTF`$|y^ox}3ez zL@paPq+spkaHcae#Ju$JA+MQ!Z=>4-+hMEF7i*K@YdYr zDAGl+U5}wxMu6rIDT!azYhse?%u4(WiLuMX5L1(%%weMRJZ4X@*rQe{3mXD#a3fHq6UOoId`#wlfZ3}z+Ci_a>2r%A{XNh z!IJ>l!NVrz-Zw0IqzVF?XLM>0Pk9vl3j==6NxWCA5$qk8dEUg;XuY*Qq!wv_yAPp7 zk2_w($vRizjmLD*6GAp7_4DaIl#sz9EY}-wEo+HUCAz{i{`x-njV$>RpvJ__mp`Ds ztgJL{Icv%BdVCeW)Ec@!zT*j%`p%-Ib_x%}7$dJ$0f&NRn}OHc7ev>vwfxK~*q%EH zezZTOGk?#L`k{L??b@hnoy89j^z(nSyZq6x*6{pLTmL>K}?&~er5eM~$_RYmecN=5h-2)TwVefAFjNkl=(N~tl+q`3< zH;&+T_7mQ`x$u8wX4w^rA?S1n4_ZOp=5${isyv5<)4Co}RN>MCilr_aV-Y&u_FlL$$ z*?ky`#X4oNiqVKF&~Rb_?#fj&jCw9#LV@70{iXrjqTO?kHyg4*d(2?5Z8gVY+tS8~ zV;t9>O`Fo*&hLLQ>I{5h>lUk&vn(r*-Ay_gn;EMGD7}7lxEMV-CqB_=E6iDYVWA|T zj@J*6i`7wW8H=c`Dryksb-DYxd9ZckkEVN=d|_c!Tuh5@&vkDEFrIT=o88d2dG;62 zcS-c^<3CVWO&Z6O_w*O*+6UXXmVwrb+V5A0WF0684WwQ_xvE3HWH0&D#rKU0Z0g56cfA3%V+ZP=UG3 zP1}WHaXe+ZjzJIh>MZoLzBTA8Fi7ARlL}OKbFmbVmL6~0=T7CiwQ0*Uo7|y2XDfsx z>w16Y4Z2lvLk07#;dTQ#e<`|QiRu0u(me+r;t1xA{@Y0(5Q5-|g#eQ2~>GFcp>7}pz8S!o*ZWTizTedCo6(b;=06kuPj~l^a)}LfWXL|H)Ue<#9m_QLCJIs&)^dr zxaUKdAH`2RC?X8azGO&UbENYJsT*;xu`sJ%&3UL|+HG0Fmh?tKVzC|mLg!+ItY1D| zZv$3N+k4};THcjKi+0ic7)TlkL5pkxc7aNxes^yL5U&jWZhlO3Y3V zfI$s#0j@G0CV6#~R$F3LTjg#y!<>9+3ASO7>c3(S6c60Q>;!aAqQuFD?&J0E)_QG< zk=QH>51#aUMx*HoZs}Ns>XIoWw{9z|%6g_MxXzZII`5dd>@SqOE)QBpsa~R-fgFoc z`zd+K(-LhXAlDnqv_}r#sW9IDyk2S44BZ~u16E(;$@sb#f4eV~Hma5^Y;3g19+pXU zK4)5|56C5|+}+JF${z-ULp2TDHLH-~Y=a;OQc(omAoMv&3Sh$@QK)o$dXo)q$uCgc zDwnLd7iA0JBQmLfQxh1u{&l-GAO0;fjVm=Vv(i5q*19VXmCfGJgw&P?W^9hwRjp?T z5>QVXI|qG0J7$Gw=#>E*CUQ(HFnBd8hz#amKy!Y|;$A7HM-4CkEcT%}cVuyAnEs}q zZAl_`;H`oC6~Eclq$-7KNOwg7c2UAxcxWLjc$ ziLf0zYT-xg@n>&99jpj8`=VDA+O>u?E!#(dmKE5g1r8mVSLoLz_Tr9so}GR!O)qxm z?ly)0?Yo2!`8t_Sd$r|eL9&SUr=Lhv8ubwdgFOn>^0P(T5Nr8!8^EBrk9|`O5L})- z0|DQ}2f!x`*S(zFi_blu$^Vu z*7lQHpcnj#l|Kx{5s)+Oe6C1V>ndk{tz03C1(fW)Oq6nBS}L}I6JT$X^}9H82jM2& zfJl%0Ny1NXel+_k)O5p-qtA&1NLrAQH&rNps|(C?J&gSczKhPVvE1f#X|`UD+Y!&< zlwg9h)~?v%xZT&=nQWhLwbfha6|Arf6QOrTs?%QoKPwcWSkEgpTW3>f4Rbns> z88_J#8P~Wb4zuDd$T3(9_u0^Zf-}L(vZ>WLVm?8%+@^Hw%LhJM+wz?Ye`Hw4HZ}FH zlLmfnCtQ=8dfQyQE&8qi(Hwlh!~Tp^|7iRyx?e8vavVb^7k#)(TQrD7G5K*Qpkxpw zO0xCKjG2k2EdYy#xER2v3pKQ1MAyw*9@$<-*Pmc1?PDNxX$v!4x)yKC%CfQ1_YX7a z-;o)ld(7^92a(PvyLM+1j*U~ouxzTnL`rO$lxEjVZbtEUT}Mhg(#t{xH+#Ng=7h2; zQE95pHzwmk-x*YJo8#dQXNp711UIc>#=1?nv5FKRAvT3W8{hTxI(z51(zBU#A-}df z&!4&Ue-~%HWA*A$SY)BC}zmYt}pNVv_X(UNL6ATi4&?5mW21}d_77|-N zk^-;n6_Fe`)*=9kNICgTnt5V`6FIT#m7{GyhqfI_dz#`&(p_5Ux~AyQLb4RmWiPrP z7jz4!9Zxrh497?kWM4?qemskMjgRiKpS=KfheO$iyXa#QDo5squ#|J)s(R)klHe~6 z=D$JU}(pJt4a;>~q_Sh}*=5UY>0Zn4p@ zCZX7T9W5BVSyM$@e{Qh|A#!PgVf9`@*{(H#YGP2IRrZVcO_@Lh52JcfUhp2WI$>Sl z*SdZF+`NC+MY6TI@SVBNYWr{QiC=?&BlPfxB61Y)HSqxeNPh#jJALh(rT^MqjeE&vMNue${-~{ zHT0OJ7GHvL{yXR)D@}jX!B%bO1%5q!D^1V)_bP!F2J?zd)*^tugyB{DN$fG9+&WGF z$fG+;KoMKfY_RRaoOh67;@BYkZpBq$K|HX7@WaWnk60^-$uc6WCV3+YbN9ysN42Gy2h?n-wT*PVz4|T zIL0!9pbRSNXhSt|2>7*rut>xFbuGVi(KERjoQ_xl0C~6M5SpksF`v&uNPwsOo^g$9 zd^`rb@YY{Zcg7;Zn%(WUtB+-e@E+0B3-dk;2qKUOnx{Om$z<=(ckJSbrG*V-UTb`` z{>+!TeH2qlaPhExG{cwov(C27~B z3)1Ol0P;!l?b|gvxgCqd&35IH2we}3vD~t7U96p*jTbaKiDV2#2?8ah3t;59RoUe3 zbdB8?BxMX3!Ll}!C0r#01kHFtL@xzVJkT2K3iVOHvjLondm54lhPTP!HrAv=>iVv^jMX3Rqt)UHi++L+OMg9flh~fza#efwd1@{IsC01>Q@seoj=fb7bs1)5TNoF=bqMVXPBVOemuOfr47hQ@v^- z+jJ#?>Y8b7*4Tv8*yJPt%QJCmY4s07AyN7WzbH|Li6QVOvc7BdHP-oKu*_pD0O1)C z+RTeTZFxzpwAe~aADP0Exf3h9uU92fw2&!U81LyUg3_K~rO>T7P^z>L#HD)L-7O|8 zEB{TAYvIxupC0^uhE)9DyC)k?7*{0t7F)l7cOe3Hc7O?@_n|Kdl0zV5!f*k(a&HUQ z&B-MqxY*f&^JAcSp9|A^H@-q0U|+ufFE;X>NfV6`l+x`FRBQhm-nzBC%B|k`sdbSq zPl#;FQ&ipaF@23;q7iB&b%H9@c)1{(f{9fZ{@IPZoHJ*(RvRDs`Hg30O_#lT%fjF} zM!`nLiU5aZTA3)F)Ce+-A+$I>=HYxV8;l0QeDEB!erz(wkN(^zde=u`xwZ>eIq({QC^_>D;&%3i(BwJ{5QW>DBT(^$7=Dh0^^wsAi7 zc|sne04w4_U4%>9&?fS`2(+Un0*Td($1PPdTRNgXC8%a#zD-E$gv>9(U5I0$^f zka12zTJxk7bpn=6Yqy_6X1GD%*T8tgAOgix%dx0(rkNCx96HAwx&pr1HB=eR8dvgr zY$)j6c4g9;e-qd5R8R|Qo$+TCh!&mJQMYt+<` z^xlZ!^j>`duy(-CuGuXEGj2|pD=sW$)JtrqTQx?}bZ5zk8XgCUQ#?{G%_Wer{P#) zZ_*T65=0UOEM*#b`fj44ml}Hnm>Nzg%3hFkpjHDpNaXjYB+L2q;_6(u&fCtA_X`p1u74E7z2`g|*6ozKvXG8h5LqC)z%;m;ii@u0kl!_8*+;J} zn_ML}zoT;?->2HLA!Z@xUkgv2VM<|tjm=QX)^)-`W(tgQDAkmFA{1XO{M?Wb1oZIv z@-|28cQ$f30a!@^9J>U{bf6nu40j$fee0p=2l=Pq`wnT|h6i8d# zN`_OhG{?r1NPPK*4It(EJ0bia0fguO{6b6G06w{JVYSA;9f|+gg0$aRIj+AU2wy@J z8ouHa8&_KF3tAPhiqc){az;o=( zQDMOX!=jBkY4omiQF!=iD){~ATtBL!I^qPD_Ndr!fo^oYuS4n>%+o88S z?#(`)!_#b;42Bs`T8zdVD`DeCUtHmTUHGgO=m$HEjb>fv$c_YnhF#bRMpVO!?RV6{ z0M^`2Fn2fdXq5!b(k)kvv@BOZagT%6kGZPun%mq2*g9!@&jW}0Z+|}#OR&`|+>9Ii zy0gOAQAq5Lx*i3s__LIBo8YF}!2NPQDodGVl;gFnayJ=AkRDEr#iI$q^OL&oS8R~9 zJu$>UDu;ebKjB7D!FV6*+zq_I{`_#IGGL!8$W}P-X@J?Ob%oUvN@A@+4Q}HNf+c`( z$@wNnM#JJ*j|R5R1-hV*BOCbY0W^(|T|F384BaziB7g=z<%++J3SZBQ>O{nZdN8zN z6{21CN0m_QUBl!8o=B_*;2&JoWO4*#QzOoivy>w`<#*mvo-xaDyRVC-Ox!{tZHn zD;GGoasqZ4#gT~B1f4gS$MM<$^JgmXM#V8UBH)~BWT}mSP^h^f$5Th4pG(EHYYAm`~$%Ljk}3mY_zh zKTLWfhtBvQ{ix^aqO@fcKjIQ{b!Km+w5>Zx2Z-cdoU|$#M-XZB{W~*crsdyM7h@^X zoI_-DhvA#;Wxn2CH}<~H(8Q-#3in1lm1ji=|K-+-N7*t629L(1`CFrtI3+y>k`iAy zt>ay?A6#Zc|0|X|${)vunH}J&*LmM&%dj7qqUcN(pZBRm{$4E|GQi=s0168e!O*gt zPHEa!VDu7<;mHlFW!KYx{jzB+`#BImRA!vjUmFlP@Rm_20pQW8-R?>6BGY4r1a5)+ z3c}3UIxL9S!X7%d&AHE;IFKp&xVDa10JVnQU`#Bk+8GvI6RZ8v_5>hEt{UaSYO?g> z`lR1-#f}$2(`70`w{oU%Q@7~z(6kUv6^LRI5H3`k59k#mK8e;Xh9GTsiMN(ZJlZq# zX8X`0&kai1>eQq$;~@DYxtng;T04LVq@&wqFXDMyHhbXF zVzFHwNO})EnymHAbc9)0*yj9W6)j!y+2lq|jc8J*6eIYZ`4*|lLlEbtwy5Hjn#PjS zsX!!9cusN#=yVkDy}5Orl23nx(ej>Um-+{X^Kw*85Sahot(LF(T!xWKz3 zadU+^;y(@o)A*Crd2FE5KNeRClx4#!um1732yX4H6r*7(lc;Hz5Dw9~!Pq61EXp)= z`_?2K8)_%aa0gfo8IR4MPtU$aX<3#Ix-pa?osyy{=r<8rT z1Q5ONKbitCjA(SAOz!Q_=#l=2AZx5fN?7jB7{~f__z)QMN>P%Z{MB!rkxJUnM!;;T zL)Jem?jNEvh?#t6B!HR%CDMxFv)b+uJ!{Y)`$4*(#AP;#vgi6i9 z%Y}!}0R-gtA3{Gi&^mGeUY6m9Rhon4bsE!)URu4&{&@XZnri~`zr`VghvM*l%``ZuShsjY*x2 zt&$dFa8iU|C~vr8D2qF(C`qCY$%&FsU~oc)U?^_fqbmz!i|`-pM5-!m45F*@GVevI z%5Ma#Kz5WHM&g9Unfz1zl@S&R^fLec>#>6F^)ZO>i?KHbT4U?>aTU3paKK( z)S612SG58mTeUcVCf;1KsI7XOCkW(51)*al-?no0z`Q$Bl-$ww*AUGO$bF>&`S$c& zB_VU0i)*Ds^aXzQDd@^3_uAU@ocRLx^VdS={%@Ez;y|4+*f#P&?~%q+R1@!!yx+ZU zPqDEr9s1~_YHvG0P8=1wK~N5AJF{<$o~QK?~K`Rfd37k{{zV18Q*|(2@&2Y zXpw`y2vPZO9SVn}-hjw5u^J-0QqUqBJvpNCTpbFVB>w6DQ}{f{bQtn@iWeFl*|d+9QE#J}@py zk4buA{26d>-%L*z@#EkHqH2=cAb76SK_YaH`5xmB>R5h~mPM%>=Q;k?`HzY1mwy4+ z0&?>B(8r$u3xqGI)tm1f`_2wiT*T2Y42WU&f+P$}<@5YA63W~ALJ z5{rd57vVfE6~AB^B-91n*IULzMmJerZnEY!dhh{?_Upmt`PccIPrgsgTN*b8x2Dvw z5G~h^iKDTrwtW9k!|!_+crY)8e_VpXweptaxsO-_CTAL$1VxQ{h>dz?4LNkQ@}_R- zinjI2Rvw`*2(j1)TvQz7Gx(Im zbN?`}yr9!ds!*SP)@lK*s2s(Cyy)H`49s4SiwiSAYGpYcx|yoE&O`9AtsKTKEac6vnALF++kBK6>Trup=4nFHRqCi%uBgZm?nP2SY6QM{#h}{1=7(ND63fBsbl0?Y9ej10d!pl850nQdI_Ehl zukX#_>(ueZ!E*{>SCtyeu?35NwOjqimh4C^?Dc|3G1h3;eUs4&A+95XH7mN?%e1EA zL3qIODZY}ZDvvrW9(Z%!CuHAH`1hrHaFHR1Xj54I1;Gk9%$c`*Gg+{QDijQQ?P`OX3N8Fk`ne_CIg#6xi{PkD_5bfci=!wlr3M9l84-h3dJCP!`)jLwPQTxo%LdWn(&d$Jf~BYy)JV55UP z+sLu_BSGhhep^EnIdDkeKqruC7?5{4XiyAMSoi0dkBa*B$P1i-(csVyn}?m%0ihDd z&E~nrurC>n=cDvr3Vy9>(i}Az;?Vs3Z#M-vv+Aqgk;L>z7j`ecN`CVVMh3w0mU234 zbZrHMwbdGIk1P)nM5EX|4&xP(+nN5&%-x?B$XM+(I+I(wELzf*?jD88v@Ua!1^?hBj27nspH*OG$fZY(|*T+yC zih%QdZ>hbRNgNvQ(u;?ByqY z29XH4puIaq6lr#fVSuvSSF@q{i>L^FGbUN`Dv%3XJW$aZO_^M#6H0s5gjk|TDE2rY z8F)wv!2(0E6hlb@rM%A0RkX(t-{`}`EU2lfsYLV>j-pa__G8cX_1-v@YT*&`q%X~2 z@}h=S>4!HW3Mg^`Q|o(PAjoclv~;Z{f}oa;pR=$(lM#t*H~>ceDQRK`ZaX^s7O{zW z$JLm1h803P7DA*I2+sfD=Ndq^4Y|^8f zBABcbhT@0<24EElf_^Q6A%P}gBSZL%^v}$YuI0fGj>XCE8;HONKBWDw^mvu?Lwyi& z@w1j&5ams}Z3w7*Lo=XSzqu}YURlBVxwJU(|#>A>M+rqPFuvO_=pHjR4Fq;&d? zzPP2c#g^$>38%=FhSH~|&tm{8ZX~j^({!387mvCs93TPR-x+A;aSUuuIy&UKr2iXa zfIloMLu0x^gsO`SEgz<^GoK#+K*#%;G@b7`pNNnX&*mv|x{Ye=SfkC67a!LOZ zfDuP1g+FBh0!O#Y?9arrd~lN#XOf07@{>JwMB86u4(A{NSC4N(x&Qw4jdvBkbGJ@e zF((?v4X}K5Wyq*wl;+;Z=Q|1~eFJ48+uyQK)%_HWnY@cQoR0sTjCVttYPxlta2P}A zw#Btf+7_88t&jHD{?u}g$i1kWe`_gy-^0Yt^Us5J2eUprm&OE<2qNAWat!7)NnA0P zCor}dO}?>AF51M%I=X1#fbl{}$U}gM2XN^84zP?9>A1_E^P0uxIrj~_^c^|(ojEze zw#w~red;uS+N{};3qAUE)m%LHVxl|5OD6ZnV(^4hKpnKwWzUN(>SvkD_4F1WDl|5; z&32yr2(R}Y5Z|2%J*db9Niy3-=mI!WF+NjB(r#kCUU-(gM&%r~*h0v=2kLLUaz^UM z1E6F%pPa%5|2!H~W)kwC<)2Jst_B=Y2+4(fF0^53p6|<=QQ$1^WWGKta=Bd-tMH|nj@{^h{4UjowCq@_V z5HKBS{yhJ?yUox0!M?MDUf;gEW35Vu6Yyut;UCiPR&0+nH`%nbki&@y>%7q?0i6&y zXie(Vp>X&7*YDo!yYKk!A-{VOdW?s8(N4wHh``?_jcO$zyb6kpRxK03*_35ZEbC_d z(`bv8=@%?URIrRg!8h_AI7w;RV7y|U<>Ym&!D&2Tyu#1rqW@ z%DMa$P=)ZHEm;Td3u``l&JUJYRT7oWU}Gbr#jJwXY`vQ+xzq2KN+uViBDaZxU>n)* zCzEkV?CK_@x<+R}QAVR4`M|-vP;-2VLpysvO{5gqea>Y^`gRtn8IgIh?{xlLANs8)!?UD85xT$fJU1 zT!Q>vbFHkCR|+SX0*O5?qi1APU`cJ-SgKVWy;RGIUO#aWhTPgZ!F%w>;YV(*n6x{L zdV`Thg{hlpc24Y)Vri){`{Id}CZgMKIQ4Jj_aD+{UmUa2m~wRLCOjApDeyq!>pgtk<0moFGI+)4zz^M0>OQMq!x6MD3 z%lC@N+r|XV;J9gE?LQSVq~)apWk6|E#-*g_O#?*9`534m`XbtsslH`~x!BWg7lHBM zR7U{i93Z;$_Py@-f{O@}skukSYJ%6MnYM(vTbdL><^q8;F>A*}usumGr>a~1_?c<8 zUq;^9C!cUdx1Ck0v`B<}9F!bUFnw`Ol3pj*(MdOB^)Bc4MQoPxIN5&n1>Rxg0*6HY z36AzJ_!y_6Xv_?AD?E&8IkMXU?_6_%kN}O9Z}Rd@n(cs%O}Y4x8e7BMGM{5gj+pkq zMvS~~u>TDp#+4l1?17zfFC;7nom0=lh39A(t+0YZls>I5Tb|ekfx8@=(4($1laDMY zhBX?xQ>0{|CBKK%=vmMVOEh%5zg^02m+srm(a^2_FX}a3ZK;sYGxtXX_?TP2DO?3*MW&P3gYrXm_* zXz!1Jqns74GW>@R=>=-qoKa6s9dL@R)*5a7&4!j+7XjmHjgG~Y@sMeIZ15Uga9WOD z@{NuM|ADh_(EANuz5zv5{E)~r?_@tlJqrdfa*13PhmNf8L{qLGqk#ntn79NWm!+X2 z3pn&HJt54z$foqRtntV^&Cl4fDi}HRN+X}8zhWEH8NEStvtyg4V()12%qX{E6g)O? z_HEB--LkJW0IW3UiZyUx_*zDyYvIK#S&B?;%;m~821(ytM$~1=(v2-HDprVJqeRV zMlJH%!ngSp}YurAuA-)jd;PdlrUIfq$w29lA(MThza5(>C-#z#B!3JQ} zXAs!>qg2H!&Iy-A;CqwpIrD}0_TPLaYR}kOd0@=%K;bd}V4%Id)wyKc>C^D$^>lgu zr$!&()}AAgf-JZtzx=8QmpL(0_TtHX~6#lDaZyzlC_Npj2)R#2!dwYGNBR0Nm<-Yc}d~?d@+op7_ zMVD1~k9PN#zTN4%%$KB!i&cmFReI(bp0~#01_x?z?h6)fjv*A3OoNGcsF8T;fw;q-6d z7**(z;2zl@ZI6j1?~~-6&o99rvw-(TYI3f`(I|rpC%!isz&loL2f`j;JmgC_;`nig~3)k4U1S6^sfZ>Sf4K+a))(>Zo7$ilGsBB-1noT#- zjN$LdL-Dp0%U@aSJw*&-So3UGb*X?ui{ZZzDJup(zJ}NpNb+@C5%n`1GzHP(5lHgw zdBQA;x(6C4KVo>hzG8S=e(rO+WkM(Iq+recpg+K6Un0PD`}qL2urYfON^{^ifZ@Uk z=&TPpHImk`OSfLH>d3`elbs#&7jgmZtgobJ&a0+`dJqrWeJ^)%1lgcZtMG8h2iq6s zC_t4V!Q3v4Xc&Otn#r$&n6qE%L{)nEiBQ{lL8KlMY}RSh+Lr<*2+5+us)-? zGVNG2JwQ189j@?N|B5+%#gJ}a4BmD7W^CkM1{4~pt3Wnee){8sIw6e#_mB!KM}{%J z83K4i8onRwwLz8F%PG$(;y@X8%7rQAIC1(A+@zBpSjrwO(Aau(TiIRe;UFUb(`^kY zJ^6)c^V4_r(Q8H%Q)nZq)%0`D+GJ2Kd6MOHgtk<4Xo3p}Y+>6`%^rp21s@`YGWHh# zvp1oFqc^A*8Xal=u5pn0@#4(ntr&lmUu5}${Q5tOC*~C)7BOgo>!fzC)w8orl789L z>~|1{MCi(9K~*YXwM0q0%)QkDa`jBPOz$K{grpZ;obsix%rLO9@DGL{N8mnzg0}VE z@E0miKO`%C%?msRI3qhLTkl5N-_r)~S8ToS)-O(DnbO{!!n-%r3(q09ZWMba1G*+| z+&|~mzAVqOeCkRZ798s9EY>pbee5{4plEv-ni+LlLf=xbQW!OJSey$0EY4uq+*%X= zCR6VoTvVva%Cr9cyJ!?vM(n%Toe3e2IQ`-A7a>QSHmVfW@Yc0Qcgj9@oi|1?D63_5 zj^){sjfK+_Hy}H8>%vo{hwENdS4|ho#07<#R467p#Wrk;HF%sEVjIhtcU{0P=Pg8N zvtXV~<|zF6T>`$-92)32iXp|I46t#CNr_>c`1_lQw(FOD<(}f*@Z8 zEliPp7bM0{(m1jK8GN_&V8a$pam0=gZoB4h* z(pzR6mhqnEW*- ze1THp@;XyU=GcS>k;G|Stfw^0>n=8FoY_gL-5-~J!7Q-4~ggnpRPtgKikHCWdWNU4z~mvEGJ>UWb8S zL%+~!V)}3ZzQ;fgOAy4j&Ii2?8yF>umDvV=9x&QRE|vQ>f_wnAa6L%>p9F*lBkCnW zA_H)JpTz$e{QnvIGHGhp53oKU0Iulw9kllyu=gF7+b|pSXOK@vo9#F_3Z*RS2(Wdl zcI>u%bIv#V07ruUJdhpdS3H2)I{0%7lm{ZS7&zp$pV&kP5R&)eQkqWJB$qUqc#qRmijS2C2L2){Y<}x5d;wg;3DfkR}0( z9!tk49ou_RH%pAtp0~XIwNU*`vbo9*Rcnf=xd9)hFE%pLfjZ;vjS2vA#B$!m<@gqA zb^_h)qQZ7DyJoQfS5FHiHZuFim$g4F`cq)c<7w`U^FMKztp5Qgt^LvESf z)*nQgP1P-yc;Bt*m@bY*r>U^T68gLSpLZ`}HwV93fR!g^;FbKhK(AS>vreotU2Ic> z(5%H$!ETNaU^_=>Ij2GRQ9fcd+q0JEyPD@an^(&=Zljn*jq}%YY7{C;{E{w#Wj&b| z*Ge^}w?XMGMLNUo6oq5xOq@fL%lc0uO{1J%e~IV8D3pxEg@%Axi&a(~jXrNf-|ly= zLWbQMiEX4toNb-YqSwI!uC4V(AoW;(y>AEn+$kgA%;{mp$IcGx>5hFawCq_+lB%HQ z3(}P|aa>ncCc8v*M(}S+8Or-KEybV4qGP~s3_A?D$a8ysy-1P#F2T4a%{Q!CcJH=k zcf^(X&3~a&htf$e_;$-(Yy@%)K z)qw0bVij!zl|HQdccGJ)fYc*siR|t!)bZRAd1K)dgg|4Ryy#)K^4xDId zt;Jb&vu7PgR9Ghk&&SI#L%L@WHHbfS9%EC5C_C^?zasNpA8zs!-1iL1pY_19#S0`J zT&PB-TKR=>I~$Js1ammmz{=!JjM075&9WJN;z%>hPk@c;!9G4gPA1=Jx13P3Vc)~; zLj?|GNTKt9qv9Dh73<70FsG%edHEh-DA>X={#AaTE&*J9p|Cx`r!n(iclMdYr$Pc* z=rg?CT#iP^@;@J#o zwn0~mPwdbfW)V(u^FL`L!^Ev3V0_#@O@X3n;M;` z{eGixq3QQzd0^emV4yLtCOkqOntt@-IzAcr+r;oNyudbEqt*sbW7T}|o=@%l*{*GG z;lTr^t6E!{tw>Co(~wjO+ry}UUX@D-Qsk48r$k;-KrL2QiRo-$b(iH+>r&6KQABSs z_U}so@ViN1G)=qu!ofu=REr-_(2Ny!!JKiX>Hh||!karrSJ&WZT5W;saW`-@<-`4F z>#+&B%(e3CeHd(^8dF zoGd46#2<|@Zg)-kM+&2tb`Y{;Jz7oRwcxiC`l(T@q;mqddnZ@2WB$4cHlE5yJEq<63OF?o|ic(kzxCU6tO z6aTlOZTFm!j-|CkHVV1Vb!#sjhRN2y=cLL85XS>$R87eMruFFx<%|I<3D>i)w$QLE zm(A`^b+>AS0qcV_gNb^;D#i$^n}K50a?24ur27d*{X9*PfAjA(0Rhl`uh7J_lT(2Q zf=;co_dSc4;-Ah#6|r zLSQHejULNVo&~7^wnLps2YS%guz1f~J7ImFUyV|a26%Ez8X5G+mDgN~SSWi`MA!Uq z*-v=Uno6D)nFJBjaPk?$btu53R3Gyq&rgMitChc|POTVNVd!epdl)ORy~p^0n^*Nf zac`|#tzlygeYanvKy$0I9yp2+_fv)sd2+mSr68& zYl&g!GHI)7s7T6hqR%{h(gKmnNsT~4$Szq=R}7@wiJjTG?vH{Fs^pJu(>#~@z>TPV zwWCDUBV`!?!8r4J)mpfR^)l*ErhTs5d-G_mOA3XYcH?PR5*AAg=E72xdYPIQ$*5{* zaMCZ-K5k{OLIN7i2-l{#uoYPzv_F!*4bt~ku~kV*%?K5YP=1cu?KdfzGSaBps7HK} z*gUR6^f6$zRv7QTrc$Pw3rm0Y)Eg}(`bS;UX`@g9-Z*RTjAtXf>4eN{ZvO=vGnanK&2+8you#A6o zTum9lyY;LK@gpF%t@pRuNLM&&CBgA?U`ik2SfL|_W@Wh_&v6b+O>vXijrTdapd;}c zO*y(WPDy6jGHozQv7Zj;D7JPVsk$V2=q>C6aQ9lfrdM2R$?~!A$RIGPwP+-& zC4HqGlaTcMeK=^8wl}KwY#NbZfLZQ7c59#kE_X=$9*6-h=yA1je8ksjCOJ&<$_eG8 zrO6=AM{;Px>ZnU@QW9@@Q-5W6+U*Nf%N(AA1qYY+th<}VhnPS#K%b3ukXCDn>IUEd zo*>|adHydVB1o%2px)HmY4DKFbh$8)%3$!2%CkHhOw90bQ?+;FE)B^a#W2>Mx7%=r zFDh2%(xG59fnXGIMd{!Kv12&w_yAZH8XC&T>U5c6n0a_pg?ayMx zAH$4y_FiX(u{Kf9ZtHLp8wUVF`L3?2ez2 z0-E9j@^6)@gN?uy?XYPL=)2MMGn-ZB!JTO^e(qg#f`!BPxf!*6)p;~`$Dj)Xo@;;k zfWbnvBsEciDmS#$E>qN-bxOQoK;n)^oINc5K>5n~E4N-Wbi;S{z=j7aFw5aP?@f8v zz}mQ{*DhohUZ-xOShoo$Ag_UmBa_O+rPki`R+_upil7!0P(I$SsZ}Y}2c;DhxL399 z;*^Y*!(@tR?&y$&G|pf+XoheNAXvXiY1G~AhhmDU-=nkW84N*$!!;Rcg?@9ZBogiM zgP87Ys2~!pd{ufsw|IK3e{EN$!3#x%LmK4A9^P`nSgkNZ8_33O$EV6^AhO~M5mfk_ z5-8^a3trkDXyd46O0U+xt$Gj%orKt6iU?Oq*8zmI{m2vcd?C)HgCGkAoWoG^{-B65 z<>^ zH(^TaXw9d(Fw1#I&gW;>nTE-n%U<{gG~{uOMyI3n8}*w$B{|{)*dk(0XUVldunO0- z!uR4~dCmJ3r{Q&yQnNXC_#BP#&ds0|wk<6w6@McHH5AfpBQ^$wXrd-grKJ z0P6%Lp?hvQQSJB3YO;~g!v9wKv zekTxfPkL}BM}o!x0RJqW;UP!XlUbttjLK1933Sw&AlpDVpcJ)*B2d>JQ$dR0{5+aK z=Whu0_CT~F^(nB|b;wgI7Cp??(}Z{$5s>W5vL(w@TUr-RqK%+IG2zw5J0F+zUbLDpM<>Bu<( zRsG+;t}`_t@sNQSLa zW^1oe5X9Wm{??^$Ake8dJ|zk9B;V}lSX!ag(wFuc=W{SyhKBE+)iAKZOX=frxBl_3 zQsx;mSVSX3#iX@7mH+Bx;_*y`6*Nf;U9x572ZDduc|9-#J^uwx>NuCXWI!WABg z${gm&PCwy-jqlSw(Gq^C;4e9`vzt-M^7mr>lIWIEF;<_`&~9ns0pHXF=ukW<;~$1y zv;%sLam>Gg2f9AbrcbC73_CBb!}FV&F82C)W;cHP&z_APy8k+GyEd#1rvJ4@smm_=eCC2G#?LuZo~f?72=VSDOgjYr&L)4SyL`%po9eh z4kNl8j9t%OIyiQaek4_&enS3GFFk)cx?k?@c25{>0UPhHX-k{G8>AE`Z6`hcg_QDS zt@hYk+N)%h|Li6->-3s*IVRv-N4Cq_LippI^Uvq&X!F$iV{cDFDAq>b^WF0E&B5o( zld1D%A|_YdBqW_b`^fK$H^S%PjkvuG(AalAQ2MY*?73hH`|ryvk%|^}k~0pdkMjH( z!JFijYQc+u$1aXSA7!gRS~$xba-PGh9$|cm${L8fDsa@<^Cs4r{n_Aqvv(-=y6c>~ zOSqh*6;Vg2$$OR;;YK{f^94&HSEfE~gnl%e;j(gD1-y}G833A6pOPCDrmgY-WX9Duu^K zlh=2!mtP4xJqOBbdsr(q3P@lt9(6FdS=MjowKu5CBnGW)f!A3eir}bwU^ZNSM?X3k zet%WYiiITM{9DSLoNZA*uDb=Ll|2#UWJsh={{ic%t8Gf)#3K6kGk*ZU^Ze&Wr;XEV zjV79nnsbE@Sm5hDM_mQ1qBKgGT!aY@!KF!+vw!{gI(9A_vp|9|U%7MMM3s^qP$7#e z7tXnccv=nbh*J*ukIUu98q%V|z~v@#)iFb59PiAG19H3dKhmm5gjG_6f~#1=sOurB z#e24!rI9QHb)r`95W7x5U|~-SB=}E#bcm?MhLa?jyr0vQU82^>g1iJ3qX|nPil67M zla;uVc5LIh-LW*ip4!?T+e7X=6=0gku%_9r(Z$#^6;_!kn2P=aq#sg(6|{R+=%cy& zg%yV|doQ5MalY(xVm;{}lSy0K+J$;1;YfqVuK3`*o)Fdt8~6o)A>$_6CDL{f;0@^N zIKS=w&mWa9K|P2r;5G*Y?6*In{w~l@$FrCR*_a8~n*MB&sm7VQ!``n+cqE82+@I_* znGi`K$$byiyro-rbC&d*fd8CzCOZY6&BbUF&sgERTagQhT`M@calC}&5%=cC$c|CzNuW(|)imY$*NuQj-hqna0Bu$nci1`jTaxmr2=irF7 zntAoH0zh7qU$Ldx$GdyDBySg(ealv>W8pUT;x|8$^%BD%w~vBPy?}%n8>@I(Aj1!0 zGfDSI!An{xBseX74?rfaS%J8KX`Fznk$O^+{tkM2&}lpXP_TT8Pht%rn5P$bO*sDI zz3oD&_y;Eje8&osEe~eVfn`sKi^1Y5-~$xA(IKNd!C23vioHq{>JUGlmlBLQ3ue%e zbo-(T9PND11Xm-U+Mv#QfmqSyr^$l0bWz-sK~gF=WC`iwT2TH-aOTkWkPOL~)3k6YLdl6ifseK7m&?eZ~z^*iS! z3JZMq_iDjKQR(r4l)?s|+bWL&f%cS2+|!gwW1ygPdpAw>hhY_BD2@*&w&~+Xr+~#j z(WAcr57%=(UwDL^Qil(0eg&0QGP$EMp9nc6D{@}3hYAvnf6NV&s&!R)r*6=8*@;nh zdFYk#nuta?IkTTdM}xEt^P<7WJA=QIhQvaPezNBmx1i~V>NWX-(YF*_&B9d&!|+aW zgtreO)s9L>mZ?Q9h|>%roZ2NEOpN_?)uIpr6dGb}t{qq|iXC6B5uBlELk9>i-B%M8 zRt#L8?bB;qO-B`f_S?8XpDR>WdlCiR!;U$(<{mlj*xNg5%TIV1`uO!XqQ1J}Ic92D z(n!FJ-E_DRWonqxNI;Ak3BvEvjx5WIrxWu!9D7I(swK{6m4c^$Zf79bmbD*l(yoHaPCYikxEq*b&w93PTx*l^yJKR}#xj7zjOjuzO^ zb!*wqjH9DPs`#T^=}sMQLM@|6hMkT<{XN^G{;X&9&ZA9LXzYDg&*y~CZ?oVIQm`)A z@8)MuvVc{xG#eQVua=>uNx&2$*c{-T_}nxgKL)brJHn-MY#fju0vQ^^ElLe!b*=9m z?FSpkQ=*+aCpk3@NcfISRfEm(k^bkzKyo;sw^?8y#k9d#4T@=!O&h7AS`KpCY7X5= z)d3aY^o!#p&)kDFu}Q>9CO3&MlCqI+?+E|opAfl!vOSeoS)4*Vc}26 z%vVqD<0;9kflFN4uZJHd>2IDV*-yE>`>QXSw$N6RDbfNZaqVFT@?7{90g5!h4^qohQKh{8ofM34B_K|ER z%1p0EufnIt!+FaeT19!E$N+g-(4gjW#Q^zq9a%%;Y`yPv0dOF+scZ1%^=DqwvOysH zQEvGTm}2Z%v2^q%=&+Kxc(inZOUCv;ZCwRaR9hFGVQ_Hh25FR%?vRjB0cjtI5+WrX z(mj+QrG#``5ELW?K|nerq#LA5q+1%{zk}%eaXnaTW}kh&Z^zmDoO@@%x^sNG@Pqk_ zhvOaw{Z;#SEwfloJT#(F1DO~GU9;G7to*HR;)J8J!dwKc#&ca_`i~&YYTz}XrA}Bz zS)@hm2IbujXbxTY4tDZa#oCNpxCP9wWHDs3oofvPk?4gfjP@!}(Lvf~udU6sk?0gB zy>j)?eY~_|#6A0lxp``xN9=L~4Fy1jxYYvg!9!~=H%oo zY3#y;Q4=PE13eu4_u_V`B6gV=KDbj7?zCL67rBZ{xI%`XxZ>TflX*Whef9H2+L)xx zYi~VJw)-meOOK_9VBA!Sf@rBF>L_>wP%GiCYMYt9Vc!uKFLQz{qnT{8ua^6Q$= zIu9y$JemWsmMNwc>5zqO*X!dXPk!{UyqbfUz_wW{8Xgd}7p)M^QqNJ}h3s@W>oQ|xC|g#3eMz z4;37(@Sff-efAmC#7!{!lRfezszOy5DRz=`^L0#(SC`8zMX}!DVQV~{>k`8V=^A12 z?v_^e<8&3C$%)soE4gU%&8B42Hkh53mpbqrNj}(Qb}jpRYG3;1$I4EdR4ys<^mL&6 zu-A8Ya>AS)bD(fbDy%V8>%K%*+GX{SRty1Br1`^xRG<5=3BE15SrkN@X3Y7)wUHrr zv?NSZ2Tc7@qnB^1JXEI-QZc(QG!!MixMbLg^*+RDI?{RonlaS_&5UkGCJRg*bI)u^ z!8-8!9!M~12CRJ7JS=!kaa-rQ)G_~To65kl(jl#GqM`c_-My|DA#c(d&6O^4;?V0$Zgk<$MFg5A#p6bM~ zp}RrbE&S1P;wG-{@MbbzZ514x*vCC-GKGzhDaCg1wZ2@pMeIK^K@xj>bB~QkGYC3Wt?p1{j*AH`g>}*+1_#rk&nQQoD%p~Jf4p%pH*WW>*g@Xr|+Ms zy51GByzP9o1FF7C!YnB$rW&`V!agM7kQ>Fn_1qvVYncsYdS1}UQoXi1!sYrAQ{s@- zNoQz%FIjKflo6TzO}_@CH>Zbn2B!YOaJ!L0*jOj`HZ?EjpkzwX0~PxQ7tXykpFOel z%tb4wJKOM{%Ed(1>kkj{uwxc{eBy76$LV$udJG$^(dwEIAD88R#jViMxfY!Nc`w^R zlT?&i$o|x0ti1;@?BMn-#U2`(UxYbn+dFS0;y>1vaS9;uR@m)oXU9}1H-vW>o+;^8 z)*KzLty07F+~xNvrY*c${PW*{|K^@2orjNBP4B^>#y4%@pC2@waapge{M$7$eAG}w zThc#&&LQ4EU&+H)aepLYL!f@BSA(efKHCD52hI{tLT=nfvDV)6%X&EvRi*Z|d^UJ_ z)vtMkZ6J$Bo>F9J5md*#r>K8`UmYVQFl{l{)dK>lbPdW8dTp;0QO3B({qqT`0~P`d z?%!+(-6&>{7eqO3WCjlazYPI8aMQ=5aKSVVOuF=D1WwZX6qU$1Rh)iJl{64Vcw3ys56)k^}Q3SFo&qt9>%wc4pHpo@?a?FeM;qsMW*N0EKhd+kp{g-nnhVl zm&<$1Bv13m2|***uoFij6~I!;ntDXHoy$0e7Sta&nFw@RzsPQs0<#ogW=K5L|I1$4=ST_l%~~n=Bw$0 zp_W$B)E1SMzXQ>tnUQF%)3)5Oc%(xV6Ewh6QtqU{6j3Z5PWyoB7a57idy7mV z$WDhSJ!)%hbOb+7S0H*qMi<{hkIIwo6K-0eoI;@yqfLk1?ybdKt3%Ds7G1sWmdI2h zU*(l>#EnfE#cp}ub-UmeF)8MhIK&P51%|}i!KqQH|9DNI*MFrkJZd1JYua5TeHgmR zcuH#1Kt7r|W2$cn+)MWRAl|eqjiHYl45nuafp7BFNsp55z=B1Hw;L$QiMJgnuMpcWG7V7j5N{hX(BTLW zZ%ckki<99g-R&+`_A|h3M2bpgmuPlu%^q1L}m&?Elp0+_!_$SSSudFzlef*{tr3o)klPE0i*lL9cwqnfo z8bw1bKenUv8$Wv2mJ7R|7({5pZPPj$ua;s@NhgHeesZPunIJ7PWYHKxDGvMk$pn%} zf2FqnTF`QY^P33MWvhyIUhgp5qTUj_J%#5br7BNjJv2#Yj?_H9aKJu=PlWqoPi+or z^Ln>HUOao~)@cNB2fx^i?@BFHRY4^Id#c9?)tbGJGwO&abTaB<>2a7~UnMHZ;-Na) z^EMpHlQ}#uB6^Xv#Uj+SHmqsZZl()f3&9d@oUK2b2{&>|CdKWn_-Gl1Xr%Hy2l5B2 z?bIyDy3{Pv2TNq`Z2mNIxUfl0dY0a?QJbmlN#w zB{6=?YU!2XN^_6mZ{?isqD^_;A<8oMzng8vU;krKvT_^?2~3n8K@F%+If{t3Fs6%z zODQ&78MPv+G`^UP+EIDh%}0^08IIgp(=?mySuCijJ7L-kgX{_|23xP#FbKR7GFY*> z$Md+LM*f{=?Fo~#t4M+R=M(r*V!va8KgCfZBrDStDN}EruoUS(U^MV1fFdzX@)KX_ zm8<&E{u*3kNQT_Vg6ydn^ZV}it|M}!lt;cc=o1MYPf@2*er-Smu0i5H1bt@WT)Lf^ z=^{G~%o(@&DkW8VJ(J|v$SDZgmKDDZqq3aoee^`1D3&N6CsBBbz;dP_=*Y;k^J~NH zVHN6j`Oy7Y_ac(riIRwIt#SMgp7z{YUhcK zZrZ5e452vi1ABs{@?}ZS7#;n)s`a7QdFlQ|Gid&Ivl!rI&vmG5h$m=KLUHcjE^Vtu! z_t^tl2mcf%y#anIwq;~x3Mc!<~f+OsI<(z*)D^)+BsSJ$49hxjL3sLG9WK97OH_(MqB z>(EPsM^PNX|jBJwY16q&5L9sj9$gpW5r#P2a z9aMb}O4u_u7EbGZWj>KJ;9eY)*GD(#xISRsNnuyD^(c?@fqVY_5HpPRfu(@*1{ZL^ zR#~N)vuECjlGg`w2*l#AJ1k6CS9~$u-6ALEz3D5z#@5jDx0$=lGD^b>y!&g_Tv>pypu6|M) zx_0KtJho`hoFjds9t={WX{t&qPdjbly~$bB(#c0z$kKrDfESG9KOS@z(YvwN3J58++5&h*J#VR?minPSH8`t%CzhnxzEThr?|7g)@Y zjb>Jv5oRaMvRFO$bBZ6AoP7ASU#P_yljvydahf>r!+=%l0Qu$qY~!I_jIq#7RW0B< z75;W#Q^bn{vzCcW*O0Zf#p7*hT~E{IpZzI0Xg0VkF8Fi7x4AP?I14?VhxUiAr-r=Z zaN?lUy3$PzalnWPNyb^gHS}KRF438{L`r@d5`mIqy_%bKg|%*8;bmcHP3}7&7Os=` ztB?L>85`fnmm1W^*QW6e?l+Tx^C=%QT&5B4`n|4LQm%PJHc!)H!&DaK)Z8N>a_rFi zl!z8Idm}(J@x+agGjdm*ixNm5{sl=0qmQf=+kNLhU(aHS0v#r zpue;y>d-Tzvp{*-Q+T~8k8TymXNcIcCuj57vAjOL$wWl3$wDdIj7vV83b^%>Y}m4j zhO8?$&IAyUy=J!-N+Y^{%?2LUl!22pfe0TLXY9ACU^rNO{)Ao9sWkddC{zt!dqOi| zLkU{_ZqDirLa)s5R%ifYC!@2`2c(t1i_KGID{g{8v#H2@dpEd1vH!yf(}aQ-biHVE zs%f6+mIBuToe~J_tOPNW%C$U4q_bJkTMzH_`3u$5rv9L=pu;4B9i0`Ap_Q71?kinLly_MMOnC&_-&+?X%7!$@ue#(k zOgPt>O>s*mHJP#XjiZ3DD@K**y?Pz3hfxlf)!8v$DYsl5J#_1(q|2*%w))0W%{|(x zJI4~HW1OrcA)_7D{if7%$H3^5{43G2^hX|O?Uq4y%*Y=lQT~z}ll7Pu-1e)LIfv=b zbd17ToO$ICKe7#j>|}+U4mrLdzurw9Qw#IOv7LYTdaQ-I(F_gU)W?p+nOHLEQtKO` z_&10`!n<+*h-6F$a!b5+wbAD^8^2Gf)l|wITPW|VihN$#VTsl6mL7jFlJ(AIGK0X? zj*EM$=jWsL9l8#S&(vvS%kehej>};I8i5CdwN8`tTvEubW^wQG!zP*HVI;fVEd6Qp zEqaeCRr=$I-DHeh=$g|TBsE++G`RwM;Cp&mTeq+cVe(g(M`kBIFD*1=s}0t^JPD${ zvj3ug@k^lR;KZ>03}1HUh}=zTu@_$EIptZpS@skHqI&@+mHDFDdL7L-;ia?_UNs8i zsim$1^Txfiy^2E)HYba1luO7d#ivhppT>-fMY{x7*w8?fO`=vp`frx%k@fSYXZ2k* zkFvY0v=vVGu#f2qXA|vw-?mXvbpj_7YhjI)S+A^Rh7C*7UToC6;4K)P(mo00v`hJf z4(q$`_})f&tu1y51PqtZrXCp1epLvVPtOVB7S|-G@}uW)d)#^7{@Ms7G9%lTQv#0W zW&=sY;R*aNm)YYGf%sI9I~H&+_?xiCi1>b&yR**Jp=N&^G{7iFjDaZv z5xy5L-0xNR)?F2;GeJ&eUASODs^XP(xQBatk4FS|k#j--n+(!7fyQV~Pr62zph)&G zGHl+Sq)(JsDOyF$scBeP-KNGKyKwJ&--{OhQ5^y?d;D7;TjU&g(kiNJ9SUtB6;Vq| zZcaSOj|rwob-fQ2oR+2vzSQk+O#QQ7XUi`aJ(@~|w&Kr@eD2)wMqRFBp~8-*gTC9Y z{Pql1_8O0;E0(#lBR%X%`El;bcTw{30gtD}eKswP#M@*?I^%CpO57BBY7KiBbMapm(e4j)N+bL+h|{D?oW zu=ynI>Jip0B4cDbuJe524tS=rX4k0J<{Gr)8ycv*mQ3!7V=Sp=)^8`q*d{6T$0V=x zAKWL+oJgI#@z3N+7d=D)OTqhX7Ev=SBb$g^eGp+vubb(9UpM7F5%2R?^k{z9395Tc zHF|yy`CgAxX=b~}Yo*4oA<^S+HHl?8>T3LtGanEY`K|&fb)Qb6jKA{jK<|dzsexHy zymnp;+YKbMYAv@hvBK^%>YN9K>?`{Xk)Ha^rNU1yi#7=?=@B@MzIuIcXbxX)&?+J| z+y3y)?p(%AP0I|IBI2%uE&%UFQTkNu%aUTT7ohZ5kII=TN~ znaHQo`zDDy>sV60oap6cWd_?{ZZ!tE_7B9#MXPM{6f|ZfbTP>&IiI=*g(n#+`R#8p zt13XzZbFDrPt<}yKBOuDKCApt9{Ae(qt9mJK*Sn9lm^xVs)s@KEqGg5@Ap6IF;IOA z1jxc~1?~O#tp+yM`Jw1QF!)LVbb!+YQ8)-JpcWh}qZz;f{0)An1=>Fdz!MZq(YUdq z-r-RL9N+*Oz~AJDN~6)^MkNqZ0M_6@8SMlQs0IZk*tHNP0C$TYN=dy=2!Y%(b}}MD~__ za54n4t8fW&TkO1J+PibRmp^#7N`x#?dx0u@YCEzTw>-~*CKU6Eev1%;viwuYQe;H?$LsH7{FM(-T`To5Cof1IA9zXOtJPCjKkC(Fqra?6& z+UCsJJOx0$k6PNIM}MJ|K{X`|D-h!>P2kxXYApBvP(HqjK*brVfb}wJu}Oh-a7YN> zrR=gGI`1!f&140QT>Gbz+i>t%codMo`m2}?@r$W*zz@ZTV|-zG_2hgzpXIk|EN8_E zgFwc?jeqq*fhT!^0+7QEr@p%KCqKGXA4LuS5u6C7|K!LEo^fbm=^7Al;5is9*coV& zUkJ~Gg@JUy{SdW0`69odKnXY`gtM=!H~&GQx?uebwIp_qVm(5If7A9Xl(VgUb`a=; zYDzRENx%yfsNgpY|K0j$^L1zQu9Cn6DA2(-@iS3J!`X(Ww@Opc(4arQDujSQ{FxvS z<_qb+lSITmo<>{+jE_9xC#rmmch6AFfHpY9hNJoZCrV5G48;I+ zgD5zRQZ2`Ad%;wWE4nz`d?72Gan`) z-tY4mb&9Ga{lWqyPywhq3@;NA`{6bw74RG!3c?;}-T>-Ai4x}Y{%nE{I0c8;@F1NZ zbN}@GI`LsQ67K@2wjjg62Q9W1BLG$KN=$akTa1Y1QNrW^#z7`FoZ;=Y?cw6{V|nH|K7bEH1re*pfI^YSE-f%z0rWr}HoRG_ zGgRfnd4p+05^2O_e0rSloeol$!}6CC1*W$sI!SC|)mw64{EWV6Rfbbs^ox#;7e1;E z5TFY{DPUYU&A+h7jAkl857c49KawU@Ub4uHB#0#H(P9*_Z88S+5M06I{C4Nq*FUYkDOB?wUvY{7Pb%?oUR zZb@LV)7-#Q5XJx(m~o%}4TG@+Dgl+Cni6)h%MFa20eocoTYdu&3c*SmslsjH^g!BW z&2;!V;KV>#yCokY{u>QrdaeZMgKA2&5JkWX6d2)Y1uU8~zjJf} zb2QsKj6Tm1eOn*2#&rN%O95lWh7&EsF#HAs+@OjErsd27sDY9!3^!N_NCYKHbo4Ng zCdt4HCBLvSqYfEd!BEZ)t=pO4p9{dY{PRQbr}0qTs`HxXym+b)`FQVe3-P+RT&QD} z>@!QD^E%R-#?7naQ2D(YLWe*&s33n`phI5s0D71L;EE(81fT?PoG&`en-S-&Df+VJ zUh|tu>_#Bz%t4qd>B2P z!#46fR%JsPjh7F&@t+VtAP2rs$h8ZxQh)wM<%WB!Mdz?oo|DAD1bdCig7d(1c%Xj= z+0f4e6odX)Fp@dO|4j{mVuQ6s&mI8lNMi-o5fB9x$}qe+9v~EyyFP87$+euXU zD1Tfm-(SV+Kh#Dy_OotK7?7V;|E2>gv{eLfaX}xjf)gHq9h8{hT-Yudkn_f;d+e;J@i>7fuob-ePd22to}gI0HoohbSZH zZAQFMz~-12N&;{ap!PY|RqZc-aQz@oA5>GqUbyfANKm>8SJumE{SBaR1-+?fOjV1uAlPC}Gbyi{I55tOdMuY4fw_zk$Ka$p-fo5F9Cr-gJBS&3vMLO>9($Xyid5fdG%dfIPIN`{{P;(v#MtA z_h%d!_ylHvni!Q;^ARr~3QDx_TalF4x6ijD;03B^U?(bk002rdcP>1qS>iH;@PhmJ tOun<|f4N5;f`5C*_&nSfU4ORMiHR?PcfJtFL-03?5dyhH#t-iI{{dx2(47DP diff --git a/Misc/py32f002axx.svd b/Misc/SVD/py32f002axx.svd similarity index 96% rename from Misc/py32f002axx.svd rename to Misc/SVD/py32f002axx.svd index 1679653..9db4822 100644 --- a/Misc/py32f002axx.svd +++ b/Misc/SVD/py32f002axx.svd @@ -1,7707 +1,7978 @@ - - - - Puya - Puya - PY32F0xx_DFP - - PY32F0 - 1.0.0 - Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. - - - - CM0+ - r0p1 - little - false - false - 4 - false - - - - 8 - 32 - 32 - read-write - 0x00000000 - 0xFFFFFFFF - - - ADC - Analog to Digital Converter - ADC - 0x40012400 - - 0x0 - 0x400 - registers - - - ADC - ADC Interrupt through EXTI Lines 17 and 18 - 12 - - - - ISR - ISR - ADC interrupt and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - AWD - ADC analog watchdog flag - 7 - 1 - - - OVR - ADC group regular overrun - flag - 4 - 1 - - - EOSEQ - ADC group regular end of sequence - conversions flag - 3 - 1 - - - EOC - ADC group regular end of unitary - conversion flag - 2 - 1 - - - EOSMP - ADC group regular end of sampling - flag - 1 - 1 - - - - - IER - IER - ADC interrupt enable register - 0x4 - 0x20 - read-write - 0x00000000 - - - AWDIE - ADC analog watchdog - interrupt - 7 - 1 - - - OVRIE - ADC group regular overrun - interrupt - 4 - 1 - - - EOSEQIE - ADC group regular end of sequence - conversions interrupt - 3 - 1 - - - EOCIE - ADC group regular end of unitary - conversion interrupt - 2 - 1 - - - EOSMPIE - ADC group regular end of sampling - interrupt - 1 - 1 - - - - - CR - CR - ADC control register - 0x8 - 0x20 - read-write - 0x00000000 - - - ADCAL - ADC group regular conversion - calibration - 31 - 1 - - - ADSTP - ADC group regular conversion - stop - 4 - 1 - - - ADSTART - ADC group regular conversion - start - 2 - 1 - - - ADEN - ADC enable - 0 - 1 - - - - - CFGR1 - CFGR1 - ADC configuration register 1 - 0xC - 0x20 - read-write - 0x00000000 - - - AWDCH - ADC analog watchdog monitored channel - selection - 26 - 4 - - - AWDEN - ADC analog watchdog enable on scope - ADC group regular - 23 - 1 - - - AWDSGL - ADC analog watchdog monitoring a - single channel or all channels - 22 - 1 - - - DISCEN - ADC group regular sequencer - discontinuous mode - 16 - 1 - - - WAIT - Wait conversion mode - 14 - 1 - - - CONT - ADC group regular continuous conversion - mode - 13 - 1 - - - OVRMOD - ADC group regular overrun - configuration - 12 - 1 - - - EXTEN - ADC group regular external trigger - polarity - 10 - 2 - - - EXTSEL - ADC group regular external trigger - source - 6 - 3 - - - ALIGN - ADC data alignement - 5 - 1 - - - RESSEL - ADC data resolution - 3 - 2 - - - SCANDIR - Scan sequence direction - 2 - 1 - - - - - CFGR2 - CFGR2 - ADC configuration register 2 - 0x10 - 0x20 - read-write - 0x00000000 - - - CKMODE - ADC clock mode - 28 - 4 - - - - - SMPR - SMPR - ADC sampling time register - 0x14 - 0x20 - read-write - 0x00000000 - - - SMP - Sampling time selection - 0 - 3 - - - - - TR - TR - ADC analog watchdog 1 threshold register - 0x20 - 0x20 - read-write - 0x0FFF0000 - - - HT - ADC analog watchdog threshold - high - 16 - 12 - - - LT - ADC analog watchdog threshold - low - 0 - 12 - - - - - CHSELR - CHSELR - ADC group regular sequencer register - 0x28 - 0x20 - read-write - 0x0FFF0000 - - - CHSEL12 - Channel-12 selection - 12 - 1 - - - CHSEL11 - Channel-11 selection - 11 - 1 - - - CHSEL9 - Channel-9 selection - 9 - 1 - - - CHSEL8 - Channel-8 selection - 8 - 1 - - - CHSEL7 - Channel-7 selection - 7 - 1 - - - CHSEL6 - Channel-6 selection - 6 - 1 - - - CHSEL5 - Channel-5 selection - 5 - 1 - - - CHSEL4 - Channel-4 selection - 4 - 1 - - - CHSEL3 - Channel-3 selection - 3 - 1 - - - CHSEL2 - Channel-2 selection - 2 - 1 - - - CHSEL1 - Channel-1 selection - 1 - 1 - - - CHSEL0 - Channel-0 selection - 0 - 1 - - - - - DR - DR - ADC group regular data register - 0x40 - 0x20 - read-only - 0x00000000 - - - DATA - ADC group regular conversion - data - 0 - 16 - - - - - CCSR - CCSR - ADC calibration configuration and status register - 0x44 - 0x20 - read-write - 0x00000000 - - - CALON - Calibration flag - 31 - 1 - read-only - - - CALFAIL - Calibration fail flag - 30 - 1 - - - CALSET - Calibration factor selection - 15 - 1 - - - CALSMP - Calibration sample time selection - 12 - 2 - - - CALSEL - Calibration contents selection - 11 - 1 - - - - - CALRR1 - CALRR1 - ADC calibration result register 1 - 0x48 - 0x20 - read-only - 0x00000000 - - - CALBOUT - offset result - 16 - 7 - - - CALC5OUT - C5 result - 8 - 8 - - - CALC4OUT - C4 result - 0 - 8 - - - - - CALRR2 - CALRR2 - ADC calibration result register 2 - 0x4C - 0x20 - read-only - 0x00000000 - - - CALC3OUT - C3 result - 24 - 8 - - - CALC2OUT - C2 result - 16 - 8 - - - CALC1OUT - C1 result - 8 - 8 - - - CALC0OUT - C0 result - 0 - 8 - - - - - CALFIR1 - CALFIR1 - ADC calibration factor input register 1 - 0x50 - 0x20 - read-write - 0x00000000 - - - CALBIO - Calibration offset factor input - 16 - 7 - - - CALC5IO - Calibration C5 factor input - 8 - 8 - - - CALC4IO - Calibration C4 factor input - 0 - 8 - - - - - CALFIR2 - CALFIR2 - ADC calibration factor input register 2 - 0x54 - 0x20 - read-write - 0x00000000 - - - CALC3IO - Calibration C3 factor input - 24 - 8 - - - CALC2IO - Calibration C2 factor input - 16 - 8 - - - CALC1IO - Calibration C1 factor input - 8 - 8 - - - CALC0IO - Calibration C0 factor input - 0 - 8 - - - - - CCR - CCR - ADC common configuration register - 0x308 - 0x20 - read-write - 0x00000000 - - - TSEN - Temperature sensor enable - 23 - 1 - - - VREFEN - VREFINT enable - 22 - 1 - - - - - - - RCC - Reset and clock control - RCC - 0x40021000 - - 0x0 - 0x400 - registers - - - RCC - RCC global Interrupt - 4 - - - - CR - CR - Clock control register - 0x0 - 0x20 - read-write - 0x00000100 - - - CSSON - Clock security system - enable - 19 - 1 - - - HSEBYP - HSE crystal oscillator - bypass - 18 - 1 - - - HSERDY - HSE clock ready flag - 17 - 1 - - - HSEON - HSE clock enable - 16 - 1 - - - HSIDIV - HSI16 clock division - factor - 11 - 3 - - - HSIRDY - HSI16 clock ready flag - 10 - 1 - - - HSIKERON - HSI16 always enable for peripheral - kernels - 9 - 1 - - - HSION - HSI16 clock enable - 8 - 1 - - - - - ICSCR - ICSCR - Internal clock sources calibration - register - 0x4 - 0x20 - 0x10000000 - - - LSI_STARTUP - LSI startup time - 26 - 2 - read-write - - - LSI_TRIM - LSI clock trimming - 16 - 9 - read-write - - - HSI_FS - HSI frequency selection - 13 - 3 - read-write - - - HSI_TRIM - HSI clock trimming - 0 - 13 - read-write - - - - - CFGR - CFGR - Clock configuration register - 0x8 - 0x20 - 0x00000000 - - - MCOPRE - Microcontroller clock output - prescaler - 28 - 3 - read-write - - - MCOSEL - Microcontroller clock - output - 24 - 3 - read-write - - - PPRE - APB prescaler - 12 - 3 - read-write - - - HPRE - AHB prescaler - 8 - 4 - read-write - - - SWS - System clock switch status - 3 - 3 - read-only - - - SW - System clock switch - 0 - 3 - read-write - - - - - ECSCR - ECSCR - External clock source control register - 0x10 - 0x20 - 0x00000000 - - - HSE_FREQ - HSE clock freqency selection - 2 - 2 - read-write - - - - - CIER - CIER - Clock interrupt enable - register - 0x18 - 0x20 - read-write - 0x00000000 - - - HSERDYIE - HSE ready interrupt enable - 4 - 1 - - - HSIRDYIE - HSI ready interrupt enable - 3 - 1 - - - LSIRDYIE - LSI ready interrupt enable - 0 - 1 - - - - - CIFR - CIFR - Clock interrupt flag register - 0x1C - 0x20 - read-only - 0x00000000 - - - CSSF - HSE clock secure system interrupt flag - 8 - 1 - - - HSERDYF - HSE ready interrupt flag - 4 - 1 - - - HSIRDYF - HSI ready interrupt flag - 3 - 1 - - - LSIRDYF - LSI ready interrupt flag - 0 - 1 - - - - - CICR - CICR - Clock interrupt clear register - 0x20 - 0x20 - write-only - 0x00000000 - - - CSSC - clock secure system interrupt flag clear - 8 - 1 - - - HSERDYC - HSE ready interrupt clear - 4 - 1 - - - HSIRDYC - HSI ready interrupt clear - 3 - 1 - - - LSIRDYC - LSI ready interrupt clear - 0 - 1 - - - - - IOPRSTR - IOPRSTR - GPIO reset register - 0x24 - 0x20 - read-write - 0x00000000 - - - GPIOFRST - I/O port F reset - 5 - 1 - - - GPIOBRST - I/O port B reset - 1 - 1 - - - GPIOARST - I/O port A reset - 0 - 1 - - - - - AHBRSTR - AHBRSTR - AHB peripheral reset register - 0x28 - 0x20 - read-write - 0x00000000 - - - CRCRST - CRC reset - 12 - 1 - - - - - APBRSTR1 - APBRSTR1 - APB peripheral reset register - 1 - 0x2C - 0x20 - read-write - 0x00000000 - - - LPTIMRST - Low Power Timer reset - 31 - 1 - - - PWRRST - Power interface reset - 28 - 1 - - - DBGRST - Debug support reset - 27 - 1 - - - I2CRST - I2C reset - 21 - 1 - - - - - APBRSTR2 - APBRSTR2 - APB peripheral reset register - 2 - 0x30 - 0x20 - read-write - 0x00000000 - - - ADCRST - ADC reset - 20 - 1 - - - TIM16RST - TIM16 timer reset - 17 - 1 - - - USART1RST - USART1 reset - 14 - 1 - - - SPI1RST - SPI1 reset - 12 - 1 - - - TIM1RST - TIM1 timer reset - 11 - 1 - - - SYSCFGRST - SYSCFG and COMP - reset - 0 - 1 - - - - - IOPENR - IOPENR - GPIO clock enable register - 0x34 - 0x20 - read-write - 0x00000000 - - - GPIOFEN - I/O port F clock enable - 5 - 1 - - - GPIOBEN - I/O port B clock enable - 1 - 1 - - - GPIOAEN - I/O port A clock enable - 0 - 1 - - - - - AHBENR - AHBENR - AHB peripheral clock enable - register - 0x38 - 0x20 - read-write - 0x00000000 - - - CRCEN - CRC clock enable - 12 - 1 - - - SRAMEN - SRAM memory interface clock - enable - 9 - 1 - - - FLASHEN - Flash memory interface clock - enable - 8 - 1 - - - - - APBENR1 - APBENR1 - APB peripheral clock enable register - 1 - 0x3C - 0x20 - read-write - 0x00000000 - - - LPTIMEN - LPTIM clock enable - 31 - 1 - - - PWREN - Power interface clock - enable - 28 - 1 - - - DBGEN - Debug support clock enable - 27 - 1 - - - I2CEN - I2C clock enable - 21 - 1 - - - - - APBENR2 - APBENR2 - APB peripheral clock enable register - 2 - 0x40 - 0x20 - read-write - 0x00000000 - - - ADCEN - ADC clock enable - 20 - 1 - - - TIM16EN - TIM16 timer clock enable - 17 - 1 - - - USART1EN - USART1 clock enable - 14 - 1 - - - SPI1EN - SPI1 clock enable - 12 - 1 - - - TIM1EN - TIM1 timer clock enable - 11 - 1 - - - SYSCFGEN - SYSCFG, COMP and VREFBUF clock - enable - 0 - 1 - - - - - CCIPR - CCIPR - Peripherals independent clock configuration - register - 0x54 - 0x20 - read-write - 0x00000000 - - - LPTIM1SEL - LPTIM1 clock source - selection - 18 - 2 - - - - - CSR - CSR - Control/status register - 0x60 - 0x20 - read-write - 0x00000000 - - - IWDGRSTF - Independent window watchdog reset - flag - 29 - 1 - - - SFTRSTF - Software reset flag - 28 - 1 - - - PWRRSTF - BOR or POR/PDR flag - 27 - 1 - - - PINRSTF - Pin reset flag - 26 - 1 - - - OBLRSTF - Option byte loader reset - flag - 25 - 1 - - - RMVF - Remove reset flags - 23 - 1 - - - LSIRDY - LSI oscillator ready - 1 - 1 - - - LSION - LSI oscillator enable - 0 - 1 - - - - - - - GPIOA - General-purpose I/Os - GPIO - 0x50000000 - - 0x0 - 0x400 - registers - - - - MODER - MODER - GPIO port mode register - 0x0 - 0x20 - read-write - 0xEBFFFFFF - - - MODE15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - MODE14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - MODE13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - MODE12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - MODE11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - MODE10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - MODE9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - MODE8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - MODE7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - MODE6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - MODE5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - MODE4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - MODE3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - MODE2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - MODE1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - MODE0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - OTYPER - OTYPER - GPIO port output type register - 0x4 - 0x20 - read-write - 0x00000000 - - - OT15 - Port x configuration bits (y = - 0..15) - 15 - 1 - - - OT14 - Port x configuration bits (y = - 0..15) - 14 - 1 - - - OT13 - Port x configuration bits (y = - 0..15) - 13 - 1 - - - OT12 - Port x configuration bits (y = - 0..15) - 12 - 1 - - - OT11 - Port x configuration bits (y = - 0..15) - 11 - 1 - - - OT10 - Port x configuration bits (y = - 0..15) - 10 - 1 - - - OT9 - Port x configuration bits (y = - 0..15) - 9 - 1 - - - OT8 - Port x configuration bits (y = - 0..15) - 8 - 1 - - - OT7 - Port x configuration bits (y = - 0..15) - 7 - 1 - - - OT6 - Port x configuration bits (y = - 0..15) - 6 - 1 - - - OT5 - Port x configuration bits (y = - 0..15) - 5 - 1 - - - OT4 - Port x configuration bits (y = - 0..15) - 4 - 1 - - - OT3 - Port x configuration bits (y = - 0..15) - 3 - 1 - - - OT2 - Port x configuration bits (y = - 0..15) - 2 - 1 - - - OT1 - Port x configuration bits (y = - 0..15) - 1 - 1 - - - OT0 - Port x configuration bits (y = - 0..15) - 0 - 1 - - - - - OSPEEDR - OSPEEDR - GPIO port output speed - register - 0x8 - 0x20 - read-write - 0x0C000000 - - - OSPEED15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - OSPEED14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - OSPEED13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - OSPEED12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - OSPEED11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - OSPEED10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - OSPEED9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - OSPEED8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - OSPEED7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - OSPEED6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - OSPEED5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - OSPEED4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - OSPEED3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - OSPEED2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - OSPEED1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - OSPEED0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - PUPDR - PUPDR - GPIO port pull-up/pull-down - register - 0xC - 0x20 - read-write - 0x24000000 - - - PUPD15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - PUPD14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - PUPD13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - PUPD12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - PUPD11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - PUPD10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - PUPD9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - PUPD8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - PUPD7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - PUPD6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - PUPD5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - PUPD4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - PUPD3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - PUPD2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - PUPD1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - PUPD0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - IDR - IDR - GPIO port input data register - 0x10 - 0x20 - read-only - 0x00000000 - - - ID15 - Port input data (y = - 0..15) - 15 - 1 - - - ID14 - Port input data (y = - 0..15) - 14 - 1 - - - ID13 - Port input data (y = - 0..15) - 13 - 1 - - - ID12 - Port input data (y = - 0..15) - 12 - 1 - - - ID11 - Port input data (y = - 0..15) - 11 - 1 - - - ID10 - Port input data (y = - 0..15) - 10 - 1 - - - ID9 - Port input data (y = - 0..15) - 9 - 1 - - - ID8 - Port input data (y = - 0..15) - 8 - 1 - - - ID7 - Port input data (y = - 0..15) - 7 - 1 - - - ID6 - Port input data (y = - 0..15) - 6 - 1 - - - ID5 - Port input data (y = - 0..15) - 5 - 1 - - - ID4 - Port input data (y = - 0..15) - 4 - 1 - - - ID3 - Port input data (y = - 0..15) - 3 - 1 - - - ID2 - Port input data (y = - 0..15) - 2 - 1 - - - ID1 - Port input data (y = - 0..15) - 1 - 1 - - - ID0 - Port input data (y = - 0..15) - 0 - 1 - - - - - ODR - ODR - GPIO port output data register - 0x14 - 0x20 - read-write - 0x00000000 - - - OD15 - Port output data (y = - 0..15) - 15 - 1 - - - OD14 - Port output data (y = - 0..15) - 14 - 1 - - - OD13 - Port output data (y = - 0..15) - 13 - 1 - - - OD12 - Port output data (y = - 0..15) - 12 - 1 - - - OD11 - Port output data (y = - 0..15) - 11 - 1 - - - OD10 - Port output data (y = - 0..15) - 10 - 1 - - - OD9 - Port output data (y = - 0..15) - 9 - 1 - - - OD8 - Port output data (y = - 0..15) - 8 - 1 - - - OD7 - Port output data (y = - 0..15) - 7 - 1 - - - OD6 - Port output data (y = - 0..15) - 6 - 1 - - - OD5 - Port output data (y = - 0..15) - 5 - 1 - - - OD4 - Port output data (y = - 0..15) - 4 - 1 - - - OD3 - Port output data (y = - 0..15) - 3 - 1 - - - OD2 - Port output data (y = - 0..15) - 2 - 1 - - - OD1 - Port output data (y = - 0..15) - 1 - 1 - - - OD0 - Port output data (y = - 0..15) - 0 - 1 - - - - - BSRR - BSRR - GPIO port bit set/reset - register - 0x18 - 0x20 - write-only - 0x00000000 - - - BR15 - Port x reset bit y (y = - 0..15) - 31 - 1 - - - BR14 - Port x reset bit y (y = - 0..15) - 30 - 1 - - - BR13 - Port x reset bit y (y = - 0..15) - 29 - 1 - - - BR12 - Port x reset bit y (y = - 0..15) - 28 - 1 - - - BR11 - Port x reset bit y (y = - 0..15) - 27 - 1 - - - BR10 - Port x reset bit y (y = - 0..15) - 26 - 1 - - - BR9 - Port x reset bit y (y = - 0..15) - 25 - 1 - - - BR8 - Port x reset bit y (y = - 0..15) - 24 - 1 - - - BR7 - Port x reset bit y (y = - 0..15) - 23 - 1 - - - BR6 - Port x reset bit y (y = - 0..15) - 22 - 1 - - - BR5 - Port x reset bit y (y = - 0..15) - 21 - 1 - - - BR4 - Port x reset bit y (y = - 0..15) - 20 - 1 - - - BR3 - Port x reset bit y (y = - 0..15) - 19 - 1 - - - BR2 - Port x reset bit y (y = - 0..15) - 18 - 1 - - - BR1 - Port x reset bit y (y = - 0..15) - 17 - 1 - - - BR0 - Port x set bit y (y= - 0..15) - 16 - 1 - - - BS15 - Port x set bit y (y= - 0..15) - 15 - 1 - - - BS14 - Port x set bit y (y= - 0..15) - 14 - 1 - - - BS13 - Port x set bit y (y= - 0..15) - 13 - 1 - - - BS12 - Port x set bit y (y= - 0..15) - 12 - 1 - - - BS11 - Port x set bit y (y= - 0..15) - 11 - 1 - - - BS10 - Port x set bit y (y= - 0..15) - 10 - 1 - - - BS9 - Port x set bit y (y= - 0..15) - 9 - 1 - - - BS8 - Port x set bit y (y= - 0..15) - 8 - 1 - - - BS7 - Port x set bit y (y= - 0..15) - 7 - 1 - - - BS6 - Port x set bit y (y= - 0..15) - 6 - 1 - - - BS5 - Port x set bit y (y= - 0..15) - 5 - 1 - - - BS4 - Port x set bit y (y= - 0..15) - 4 - 1 - - - BS3 - Port x set bit y (y= - 0..15) - 3 - 1 - - - BS2 - Port x set bit y (y= - 0..15) - 2 - 1 - - - BS1 - Port x set bit y (y= - 0..15) - 1 - 1 - - - BS0 - Port x set bit y (y= - 0..15) - 0 - 1 - - - - - LCKR - LCKR - GPIO port configuration lock - register - 0x1C - 0x20 - read-write - 0x00000000 - - - LCKK - Port x lock bit y (y= - 0..15) - 16 - 1 - - - LCK15 - Port x lock bit y (y= - 0..15) - 15 - 1 - - - LCK14 - Port x lock bit y (y= - 0..15) - 14 - 1 - - - LCK13 - Port x lock bit y (y= - 0..15) - 13 - 1 - - - LCK12 - Port x lock bit y (y= - 0..15) - 12 - 1 - - - LCK11 - Port x lock bit y (y= - 0..15) - 11 - 1 - - - LCK10 - Port x lock bit y (y= - 0..15) - 10 - 1 - - - LCK9 - Port x lock bit y (y= - 0..15) - 9 - 1 - - - LCK8 - Port x lock bit y (y= - 0..15) - 8 - 1 - - - LCK7 - Port x lock bit y (y= - 0..15) - 7 - 1 - - - LCK6 - Port x lock bit y (y= - 0..15) - 6 - 1 - - - LCK5 - Port x lock bit y (y= - 0..15) - 5 - 1 - - - LCK4 - Port x lock bit y (y= - 0..15) - 4 - 1 - - - LCK3 - Port x lock bit y (y= - 0..15) - 3 - 1 - - - LCK2 - Port x lock bit y (y= - 0..15) - 2 - 1 - - - LCK1 - Port x lock bit y (y= - 0..15) - 1 - 1 - - - LCK0 - Port x lock bit y (y= - 0..15) - 0 - 1 - - - - - AFRL - AFRL - GPIO alternate function low - register - 0x20 - 0x20 - read-write - 0x00000000 - - - AFSEL7 - Alternate function selection for port x - bit y (y = 0..7) - 28 - 4 - - - AFSEL6 - Alternate function selection for port x - bit y (y = 0..7) - 24 - 4 - - - AFSEL5 - Alternate function selection for port x - bit y (y = 0..7) - 20 - 4 - - - AFSEL4 - Alternate function selection for port x - bit y (y = 0..7) - 16 - 4 - - - AFSEL3 - Alternate function selection for port x - bit y (y = 0..7) - 12 - 4 - - - AFSEL2 - Alternate function selection for port x - bit y (y = 0..7) - 8 - 4 - - - AFSEL1 - Alternate function selection for port x - bit y (y = 0..7) - 4 - 4 - - - AFSEL0 - Alternate function selection for port x - bit y (y = 0..7) - 0 - 4 - - - - - AFRH - AFRH - GPIO alternate function high - register - 0x24 - 0x20 - read-write - 0x00000000 - - - AFSEL15 - Alternate function selection for port x - bit y (y = 8..15) - 28 - 4 - - - AFSEL14 - Alternate function selection for port x - bit y (y = 8..15) - 24 - 4 - - - AFSEL13 - Alternate function selection for port x - bit y (y = 8..15) - 20 - 4 - - - AFSEL12 - Alternate function selection for port x - bit y (y = 8..15) - 16 - 4 - - - AFSEL11 - Alternate function selection for port x - bit y (y = 8..15) - 12 - 4 - - - AFSEL10 - Alternate function selection for port x - bit y (y = 8..15) - 8 - 4 - - - AFSEL9 - Alternate function selection for port x - bit y (y = 8..15) - 4 - 4 - - - AFSEL8 - Alternate function selection for port x - bit y (y = 8..15) - 0 - 4 - - - - - BRR - BRR - port bit reset register - 0x28 - 0x20 - write-only - 0x00000000 - - - BR15 - Port Reset bit - 15 - 1 - - - BR14 - Port Reset bit - 14 - 1 - - - BR13 - Port Reset bit - 13 - 1 - - - BR12 - Port Reset bit - 12 - 1 - - - BR11 - Port Reset bit - 11 - 1 - - - BR10 - Port Reset bit - 10 - 1 - - - BR9 - Port Reset bit - 9 - 1 - - - BR8 - Port Reset bit - 8 - 1 - - - BR7 - Port Reset bit - 7 - 1 - - - BR6 - Port Reset bit - 6 - 1 - - - BR5 - Port Reset bit - 5 - 1 - - - BR4 - Port Reset bit - 4 - 1 - - - BR3 - Port Reset bit - 3 - 1 - - - BR2 - Port Reset bit - 2 - 1 - - - BR1 - Port Reset bit - 1 - 1 - - - BR0 - Port Reset bit - 0 - 1 - - - - - - - GPIOB - General-purpose I/Os - GPIO - 0x50000400 - - 0x0 - 0x400 - registers - - - - MODER - MODER - GPIO port mode register - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - MODE8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - MODE7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - MODE6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - MODE5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - MODE4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - MODE3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - MODE2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - MODE1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - MODE0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - OTYPER - OTYPER - GPIO port output type register - 0x4 - 0x20 - read-write - 0x00000000 - - - OT8 - Port x configuration bits (y = - 0..15) - 8 - 1 - - - OT7 - Port x configuration bits (y = - 0..15) - 7 - 1 - - - OT6 - Port x configuration bits (y = - 0..15) - 6 - 1 - - - OT5 - Port x configuration bits (y = - 0..15) - 5 - 1 - - - OT4 - Port x configuration bits (y = - 0..15) - 4 - 1 - - - OT3 - Port x configuration bits (y = - 0..15) - 3 - 1 - - - OT2 - Port x configuration bits (y = - 0..15) - 2 - 1 - - - OT1 - Port x configuration bits (y = - 0..15) - 1 - 1 - - - OT0 - Port x configuration bits (y = - 0..15) - 0 - 1 - - - - - OSPEEDR - OSPEEDR - GPIO port output speed - register - 0x8 - 0x20 - read-write - 0x00000000 - - - OSPEED8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - OSPEED7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - OSPEED6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - OSPEED5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - OSPEED4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - OSPEED3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - OSPEED2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - OSPEED1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - OSPEED0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - PUPDR - PUPDR - GPIO port pull-up/pull-down - register - 0xC - 0x20 - read-write - 0x00000000 - - - PUPD8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - PUPD7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - PUPD6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - PUPD5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - PUPD4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - PUPD3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - PUPD2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - PUPD1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - PUPD0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - IDR - IDR - GPIO port input data register - 0x10 - 0x20 - read-only - 0x00000000 - - - ID8 - Port input data (y = - 0..15) - 8 - 1 - - - ID7 - Port input data (y = - 0..15) - 7 - 1 - - - ID6 - Port input data (y = - 0..15) - 6 - 1 - - - ID5 - Port input data (y = - 0..15) - 5 - 1 - - - ID4 - Port input data (y = - 0..15) - 4 - 1 - - - ID3 - Port input data (y = - 0..15) - 3 - 1 - - - ID2 - Port input data (y = - 0..15) - 2 - 1 - - - ID1 - Port input data (y = - 0..15) - 1 - 1 - - - ID0 - Port input data (y = - 0..15) - 0 - 1 - - - - - ODR - ODR - GPIO port output data register - 0x14 - 0x20 - read-write - 0x00000000 - - - OD8 - Port output data (y = - 0..15) - 8 - 1 - - - OD7 - Port output data (y = - 0..15) - 7 - 1 - - - OD6 - Port output data (y = - 0..15) - 6 - 1 - - - OD5 - Port output data (y = - 0..15) - 5 - 1 - - - OD4 - Port output data (y = - 0..15) - 4 - 1 - - - OD3 - Port output data (y = - 0..15) - 3 - 1 - - - OD2 - Port output data (y = - 0..15) - 2 - 1 - - - OD1 - Port output data (y = - 0..15) - 1 - 1 - - - OD0 - Port output data (y = - 0..15) - 0 - 1 - - - - - BSRR - BSRR - GPIO port bit set/reset - register - 0x18 - 0x20 - write-only - 0x00000000 - - - BR8 - Port x reset bit y (y = - 0..15) - 24 - 1 - - - BR7 - Port x reset bit y (y = - 0..15) - 23 - 1 - - - BR6 - Port x reset bit y (y = - 0..15) - 22 - 1 - - - BR5 - Port x reset bit y (y = - 0..15) - 21 - 1 - - - BR4 - Port x reset bit y (y = - 0..15) - 20 - 1 - - - BR3 - Port x reset bit y (y = - 0..15) - 19 - 1 - - - BR2 - Port x reset bit y (y = - 0..15) - 18 - 1 - - - BR1 - Port x reset bit y (y = - 0..15) - 17 - 1 - - - BR0 - Port x set bit y (y= - 0..15) - 16 - 1 - - - BS8 - Port x set bit y (y= - 0..15) - 8 - 1 - - - BS7 - Port x set bit y (y= - 0..15) - 7 - 1 - - - BS6 - Port x set bit y (y= - 0..15) - 6 - 1 - - - BS5 - Port x set bit y (y= - 0..15) - 5 - 1 - - - BS4 - Port x set bit y (y= - 0..15) - 4 - 1 - - - BS3 - Port x set bit y (y= - 0..15) - 3 - 1 - - - BS2 - Port x set bit y (y= - 0..15) - 2 - 1 - - - BS1 - Port x set bit y (y= - 0..15) - 1 - 1 - - - BS0 - Port x set bit y (y= - 0..15) - 0 - 1 - - - - - LCKR - LCKR - GPIO port configuration lock - register - 0x1C - 0x20 - read-write - 0x00000000 - - - LCKK - Port x lock bit y (y= - 0..15) - 16 - 1 - - - LCK8 - Port x lock bit y (y= - 0..15) - 8 - 1 - - - LCK7 - Port x lock bit y (y= - 0..15) - 7 - 1 - - - LCK6 - Port x lock bit y (y= - 0..15) - 6 - 1 - - - LCK5 - Port x lock bit y (y= - 0..15) - 5 - 1 - - - LCK4 - Port x lock bit y (y= - 0..15) - 4 - 1 - - - LCK3 - Port x lock bit y (y= - 0..15) - 3 - 1 - - - LCK2 - Port x lock bit y (y= - 0..15) - 2 - 1 - - - LCK1 - Port x lock bit y (y= - 0..15) - 1 - 1 - - - LCK0 - Port x lock bit y (y= - 0..15) - 0 - 1 - - - - - AFRL - AFRL - GPIO alternate function low - register - 0x20 - 0x20 - read-write - 0x00000000 - - - AFSEL7 - Alternate function selection for port x - bit y (y = 0..7) - 28 - 4 - - - AFSEL6 - Alternate function selection for port x - bit y (y = 0..7) - 24 - 4 - - - AFSEL5 - Alternate function selection for port x - bit y (y = 0..7) - 20 - 4 - - - AFSEL4 - Alternate function selection for port x - bit y (y = 0..7) - 16 - 4 - - - AFSEL3 - Alternate function selection for port x - bit y (y = 0..7) - 12 - 4 - - - AFSEL2 - Alternate function selection for port x - bit y (y = 0..7) - 8 - 4 - - - AFSEL1 - Alternate function selection for port x - bit y (y = 0..7) - 4 - 4 - - - AFSEL0 - Alternate function selection for port x - bit y (y = 0..7) - 0 - 4 - - - - - AFRH - AFRH - GPIO alternate function high - register - 0x24 - 0x20 - read-write - 0x00000000 - - - AFSEL15 - Alternate function selection for port x - bit y (y = 8..15) - 28 - 4 - - - AFSEL14 - Alternate function selection for port x - bit y (y = 8..15) - 24 - 4 - - - AFSEL13 - Alternate function selection for port x - bit y (y = 8..15) - 20 - 4 - - - AFSEL12 - Alternate function selection for port x - bit y (y = 8..15) - 16 - 4 - - - AFSEL11 - Alternate function selection for port x - bit y (y = 8..15) - 12 - 4 - - - AFSEL10 - Alternate function selection for port x - bit y (y = 8..15) - 8 - 4 - - - AFSEL9 - Alternate function selection for port x - bit y (y = 8..15) - 4 - 4 - - - AFSEL8 - Alternate function selection for port x - bit y (y = 8..15) - 0 - 4 - - - - - BRR - BRR - port bit reset register - 0x28 - 0x20 - write-only - 0x00000000 - - - BR8 - Port Reset bit - 8 - 1 - - - BR7 - Port Reset bit - 7 - 1 - - - BR6 - Port Reset bit - 6 - 1 - - - BR5 - Port Reset bit - 5 - 1 - - - BR4 - Port Reset bit - 4 - 1 - - - BR3 - Port Reset bit - 3 - 1 - - - BR2 - Port Reset bit - 2 - 1 - - - BR1 - Port Reset bit - 1 - 1 - - - BR0 - Port Reset bit - 0 - 1 - - - - - - - GPIOF - 0x50001400 - - - EXTI - External interrupt/event - controller - EXTI - 0x40021800 - - 0x0 - 0x400 - registers - - - EXTI0_1 - EXTI Line 0 and 1 Interrupt - 5 - - - EXTI2_3 - EXTI Line 2 and 3 Interrupt - 6 - - - EXTI4_15 - EXTI Line 4 to 15 Interrupt - 7 - - - - RTSR - RTSR - EXTI rising trigger selection - register - 0x0 - 0x20 - read-write - 0x00000000 - - - RT18 - Rising trigger event configuration bit - of Configurable Event input - 18 - 1 - - - RT17 - Rising trigger event configuration bit - of Configurable Event input - 17 - 1 - - - RT16 - Rising trigger event configuration bit - of Configurable Event input - 16 - 1 - - - RT15 - Rising trigger event configuration bit - of Configurable Event input - 15 - 1 - - - RT14 - Rising trigger event configuration bit - of Configurable Event input - 14 - 1 - - - RT13 - Rising trigger event configuration bit - of Configurable Event input - 13 - 1 - - - RT12 - Rising trigger event configuration bit - of Configurable Event input - 12 - 1 - - - RT11 - Rising trigger event configuration bit - of Configurable Event input - 11 - 1 - - - RT10 - Rising trigger event configuration bit - of Configurable Event input - 10 - 1 - - - RT9 - Rising trigger event configuration bit - of Configurable Event input - 9 - 1 - - - RT8 - Rising trigger event configuration bit - of Configurable Event input - 8 - 1 - - - RT7 - Rising trigger event configuration bit - of Configurable Event input - 7 - 1 - - - RT6 - Rising trigger event configuration bit - of Configurable Event input - 6 - 1 - - - RT5 - Rising trigger event configuration bit - of Configurable Event input - 5 - 1 - - - RT4 - Rising trigger event configuration bit - of Configurable Event input - 4 - 1 - - - RT3 - Rising trigger event configuration bit - of Configurable Event input - 3 - 1 - - - RT2 - Rising trigger event configuration bit - of Configurable Event input - 2 - 1 - - - RT1 - Rising trigger event configuration bit - of Configurable Event input - 1 - 1 - - - RT0 - Rising trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - FTSR - FTSR - EXTI falling trigger selection - register - 0x4 - 0x20 - read-write - 0x00000000 - - - FT18 - Falling trigger event configuration bit - of Configurable Event input - 18 - 1 - - - FT17 - Falling trigger event configuration bit - of Configurable Event input - 17 - 1 - - - FT16 - Falling trigger event configuration bit - of Configurable Event input - 16 - 1 - - - FT15 - Falling trigger event configuration bit - of Configurable Event input - 15 - 1 - - - FT14 - Falling trigger event configuration bit - of Configurable Event input - 14 - 1 - - - FT13 - Falling trigger event configuration bit - of Configurable Event input - 13 - 1 - - - FT12 - Falling trigger event configuration bit - of Configurable Event input - 12 - 1 - - - FT11 - Falling trigger event configuration bit - of Configurable Event input - 11 - 1 - - - FT10 - Falling trigger event configuration bit - of Configurable Event input - 10 - 1 - - - FT9 - Falling trigger event configuration bit - of Configurable Event input - 9 - 1 - - - FT8 - Falling trigger event configuration bit - of Configurable Event input - 8 - 1 - - - FT7 - Falling trigger event configuration bit - of Configurable Event input - 7 - 1 - - - FT6 - Falling trigger event configuration bit - of Configurable Event input - 6 - 1 - - - FT5 - Falling trigger event configuration bit - of Configurable Event input - 5 - 1 - - - FT4 - Falling trigger event configuration bit - of Configurable Event input - 4 - 1 - - - FT3 - Falling trigger event configuration bit - of Configurable Event input - 3 - 1 - - - FT2 - Falling trigger event configuration bit - of Configurable Event input - 2 - 1 - - - FT1 - Falling trigger event configuration bit - of Configurable Event input - 1 - 1 - - - FT0 - Falling trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - SWIER - SWIER - EXTI software interrupt event - register - 0x8 - 0x20 - read-write - 0x00000000 - - - SWI18 - Rising trigger event configuration bit - of Configurable Event input - 18 - 1 - - - SWI17 - Rising trigger event configuration bit - of Configurable Event input - 17 - 1 - - - SWI16 - Rising trigger event configuration bit - of Configurable Event input - 16 - 1 - - - SWI15 - Rising trigger event configuration bit - of Configurable Event input - 15 - 1 - - - SWI14 - Rising trigger event configuration bit - of Configurable Event input - 14 - 1 - - - SWI13 - Rising trigger event configuration bit - of Configurable Event input - 13 - 1 - - - SWI12 - Rising trigger event configuration bit - of Configurable Event input - 12 - 1 - - - SWI11 - Rising trigger event configuration bit - of Configurable Event input - 11 - 1 - - - SWI10 - Rising trigger event configuration bit - of Configurable Event input - 10 - 1 - - - SWI9 - Rising trigger event configuration bit - of Configurable Event input - 9 - 1 - - - SWI8 - Rising trigger event configuration bit - of Configurable Event input - 8 - 1 - - - SWI7 - Rising trigger event configuration bit - of Configurable Event input - 7 - 1 - - - SWI6 - Rising trigger event configuration bit - of Configurable Event input - 6 - 1 - - - SWI5 - Rising trigger event configuration bit - of Configurable Event input - 5 - 1 - - - SWI4 - Rising trigger event configuration bit - of Configurable Event input - 4 - 1 - - - SWI3 - Rising trigger event configuration bit - of Configurable Event input - 3 - 1 - - - SWI2 - Rising trigger event configuration bit - of Configurable Event input - 2 - 1 - - - SWI1 - Rising trigger event configuration bit - of Configurable Event input - 1 - 1 - - - SWI0 - Rising trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - PR - PR - EXTI pending - register - 0xC - 0x20 - read-write - 0x00000000 - - - PR18 - configurable event inputs x rising edge - Pending bit. - 18 - 1 - - - PR17 - configurable event inputs x rising edge - Pending bit. - 17 - 1 - - - PR16 - configurable event inputs x rising edge - Pending bit. - 16 - 1 - - - PR15 - configurable event inputs x rising edge - Pending bit. - 15 - 1 - - - PR14 - configurable event inputs x rising edge - Pending bit. - 14 - 1 - - - PR13 - configurable event inputs x rising edge - Pending bit - 13 - 1 - - - PR12 - configurable event inputs x rising edge - Pending bit. - 12 - 1 - - - PR11 - configurable event inputs x rising edge - Pending bit. - 11 - 1 - - - PR10 - configurable event inputs x rising edge - Pending bit. - 10 - 1 - - - PR9 - configurable event inputs x rising edge - Pending bit. - 9 - 1 - - - PR8 - configurable event inputs x rising edge - Pending bit. - 8 - 1 - - - PR7 - configurable event inputs x rising edge - Pending bit. - 7 - 1 - - - PR6 - configurable event inputs x rising edge - Pending bit. - 6 - 1 - - - PR5 - configurable event inputs x rising edge - Pending bit. - 5 - 1 - - - PR4 - configurable event inputs x rising edge - Pending bit. - 4 - 1 - - - PR3 - configurable event inputs x rising edge - Pending bit. - 3 - 1 - - - PR2 - configurable event inputs x rising edge - Pending bit. - 2 - 1 - - - PR1 - configurable event inputs x rising edge - Pending bit. - 1 - 1 - - - PR0 - configurable event inputs x rising edge - Pending bit. - 0 - 1 - - - - - EXTICR1 - EXTICR1 - EXTI external interrupt selection - register - 0x60 - 0x20 - read-write - 0x00000000 - - - EXTI3 - GPIO port selection - 24 - 2 - - - EXTI2 - GPIO port selection - 16 - 2 - - - EXTI1 - GPIO port selection - 8 - 2 - - - EXTI0 - GPIO port selection - 0 - 2 - - - - - EXTICR2 - EXTICR2 - EXTI external interrupt selection - register - 0x64 - 0x20 - read-write - 0x00000000 - - - EXTI7 - GPIO port selection - 24 - 1 - - - EXTI6 - GPIO port selection - 16 - 1 - - - EXTI5 - GPIO port selection - 8 - 1 - - - EXTI4 - GPIO port selection - 0 - 2 - - - - - EXTICR3 - EXTICR3 - EXTI external interrupt selection - register - 0x68 - 0x20 - read-write - 0x00000000 - - - EXTI8 - GPIO port selection - 0 - 1 - - - - - IMR - IMR - EXTI CPU wakeup with interrupt mask - register - 0x80 - 0x20 - read-write - 0xFFF80000 - - - IM29 - CPU wakeup with interrupt mask on event - input - 29 - 1 - - - IM19 - CPU wakeup with interrupt mask on event - input - 19 - 1 - - - IM18 - CPU wakeup with interrupt mask on event - input - 18 - 1 - - - IM17 - CPU wakeup with interrupt mask on event - input - 17 - 1 - - - IM16 - CPU wakeup with interrupt mask on event - input - 16 - 1 - - - IM15 - CPU wakeup with interrupt mask on event - input - 15 - 1 - - - IM14 - CPU wakeup with interrupt mask on event - input - 14 - 1 - - - IM13 - CPU wakeup with interrupt mask on event - input - 13 - 1 - - - IM12 - CPU wakeup with interrupt mask on event - input - 12 - 1 - - - IM11 - CPU wakeup with interrupt mask on event - input - 11 - 1 - - - IM10 - CPU wakeup with interrupt mask on event - input - 10 - 1 - - - IM9 - CPU wakeup with interrupt mask on event - input - 9 - 1 - - - IM8 - CPU wakeup with interrupt mask on event - input - 8 - 1 - - - IM7 - CPU wakeup with interrupt mask on event - input - 7 - 1 - - - IM6 - CPU wakeup with interrupt mask on event - input - 6 - 1 - - - IM5 - CPU wakeup with interrupt mask on event - input - 5 - 1 - - - IM4 - CPU wakeup with interrupt mask on event - input - 4 - 1 - - - IM3 - CPU wakeup with interrupt mask on event - input - 3 - 1 - - - IM2 - CPU wakeup with interrupt mask on event - input - 2 - 1 - - - IM1 - CPU wakeup with interrupt mask on event - input - 1 - 1 - - - IM0 - CPU wakeup with interrupt mask on event - input - 0 - 1 - - - - - EMR - EMR - EXTI CPU wakeup with event mask - register - 0x84 - 0x20 - read-write - 0x00000000 - - - EM29 - CPU wakeup with event mask on event - input - 29 - 1 - - - EM19 - CPU wakeup with event mask on event - input - 19 - 1 - - - EM18 - CPU wakeup with event mask on event - input - 18 - 1 - - - EM17 - CPU wakeup with event mask on event - input - 17 - 1 - - - EM16 - CPU wakeup with event mask on event - input - 16 - 1 - - - EM15 - CPU wakeup with event mask on event - input - 15 - 1 - - - EM14 - CPU wakeup with event mask on event - input - 14 - 1 - - - EM13 - CPU wakeup with event mask on event - input - 13 - 1 - - - EM12 - CPU wakeup with event mask on event - input - 12 - 1 - - - EM11 - CPU wakeup with event mask on event - input - 11 - 1 - - - EM10 - CPU wakeup with event mask on event - input - 10 - 1 - - - EM9 - CPU wakeup with event mask on event - input - 9 - 1 - - - EM8 - CPU wakeup with event mask on event - input - 8 - 1 - - - EM7 - CPU wakeup with event mask on event - input - 7 - 1 - - - EM6 - CPU wakeup with event mask on event - input - 6 - 1 - - - EM5 - CPU wakeup with event mask on event - input - 5 - 1 - - - EM4 - CPU wakeup with event mask on event - input - 4 - 1 - - - EM3 - CPU wakeup with event mask on event - input - 3 - 1 - - - EM2 - CPU wakeup with event mask on event - input - 2 - 1 - - - EM1 - CPU wakeup with event mask on event - input - 1 - 1 - - - EM0 - CPU wakeup with event mask on event - input - 0 - 1 - - - - - - - LPTIM - Low power timer - LPTIM - 0x40007C00 - - 0x0 - 0x400 - registers - - - - ISR - ISR - Interrupt and Status Register - 0x0 - 0x20 - read-only - 0x00000000 - - - ARRM - Autoreload match - 1 - 1 - - - - - ICR - ICR - Interrupt Clear Register - 0x4 - 0x20 - write-only - 0x00000000 - - - ARRMCF - Autoreload match Clear - Flag - 1 - 1 - - - - - IER - IER - Interrupt Enable Register - 0x8 - 0x20 - read-write - 0x00000000 - - - ARRMIE - Autoreload match Interrupt - Enable - 1 - 1 - - - - - CFGR - CFGR - Configuration Register - 0xC - 0x20 - read-write - 0x00000000 - - - PRELOAD - Registers update mode - 22 - 1 - - - PRESC - Clock prescaler - 9 - 3 - - - - - CR - CR - Control Register - 0x10 - 0x20 - read-write - 0x00000000 - - - RSTARE - Reset after read enable - 4 - 1 - - - SNGSTRT - LPTIM start in single mode - 1 - 1 - - - ENABLE - LPTIM Enable - 0 - 1 - - - - - ARR - ARR - Autoreload Register - 0x18 - 0x20 - read-write - 0x00000001 - - - ARR - Auto reload value - 0 - 16 - - - - - CNT - CNT - Counter Register - 0x1C - 0x20 - read-only - 0x00000000 - - - CNT - Counter value - 0 - 16 - - - - - - - USART1 - Universal synchronous asynchronous receiver - transmitter - USART - 0x40013800 - - 0x0 - 0x400 - registers - - - USART1 - USART1 global Interrupt - 27 - - - - SR - SR - Status register - 0x0 - 0x20 - 0x00C0 - - - ABRRQ - Automate baudrate detection requeset - 12 - 1 - write-only - - - ABRE - Automate baudrate detection error flag - 11 - 1 - read-only - - - ABRF - Automate baudrate detection flag - 10 - 1 - read-only - - - CTS - CTS flag - 9 - 1 - read-write - - - TXE - Transmit data register - empty - 7 - 1 - read-only - - - TC - Transmission complete - 6 - 1 - read-write - - - RXNE - Read data register not - empty - 5 - 1 - read-write - - - IDLE - IDLE line detected - 4 - 1 - read-only - - - ORE - Overrun error - 3 - 1 - read-only - - - NE - Noise error flag - 2 - 1 - read-only - - - FE - Framing error - 1 - 1 - read-only - - - PE - Parity error - 0 - 1 - read-only - - - - - DR - DR - Data register - 0x4 - 0x20 - read-write - 0x00000000 - - - DR - Data value - 0 - 9 - - - - - BRR - BRR - Baud rate register - 0x8 - 0x20 - read-write - 0x0000 - - - DIV_Mantissa - mantissa of USARTDIV - 4 - 12 - - - DIV_Fraction - fraction of USARTDIV - 0 - 4 - - - - - CR1 - CR1 - Control register 1 - 0xC - 0x20 - read-write - 0x0000 - - - UE - USART enable - 13 - 1 - - - M - Word length - 12 - 1 - - - WAKE - Wakeup method - 11 - 1 - - - PCE - Parity control enable - 10 - 1 - - - PS - Parity selection - 9 - 1 - - - PEIE - PE interrupt enable - 8 - 1 - - - TXEIE - TXE interrupt enable - 7 - 1 - - - TCIE - Transmission complete interrupt - enable - 6 - 1 - - - RXNEIE - RXNE interrupt enable - 5 - 1 - - - IDLEIE - IDLE interrupt enable - 4 - 1 - - - TE - Transmitter enable - 3 - 1 - - - RE - Receiver enable - 2 - 1 - - - RWU - Receiver wakeup - 1 - 1 - - - SBK - Send break - 0 - 1 - - - - - CR2 - CR2 - Control register 2 - 0x10 - 0x20 - read-write - 0x0000 - - - STOP - STOP bits - 12 - 2 - - - CLKEN - Clock enable - 11 - 1 - - - CPOL - Clock polarity - 10 - 1 - - - CPHA - Clock phase - 9 - 1 - - - LBCL - Last bit clock pulse - 8 - 1 - - - ADD - Address of the USART node - 0 - 4 - - - - - CR3 - CR3 - Control register 3 - 0x14 - 0x20 - read-write - 0x0000 - - - ABRMOD - Auto baudrate mode - 13 - 2 - - - ABREN - Auto baudrate enable - 12 - 1 - - - OVER8 - Oversampling mode - 11 - 1 - - - CTSIE - CTS interrupt enable - 10 - 1 - - - CTSE - CTS enable - 9 - 1 - - - RTSE - RTS enable - 8 - 1 - - - HDSEL - Half-duplex selection - 3 - 1 - - - IRLP - IrDA low-power - 2 - 1 - - - IREN - IrDA mode enable - 1 - 1 - - - EIE - Error interrupt enable - 0 - 1 - - - - - - - IWDG - Independent watchdog - IWDG - 0x40003000 - - 0x0 - 0x400 - registers - - - - KR - KR - Key register (IWDG_KR) - 0x0 - 0x20 - write-only - 0x00000000 - - - KEY - Key value - 0 - 16 - - - - - PR - PR - Prescaler register (IWDG_PR) - 0x4 - 0x20 - read-write - 0x00000000 - - - PR - Prescaler divider - 0 - 3 - - - - - RLR - RLR - Reload register (IWDG_RLR) - 0x8 - 0x20 - read-write - 0x00000FFF - - - RL - Watchdog counter reload - value - 0 - 12 - - - - - SR - SR - Status register (IWDG_SR) - 0xC - 0x20 - read-only - 0x00000000 - - - WVU - Watchdog counter window value update - 2 - 1 - - - RVU - Watchdog counter reload value - update - 1 - 1 - - - PVU - Watchdog prescaler value - update - 0 - 1 - - - - - WINR - WINR - Window register (IWDG_SR) - 0x10 - 0x20 - read-only - 0x00000000 - - - WIN - window counter - 0 - 12 - - - - - - - TIM1 - Advanced timer - TIM - 0x40012C00 - - 0x0 - 0x400 - registers - - - TIM1_BRK_UP_TRG_COM - TIM1 Break, Update, Trigger and Commutation Interrupt - 13 - - - TIM1_CC - TIM1 Capture Compare Interrupt - 14 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Clock division - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - CMS - Center-aligned mode - selection - 5 - 2 - - - DIR - Direction - 4 - 1 - - - OPM - One-pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - OIS4 - Output Idle state 4 - 14 - 1 - - - OIS3N - Output Idle state 3 - 13 - 1 - - - OIS3 - Output Idle state 3 - 12 - 1 - - - OIS2N - Output Idle state 2 - 11 - 1 - - - OIS2 - Output Idle state 2 - 10 - 1 - - - OIS1N - Output Idle state 1 - 9 - 1 - - - OIS1 - Output Idle state 1 - 8 - 1 - - - TI1S - TI1 selection - 7 - 1 - - - MMS - Master mode selection - 4 - 3 - - - CCUS - Capture/compare control update - selection - 2 - 1 - - - CCPC - Capture/compare preloaded - control - 0 - 1 - - - - - SMCR - SMCR - slave mode control register - 0x8 - 0x20 - read-write - 0x0000 - - - ETP - External trigger polarity - 15 - 1 - - - ECE - External clock enable - 14 - 1 - - - ETPS - External trigger prescaler - 12 - 2 - - - ETF - External trigger filter - 8 - 4 - - - MSM - Master/Slave mode - 7 - 1 - - - TS - Trigger selection - 4 - 3 - - - OCCS - OCREF clear selection bit - 3 - 1 - - - SMS - Slave mode selection - 0 - 3 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - BIE - Break interrupt enable - 7 - 1 - - - TIE - Trigger interrupt enable - 6 - 1 - - - COMIE - COM interrupt enable - 5 - 1 - - - CC4IE - Capture/Compare 4 interrupt - enable - 4 - 1 - - - CC3IE - Capture/Compare 3 interrupt - enable - 3 - 1 - - - CC2IE - Capture/Compare 2 interrupt - enable - 2 - 1 - - - CC1IE - Capture/Compare 1 interrupt - enable - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC4OF - Capture/Compare 4 overcapture - flag - 12 - 1 - - - CC3OF - Capture/Compare 3 overcapture - flag - 11 - 1 - - - CC2OF - Capture/compare 2 overcapture - flag - 10 - 1 - - - CC1OF - Capture/Compare 1 overcapture - flag - 9 - 1 - - - BIF - Break interrupt flag - 7 - 1 - - - TIF - Trigger interrupt flag - 6 - 1 - - - COMIF - COM interrupt flag - 5 - 1 - - - CC4IF - Capture/Compare 4 interrupt - flag - 4 - 1 - - - CC3IF - Capture/Compare 3 interrupt - flag - 3 - 1 - - - CC2IF - Capture/Compare 2 interrupt - flag - 2 - 1 - - - CC1IF - Capture/compare 1 interrupt - flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - BG - Break generation - 7 - 1 - - - TG - Trigger generation - 6 - 1 - - - COMG - Capture/Compare control update - generation - 5 - 1 - - - CC4G - Capture/compare 4 - generation - 4 - 1 - - - CC3G - Capture/compare 3 - generation - 3 - 1 - - - CC2G - Capture/compare 2 - generation - 2 - 1 - - - CC1G - Capture/compare 1 - generation - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC2CE - Output Compare 2 clear - enable - 15 - 1 - - - OC2M - Output Compare 2 mode - 12 - 3 - - - OC2PE - Output Compare 2 preload - enable - 11 - 1 - - - OC2FE - Output Compare 2 fast - enable - 10 - 1 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - OC1CE - Output Compare 1 clear - enable - 7 - 1 - - - OC1M - Output Compare 1 mode - 4 - 3 - - - OC1PE - Output Compare 1 preload - enable - 3 - 1 - - - OC1FE - Output Compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC2F - Input capture 2 filter - 12 - 4 - - - IC2PSC - Input capture 2 prescaler - 10 - 2 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - IC1F - Input capture 1 filter - 4 - 4 - - - ICPSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR2_Output - CCMR2_Output - capture/compare mode register (output - mode) - 0x1C - 0x20 - read-write - 0x00000000 - - - OC4CE - Output compare 4 clear - enable - 15 - 1 - - - OC4M - Output compare 4 mode - 12 - 3 - - - OC4PE - Output compare 4 preload - enable - 11 - 1 - - - OC4FE - Output compare 4 fast - enable - 10 - 1 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - OC3CE - Output compare 3 clear - enable - 7 - 1 - - - OC3M - Output compare 3 mode - 4 - 3 - - - OC3PE - Output compare 3 preload - enable - 3 - 1 - - - OC3FE - Output compare 3 fast - enable - 2 - 1 - - - CC3S - Capture/Compare 3 - selection - 0 - 2 - - - - - CCMR2_Input - CCMR2_Input - capture/compare mode register 2 (input - mode) - CCMR2_Output - 0x1C - 0x20 - read-write - 0x00000000 - - - IC4F - Input capture 4 filter - 12 - 4 - - - IC4PSC - Input capture 4 prescaler - 10 - 2 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - IC3F - Input capture 3 filter - 4 - 4 - - - IC3PSC - Input capture 3 prescaler - 2 - 2 - - - CC3S - Capture/compare 3 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC4P - Capture/Compare 3 output - Polarity - 13 - 1 - - - CC4E - Capture/Compare 4 output - enable - 12 - 1 - - - CC3NP - Capture/Compare 3 output - Polarity - 11 - 1 - - - CC3NE - Capture/Compare 3 complementary output - enable - 10 - 1 - - - CC3P - Capture/Compare 3 output - Polarity - 9 - 1 - - - CC3E - Capture/Compare 3 output - enable - 8 - 1 - - - CC2NP - Capture/Compare 2 output - Polarity - 7 - 1 - - - CC2NE - Capture/Compare 2 complementary output - enable - 6 - 1 - - - CC2P - Capture/Compare 2 output - Polarity - 5 - 1 - - - CC2E - Capture/Compare 2 output - enable - 4 - 1 - - - CC1NP - Capture/Compare 1 output - Polarity - 3 - 1 - - - CC1NE - Capture/Compare 1 complementary output - enable - 2 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - RCR - RCR - repetition counter register - 0x30 - 0x20 - read-write - 0x0000 - - - REP - Repetition counter value - 0 - 8 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - CCR2 - CCR2 - capture/compare register 2 - 0x38 - 0x20 - read-write - 0x00000000 - - - CCR2 - Capture/Compare 2 value - 0 - 16 - - - - - CCR3 - CCR3 - capture/compare register 3 - 0x3C - 0x20 - read-write - 0x00000000 - - - CCR3 - Capture/Compare value - 0 - 16 - - - - - CCR4 - CCR4 - capture/compare register 4 - 0x40 - 0x20 - read-write - 0x00000000 - - - CCR4 - Capture/Compare value - 0 - 16 - - - - - BDTR - BDTR - break and dead-time register - 0x44 - 0x20 - read-write - 0x0000 - - - MOE - Main output enable - 15 - 1 - - - AOE - Automatic output enable - 14 - 1 - - - BKP - Break polarity - 13 - 1 - - - BKE - Break enable - 12 - 1 - - - OSSR - Off-state selection for Run - mode - 11 - 1 - - - OSSI - Off-state selection for Idle - mode - 10 - 1 - - - LOCK - Lock configuration - 8 - 2 - - - DTG - Dead-time generator setup - 0 - 8 - - - - - - - TIM16 - General purpose timer - TIM - 0x40014400 - - 0x00 - 0x400 - registers - - - TIM16 - TIM16 global Interrupt - 21 - - - - CR1 - CR1 - TIM16 control register1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Prescaler factor - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - OPM - One pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - UG - Update generation - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - RCR - RCR - repetition counter register - 0x30 - 0x20 - read-write - 0x0000 - - - REP - Repetition counter value - 0 - 8 - - - - - - - SYSCFG - System configuration controller - SYSCFG - 0x40010000 - - 0x0 - 0x30 - registers - - - - CFGR1 - CFGR1 - SYSCFG configuration register - 1 - 0x0 - 0x20 - read-write - 0x00000000 - - - I2C_PF1_ANF - Analog filter enable control driving capability - activation bits PF1 - 30 - 1 - - - I2C_PF0_ANF - Analog filter enable control driving capability - activation bits PF0 - 29 - 1 - - - I2C_PB8_ANF - Analog filter enable control driving capability - activation bits PB8 - 28 - 1 - - - I2C_PB7_ANF - Analog filter enable control driving capability - activation bits PB7 - 27 - 1 - - I2C_PB6_ANF - Analog filter enable control driving capability - activation bits PB6 - 26 - 1 - - - I2C_PA12_ANF - Analog filter enable control driving capability - activation bits PA12 - 25 - 1 - - - I2C_PA11_ANF - Analog filter enable control driving capability - activation bits PA11 - 24 - 1 - - - I2C_PA10_ANF - Analog filter enable control driving capability - activation bits PA10 - 23 - 1 - - - I2C_PA9_ANF - Analog filter enable control driving capability - activation bits PA9 - 22 - 1 - - - I2C_PA8_ANF - Analog filter enable control driving capability - activation bits PA8 - 21 - 1 - - - I2C_PA7_ANF - Analog filter enable control driving capability - activation bits PA7 - 20 - 1 - - - I2C_PA3_ANF - Analog filter enable control driving capability - activation bits PA3 - 19 - 1 - - - I2C_PA2_ANF - Analog filter enable control driving capability - activation bits PA2 - 18 - 1 - - - MEM_MODE - Memory mapping selection - bits - 0 - 2 - - - - - CFGR2 - CFGR2 - SYSCFG configuration register - 2 - 0x18 - 0x20 - read-write - 0x00000000 - - - ETR_SRC_TIM1 - TIM1 ETR source selection - 9 - 2 - - - LOCKUP_LOCK - Cortex-M0+ LOCKUP bit enable - bit - 0 - 1 - - - - - - - FLASH - Flash - Flash - 0x40022000 - - 0x0 - 0x400 - registers - - - FLASH - FLASH global Interrupt - 3 - - - - ACR - ACR - Access control register - 0x0 - 0x20 - read-write - 0x00000600 - - - LATENCY - Latency - 0 - 1 - - - - - KEYR - KEYR - Flash key register - 0x8 - 0x20 - write-only - 0x00000000 - - - KEY - Flash key - 0 - 32 - - - - - OPTKEYR - OPTKEYR - Option byte key register - 0xC - 0x20 - write-only - 0x00000000 - - - OPTKEY - Option byte key - 0 - 32 - - - - - SR - SR - Status register - 0x10 - 0x20 - read-write - 0x00000000 - - - BSY - Busy - 16 - 1 - - - OPTVERR - Option and Engineering bits loading - validity error - 15 - 1 - - - WRPERR - Write protected error - 4 - 1 - - - EOP - End of operation - 0 - 1 - - - - - CR - CR - Flash control register - 0x14 - 0x20 - read-write - 0xC0000000 - - - LOCK - FLASH_CR Lock - 31 - 1 - - - OPTLOCK - Options Lock - 30 - 1 - - - OBL_LAUNCH - Force the option byte - loading - 27 - 1 - - - ERRIE - Error interrupt enable - 25 - 1 - - - EOPIE - End of operation interrupt - enable - 24 - 1 - - - PGTSTRT - Flash main memory program start - 19 - 1 - - - OPTSTRT - Option byte program start - 17 - 1 - - - SER - Sector erase - 11 - 1 - - - MER - Mass erase - 2 - 1 - - - PER - Page erase - 1 - 1 - - - PG - Programming - 0 - 1 - - - - - OPTR - OPTR - Flash option register - 0x20 - 0x20 - read-write - 0x4F55B0AA - - - nBOOT1 - Boot configuration - 15 - 1 - - - NRST_MODE - NRST_MODE - 14 - 1 - - - IDWG_SW - Independent watchdog - selection - 12 - 1 - - - BORF_LEV - These bits contain the VDD supply level - threshold that activates the reset - 9 - 3 - - - BOREN - BOR reset Level - 8 - 1 - - - RDP - Read Protection - 0 - 8 - - - - - SDKR - SDKR - Flash SDK address - register - 0x24 - 0x20 - read-write - 0xFFE0001F - - - SDK_END - SDK area end address - 8 - 5 - - - SDK_STRT - SDK area start address - 0 - 5 - - - - - WRPR - WRPR - Flash WRP address - register - 0x2C - 0x20 - read-write - 0x0000FFFF - - - WRP - WRP address - 0 - 16 - - - - - STCR - STCR - Flash sleep time config - register - 0x90 - 0x20 - read-write - 0x00006400 - - - SLEEP_TIME - FLash sleep time configuration(counter based on HSI_10M) - 8 - 8 - - - SLEEP_EN - FLash sleep enable - 0 - 1 - - - - - TS0 - TS0 - Flash TS0 - register - 0x100 - 0x20 - read-write - 0x000000B4 - - - TS0 - FLash TS0 register - 0 - 8 - - - - - TS1 - TS1 - Flash TS1 - register - 0x104 - 0x20 - read-write - 0x000001B0 - - - TS1 - FLash TS1 register - 0 - 9 - - - - - TS2P - TS2P - Flash TS2P - register - 0x108 - 0x20 - read-write - 0x000000B4 - - - TS2P - FLash TS2P register - 0 - 8 - - - - - TPS3 - TPS3 - Flash TPS3 - register - 0x10C - 0x20 - read-write - 0x000006C0 - - - TPS3 - FLash TPS3 register - 0 - 11 - - - - - TS3 - TS3 - Flash TS3 - register - 0x110 - 0x20 - read-write - 0x000000B4 - - - TS3 - FLash TS3 register - 0 - 8 - - - - - PERTPE - PERTPE - Flash PERTPE - register - 0x114 - 0x20 - read-write - 0x0000EA60 - - - PERTPE - FLash PERTPE register - 0 - 17 - - - - - SMERTPE - SMERTPE - Flash SMERTPE - register - 0x118 - 0x20 - read-write - 0x0000FD20 - - - SMERTPE - FLash SMERTPE register - 0 - 17 - - - - - PRGTPE - PRGTPE - Flash PRGTPE - register - 0x11C - 0x20 - read-write - 0x00008CA0 - - - PRGTPE - FLash PRGTPE register - 0 - 16 - - - - - PRETPE - PRETPE - Flash PRETPE - register - 0x120 - 0x20 - read-write - 0x000012C0 - - - PRETPE - FLash PRETPE register - 0 - 13 - - - - - - - CRC - CRC calculation unit - CRC - 0x40023000 - - 0x0 - 0x400 - registers - - - - DR - DR - Data register - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - DR - Data Register - 0 - 32 - - - - - IDR - IDR - Independent Data register - 0x4 - 0x20 - read-write - 0x00000000 - - - IDR - Independent Data register - 0 - 8 - - - - - CR - CR - Control register - 0x8 - 0x20 - write-only - 0x00000000 - - - RESET - Reset bit - 0 - 1 - - - - - - - SPI1 - Serial peripheral interface - SPI - 0x40013000 - - 0x0 - 0x400 - registers - - - SPI1 - SPI1 global Interrupt - 25 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - BIDIMODE - Bidirectional data mode - enable - 15 - 1 - - - BIDIOE - Output enable in bidirectional - mode - 14 - 1 - - - RXONLY - Receive only - 10 - 1 - - - SSM - Software slave management - 9 - 1 - - - SSI - Internal slave selection - 8 - 1 - - - LSBFIRST - Frame format - 7 - 1 - - - SPE - SPI enable - 6 - 1 - - - BR - Baud rate control - 3 - 3 - - - MSTR - Master selection - 2 - 1 - - - CPOL - Clock polarity - 1 - 1 - - - CPHA - Clock phase - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - SLVFM - Slave fast mode enable - 15 - 1 - - - FRXTH - FIFO reception threshold - 12 - 1 - - - DS - Data length - - 11 - 1 - - - TXEIE - Tx buffer empty interrupt - enable - 7 - 1 - - - RXNEIE - RX buffer not empty interrupt - enable - 6 - 1 - - - ERRIE - Error interrupt enable - 5 - 1 - - - SSOE - SS output enable - 2 - 1 - - - - - SR - SR - status register - 0x8 - 0x20 - 0x0002 - - - FTLVL - FIFO transmission level - 11 - 2 - read-only - - - FRLVL - FIFO reception level - 9 - 2 - read-only - - - BSY - Busy flag - 7 - 1 - read-only - - - OVR - Overrun flag - 6 - 1 - read-only - - - MODF - Mode fault - 5 - 1 - read-only - - - TXE - Transmit buffer empty - 1 - 1 - read-only - - - RXNE - Receive buffer not empty - 0 - 1 - read-only - - - - - DR - DR - data register - 0xC - 0x20 - read-write - 0x0000 - - - DR - Data register - 0 - 16 - - - - - - - I2C - Inter integrated circuit - I2C - 0x40005400 - - 0x0 - 0x400 - registers - - - I2C1 - I2C1 global Interrupt - 23 - - - - CR1 - CR1 - Control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - SWRST - Software reset - 15 - 1 - - - PEC - Packet error checking - 12 - 1 - - - POS - Acknowledge/PEC Position (for data - reception) - 11 - 1 - - - ACK - Acknowledge enable - 10 - 1 - - - STOP - Stop generation - 9 - 1 - - - START - Start generation - 8 - 1 - - - NOSTRETCH - Clock stretching disable (Slave - mode) - 7 - 1 - - - ENGC - General call enable - 6 - 1 - - - ENPEC - PEC enable - 5 - 1 - - - PE - Peripheral enable - 0 - 1 - - - - - CR2 - CR2 - Control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - ITBUFEN - Buffer interrupt enable - 10 - 1 - - - ITEVTEN - Event interrupt enable - 9 - 1 - - - ITERREN - Error interrupt enable - 8 - 1 - - - FREQ - Peripheral clock frequency - 0 - 6 - - - - - OAR1 - OAR1 - Own address register 1 - 0x8 - 0x20 - read-write - 0x0000 - - - ADD - Interface address - 1 - 7 - - - - - DR - DR - Data register - 0x10 - 0x20 - read-write - 0x0000 - - - DR - 8-bit data register - 0 - 8 - - - - - SR1 - SR1 - Status register 1 - 0x14 - 0x20 - 0x0000 - - - PECERR - PEC Error in reception - 12 - 1 - read-write - - - OVR - Overrun/Underrun - 11 - 1 - read-write - - - AF - Acknowledge failure - 10 - 1 - read-write - - - ARLO - Arbitration lost (master - mode) - 9 - 1 - read-write - - - BERR - Bus error - 8 - 1 - read-write - - - TxE - Data register empty - (transmitters) - 7 - 1 - read-only - - - RxNE - Data register not empty - (receivers) - 6 - 1 - read-only - - - STOPF - Stop detection (slave - mode) - 4 - 1 - read-only - - - BTF - Byte transfer finished - 2 - 1 - read-only - - - ADDR - Address sent (master mode)/matched - (slave mode) - 1 - 1 - read-only - - - SB - Start bit (Master mode) - 0 - 1 - read-only - - - - - SR2 - SR2 - Status register 2 - 0x18 - 0x20 - read-only - 0x0000 - - - PEC - acket error checking - register - 8 - 8 - - - DUALF - Dual flag (Slave mode) - 7 - 1 - - - GENCALL - General call address (Slave - mode) - 4 - 1 - - - TRA - Transmitter/receiver - 2 - 1 - - - BUSY - Bus busy - 1 - 1 - - - MSL - Master/slave - 0 - 1 - - - - - CCR - CCR - Clock control register - 0x1C - 0x20 - read-write - 0x0000 - - - F_S - I2C master mode selection - 15 - 1 - - - DUTY - Fast mode duty cycle - 14 - 1 - - - CCR - Clock control register in Fast/Standard - mode (Master mode) - 0 - 12 - - - - - TRISE - TRISE - TRISE register - 0x20 - 0x20 - read-write - 0x0002 - - - TRISE - Maximum rise time in Fast/Standard mode - (Master mode) - 0 - 6 - - - - - - - DBGMCU - Debug support - DBGMCU - 0x40015800 - - 0x0 - 0x400 - registers - - - - IDCODE - IDCODE - MCU Device ID Code Register - 0x0 - 0x20 - read-only - 0x0 - - - - - - CR - CR - Debug MCU Configuration - Register - 0x4 - 0x20 - read-write - 0x0 - - - DBG_STOP - Debug Stop Mode - 1 - 1 - - - - - APB_FZ1 - APB_FZ1 - APB Freeze Register1 - 0x8 - 0x20 - read-write - 0x0 - - - DBG_IWDG_STOP - Debug Independent Wachdog stopped when - Core is halted - 12 - 1 - - - DBG_LPTIM_STOP - Debug LPTIM stopped when Core is - halted - 31 - 1 - - - - - APB_FZ2 - APB_FZ2 - APB Freeze Register2 - 0xC - 0x20 - read-write - 0x0 - - - DBG_TIMER1_STOP - Debug Timer 1 stopped when Core is - halted - 11 - 1 - - - DBG_TIMER16_STOP - Debug Timer 16 stopped when Core is - halted - 17 - 1 - - - - - - - + + + + Puya + Puya + PY32F0xx_DFP + + PY32F0 + 1.0.0 + Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. + + + + CM0+ + r0p1 + little + false + false + 4 + false + + + + 8 + 32 + 32 + read-write + 0x00000000 + 0xFFFFFFFF + + + ADC + Analog to Digital Converter + ADC + 0x40012400 + + 0x0 + 0x400 + registers + + + ADC_COMP + ADC and COMP Interrupt through EXTI Lines 17 and 18 + 12 + + + + ISR + ISR + ADC interrupt and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + AWD + ADC analog watchdog flag + 7 + 1 + + + OVR + ADC group regular overrun + flag + 4 + 1 + + + EOSEQ + ADC group regular end of sequence + conversions flag + 3 + 1 + + + EOC + ADC group regular end of unitary + conversion flag + 2 + 1 + + + EOSMP + ADC group regular end of sampling + flag + 1 + 1 + + + + + IER + IER + ADC interrupt enable register + 0x4 + 0x20 + read-write + 0x00000000 + + + AWDIE + ADC analog watchdog + interrupt + 7 + 1 + + + OVRIE + ADC group regular overrun + interrupt + 4 + 1 + + + EOSEQIE + ADC group regular end of sequence + conversions interrupt + 3 + 1 + + + EOCIE + ADC group regular end of unitary + conversion interrupt + 2 + 1 + + + EOSMPIE + ADC group regular end of sampling + interrupt + 1 + 1 + + + + + CR + CR + ADC control register + 0x8 + 0x20 + read-write + 0x00000000 + + + ADCAL + ADC group regular conversion + calibration + 31 + 1 + + + ADSTP + ADC group regular conversion + stop + 4 + 1 + + + ADSTART + ADC group regular conversion + start + 2 + 1 + + + ADEN + ADC enable + 0 + 1 + + + + + CFGR1 + CFGR1 + ADC configuration register 1 + 0xC + 0x20 + read-write + 0x00000000 + + + AWDCH + ADC analog watchdog monitored channel + selection + 26 + 4 + + + AWDEN + ADC analog watchdog enable on scope + ADC group regular + 23 + 1 + + + AWDSGL + ADC analog watchdog monitoring a + single channel or all channels + 22 + 1 + + + DISCEN + ADC group regular sequencer + discontinuous mode + 16 + 1 + + + WAIT + Wait conversion mode + 14 + 1 + + + CONT + ADC group regular continuous conversion + mode + 13 + 1 + + + OVRMOD + ADC group regular overrun + configuration + 12 + 1 + + + EXTEN + ADC group regular external trigger + polarity + 10 + 2 + + + EXTSEL + ADC group regular external trigger + source + 6 + 3 + + + ALIGN + ADC data alignement + 5 + 1 + + + RESSEL + ADC data resolution + 3 + 2 + + + SCANDIR + Scan sequence direction + 2 + 1 + + + + + CFGR2 + CFGR2 + ADC configuration register 2 + 0x10 + 0x20 + read-write + 0x00000000 + + + CKMODE + ADC clock mode + 28 + 4 + + + + + SMPR + SMPR + ADC sampling time register + 0x14 + 0x20 + read-write + 0x00000000 + + + SMP + Sampling time selection + 0 + 3 + + + + + TR + TR + ADC analog watchdog 1 threshold register + 0x20 + 0x20 + read-write + 0x0FFF0000 + + + HT + ADC analog watchdog threshold + high + 16 + 12 + + + LT + ADC analog watchdog threshold + low + 0 + 12 + + + + + CHSELR + CHSELR + ADC group regular sequencer register + 0x28 + 0x20 + read-write + 0x0FFF0000 + + + CHSEL12 + Channel-12 selection + 12 + 1 + + + CHSEL11 + Channel-11 selection + 11 + 1 + + + CHSEL9 + Channel-9 selection + 9 + 1 + + + CHSEL8 + Channel-8 selection + 8 + 1 + + + CHSEL7 + Channel-7 selection + 7 + 1 + + + CHSEL6 + Channel-6 selection + 6 + 1 + + + CHSEL5 + Channel-5 selection + 5 + 1 + + + CHSEL4 + Channel-4 selection + 4 + 1 + + + CHSEL3 + Channel-3 selection + 3 + 1 + + + CHSEL2 + Channel-2 selection + 2 + 1 + + + CHSEL1 + Channel-1 selection + 1 + 1 + + + CHSEL0 + Channel-0 selection + 0 + 1 + + + + + DR + DR + ADC group regular data register + 0x40 + 0x20 + read-only + 0x00000000 + + + DATA + ADC group regular conversion + data + 0 + 16 + + + + + CCSR + CCSR + ADC calibration configuration and status register + 0x44 + 0x20 + read-write + 0x00000000 + + + CALON + Calibration flag + 31 + 1 + read-only + + + CALFAIL + Calibration fail flag + 30 + 1 + + + CALSET + Calibration factor selection + 15 + 1 + + + CALSMP + Calibration sample time selection + 12 + 2 + + + CALSEL + Calibration contents selection + 11 + 1 + + + + + CALRR1 + CALRR1 + ADC calibration result register 1 + 0x48 + 0x20 + read-only + 0x00000000 + + + CALBOUT + offset result + 16 + 7 + + + CALC5OUT + C5 result + 8 + 8 + + + CALC4OUT + C4 result + 0 + 8 + + + + + CALRR2 + CALRR2 + ADC calibration result register 2 + 0x4C + 0x20 + read-only + 0x00000000 + + + CALC3OUT + C3 result + 24 + 8 + + + CALC2OUT + C2 result + 16 + 8 + + + CALC1OUT + C1 result + 8 + 8 + + + CALC0OUT + C0 result + 0 + 8 + + + + + CALFIR1 + CALFIR1 + ADC calibration factor input register 1 + 0x50 + 0x20 + read-write + 0x00000000 + + + CALBIO + Calibration offset factor input + 16 + 7 + + + CALC5IO + Calibration C5 factor input + 8 + 8 + + + CALC4IO + Calibration C4 factor input + 0 + 8 + + + + + CALFIR2 + CALFIR2 + ADC calibration factor input register 2 + 0x54 + 0x20 + read-write + 0x00000000 + + + CALC3IO + Calibration C3 factor input + 24 + 8 + + + CALC2IO + Calibration C2 factor input + 16 + 8 + + + CALC1IO + Calibration C1 factor input + 8 + 8 + + + CALC0IO + Calibration C0 factor input + 0 + 8 + + + + + CCR + CCR + ADC common configuration register + 0x308 + 0x20 + read-write + 0x00000000 + + + TSEN + Temperature sensor enable + 23 + 1 + + + VREFEN + VREFINT enable + 22 + 1 + + + + + + + COMP1 + Comparator + COMP + 0x40010200 + + 0x0 + 0x10 + registers + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + LOCK + CSR register lock + 31 + 1 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + Comparator power mode + selector + 18 + 2 + + + HYST + Comparator hysteresis enable + selector + 16 + 1 + + + POLARITY + Comparator polarity + selector + 15 + 1 + + + WINMODE + Comparator non-inverting input + selector for window mode + 11 + 1 + + + INPSEL + Comparator signal selector for + non-inverting input + 8 + 2 + + + INMSEL + Comparator signal selector for + inverting input INM + 4 + 4 + + + SCALER_EN + SCALER enable bit + 1 + 1 + + + COMP_EN + COMP enable bit + 0 + 1 + + + + + FR + FR + Comparator Filter + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT + Comparator filter and counter + 16 + 16 + + + FLTEN + Filter enable bit + 0 + 1 + + + + + + + COMP2 + Comparator + COMP + 0x40010210 + + 0x0 + 0x10 + registers + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + LOCK + CSR register lock + 31 + 1 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + Comparator power mode + selector + 18 + 2 + + + POLARITY + Comparator polarity + selector + 15 + 1 + + + WINMODE + Comparator non-inverting input + selector for window mode + 11 + 1 + + + INPSEL + Comparator signal selector for + non-inverting input + 8 + 2 + + + INMSEL + Comparator signal selector for + inverting input INM + 4 + 4 + + + COMP_EN + COMP enable bit + 0 + 1 + + + + + FR + FR + Comparator Filter + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT + Comparator filter and counter + 16 + 16 + + + FLTEN + Filter enable bit + 0 + 1 + + + + + + + RCC + Reset and clock control + RCC + 0x40021000 + + 0x0 + 0x400 + registers + + + RCC + RCC global Interrupt + 4 + + + + CR + CR + Clock control register + 0x0 + 0x20 + read-write + 0x00000100 + + + CSSON + Clock security system + enable + 19 + 1 + + + HSEBYP + HSE crystal oscillator + bypass + 18 + 1 + + + HSERDY + HSE clock ready flag + 17 + 1 + + + HSEON + HSE clock enable + 16 + 1 + + + HSIDIV + HSI16 clock division + factor + 11 + 3 + + + HSIRDY + HSI16 clock ready flag + 10 + 1 + + + HSIKERON + HSI16 always enable for peripheral + kernels + 9 + 1 + + + HSION + HSI16 clock enable + 8 + 1 + + + + + ICSCR + ICSCR + Internal clock sources calibration + register + 0x4 + 0x20 + 0x10000000 + + + LSI_STARTUP + LSI startup time + 26 + 2 + read-write + + + LSI_TRIM + LSI clock trimming + 16 + 9 + read-write + + + HSI_FS + HSI frequency selection + 13 + 3 + read-write + + + HSI_TRIM + HSI clock trimming + 0 + 13 + read-write + + + + + CFGR + CFGR + Clock configuration register + 0x8 + 0x20 + 0x00000000 + + + MCOPRE + Microcontroller clock output + prescaler + 28 + 3 + read-write + + + MCOSEL + Microcontroller clock + output + 24 + 3 + read-write + + + PPRE + APB prescaler + 12 + 3 + read-write + + + HPRE + AHB prescaler + 8 + 4 + read-write + + + SWS + System clock switch status + 3 + 3 + read-only + + + SW + System clock switch + 0 + 3 + read-write + + + + + ECSCR + ECSCR + External clock source control register + 0x10 + 0x20 + 0x00000000 + + + HSE_FREQ + HSE clock freqency selection + 2 + 2 + read-write + + + + + CIER + CIER + Clock interrupt enable + register + 0x18 + 0x20 + read-write + 0x00000000 + + + HSERDYIE + HSE ready interrupt enable + 4 + 1 + + + HSIRDYIE + HSI ready interrupt enable + 3 + 1 + + + LSIRDYIE + LSI ready interrupt enable + 0 + 1 + + + + + CIFR + CIFR + Clock interrupt flag register + 0x1C + 0x20 + read-only + 0x00000000 + + + CSSF + HSE clock secure system interrupt flag + 8 + 1 + + + HSERDYF + HSE ready interrupt flag + 4 + 1 + + + HSIRDYF + HSI ready interrupt flag + 3 + 1 + + + LSIRDYF + LSI ready interrupt flag + 0 + 1 + + + + + CICR + CICR + Clock interrupt clear register + 0x20 + 0x20 + write-only + 0x00000000 + + + CSSC + clock secure system interrupt flag clear + 8 + 1 + + + HSERDYC + HSE ready interrupt clear + 4 + 1 + + + HSIRDYC + HSI ready interrupt clear + 3 + 1 + + + LSIRDYC + LSI ready interrupt clear + 0 + 1 + + + + + IOPRSTR + IOPRSTR + GPIO reset register + 0x24 + 0x20 + read-write + 0x00000000 + + + GPIOFRST + I/O port F reset + 5 + 1 + + + GPIOBRST + I/O port B reset + 1 + 1 + + + GPIOARST + I/O port A reset + 0 + 1 + + + + + AHBRSTR + AHBRSTR + AHB peripheral reset register + 0x28 + 0x20 + read-write + 0x00000000 + + + CRCRST + CRC reset + 12 + 1 + + + + + APBRSTR1 + APBRSTR1 + APB peripheral reset register + 1 + 0x2C + 0x20 + read-write + 0x00000000 + + + LPTIMRST + Low Power Timer reset + 31 + 1 + + + PWRRST + Power interface reset + 28 + 1 + + + DBGRST + Debug support reset + 27 + 1 + + + I2CRST + I2C reset + 21 + 1 + + + + + APBRSTR2 + APBRSTR2 + APB peripheral reset register + 2 + 0x30 + 0x20 + read-write + 0x00000000 + + + COMP2RST + COMP2 reset + 22 + 1 + + + COMP1RST + COMP1 reset + 21 + 1 + + + ADCRST + ADC reset + 20 + 1 + + + TIM16RST + TIM16 timer reset + 17 + 1 + + + USART1RST + USART1 reset + 14 + 1 + + + SPI1RST + SPI1 reset + 12 + 1 + + + TIM1RST + TIM1 timer reset + 11 + 1 + + + SYSCFGRST + SYSCFG and COMP + reset + 0 + 1 + + + + + IOPENR + IOPENR + GPIO clock enable register + 0x34 + 0x20 + read-write + 0x00000000 + + + GPIOFEN + I/O port F clock enable + 5 + 1 + + + GPIOBEN + I/O port B clock enable + 1 + 1 + + + GPIOAEN + I/O port A clock enable + 0 + 1 + + + + + AHBENR + AHBENR + AHB peripheral clock enable + register + 0x38 + 0x20 + read-write + 0x00000000 + + + CRCEN + CRC clock enable + 12 + 1 + + + SRAMEN + SRAM memory interface clock + enable + 9 + 1 + + + FLASHEN + Flash memory interface clock + enable + 8 + 1 + + + + + APBENR1 + APBENR1 + APB peripheral clock enable register + 1 + 0x3C + 0x20 + read-write + 0x00000000 + + + LPTIMEN + LPTIM clock enable + 31 + 1 + + + PWREN + Power interface clock + enable + 28 + 1 + + + DBGEN + Debug support clock enable + 27 + 1 + + + I2CEN + I2C clock enable + 21 + 1 + + + + + APBENR2 + APBENR2 + APB peripheral clock enable register + 2 + 0x40 + 0x20 + read-write + 0x00000000 + + + COMP2EN + COMP2 clock enable + 22 + 1 + + + COMP1EN + COMP1 clock enable + 21 + 1 + + + ADCEN + ADC clock enable + 20 + 1 + + + TIM16EN + TIM16 timer clock enable + 17 + 1 + + + USART1EN + USART1 clock enable + 14 + 1 + + + SPI1EN + SPI1 clock enable + 12 + 1 + + + TIM1EN + TIM1 timer clock enable + 11 + 1 + + + SYSCFGEN + SYSCFG, COMP and VREFBUF clock + enable + 0 + 1 + + + + + CCIPR + CCIPR + Peripherals independent clock configuration + register + 0x54 + 0x20 + read-write + 0x00000000 + + + LPTIM1SEL + LPTIM1 clock source + selection + 18 + 2 + + + COMP2SEL + COMP2 clock source + selection + 9 + 1 + + + COMP1SEL + COMP1 clock source + selection + 8 + 1 + + + + + BDCR + BDCR + RTC domain control register + 0x5C + 0x20 + read-write + 0x00000000 + + + LSCOEN + Low-speed clock output (LSCO) + enable + 24 + 1 + + + + + CSR + CSR + Control/status register + 0x60 + 0x20 + read-write + 0x00000000 + + + IWDGRSTF + Independent window watchdog reset + flag + 29 + 1 + + + SFTRSTF + Software reset flag + 28 + 1 + + + PWRRSTF + BOR or POR/PDR flag + 27 + 1 + + + PINRSTF + Pin reset flag + 26 + 1 + + + OBLRSTF + Option byte loader reset + flag + 25 + 1 + + + RMVF + Remove reset flags + 23 + 1 + + + LSIRDY + LSI oscillator ready + 1 + 1 + + + LSION + LSI oscillator enable + 0 + 1 + + + + + + + GPIOA + General-purpose I/Os + GPIO + 0x50000000 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xEBFFFFFF + + + MODE15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + MODE14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + MODE13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + MODE12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + MODE11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + MODE10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + MODE9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT15 + Port x configuration bits (y = + 0..15) + 15 + 1 + + + OT14 + Port x configuration bits (y = + 0..15) + 14 + 1 + + + OT13 + Port x configuration bits (y = + 0..15) + 13 + 1 + + + OT12 + Port x configuration bits (y = + 0..15) + 12 + 1 + + + OT11 + Port x configuration bits (y = + 0..15) + 11 + 1 + + + OT10 + Port x configuration bits (y = + 0..15) + 10 + 1 + + + OT9 + Port x configuration bits (y = + 0..15) + 9 + 1 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x0C000000 + + + OSPEED15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + OSPEED14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + OSPEED13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + OSPEED12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + OSPEED11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + OSPEED10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + OSPEED9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x24000000 + + + PUPD15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + PUPD14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + PUPD13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + PUPD12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + PUPD11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + PUPD10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + PUPD9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID15 + Port input data (y = + 0..15) + 15 + 1 + + + ID14 + Port input data (y = + 0..15) + 14 + 1 + + + ID13 + Port input data (y = + 0..15) + 13 + 1 + + + ID12 + Port input data (y = + 0..15) + 12 + 1 + + + ID11 + Port input data (y = + 0..15) + 11 + 1 + + + ID10 + Port input data (y = + 0..15) + 10 + 1 + + + ID9 + Port input data (y = + 0..15) + 9 + 1 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD15 + Port output data (y = + 0..15) + 15 + 1 + + + OD14 + Port output data (y = + 0..15) + 14 + 1 + + + OD13 + Port output data (y = + 0..15) + 13 + 1 + + + OD12 + Port output data (y = + 0..15) + 12 + 1 + + + OD11 + Port output data (y = + 0..15) + 11 + 1 + + + OD10 + Port output data (y = + 0..15) + 10 + 1 + + + OD9 + Port output data (y = + 0..15) + 9 + 1 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR15 + Port x reset bit y (y = + 0..15) + 31 + 1 + + + BR14 + Port x reset bit y (y = + 0..15) + 30 + 1 + + + BR13 + Port x reset bit y (y = + 0..15) + 29 + 1 + + + BR12 + Port x reset bit y (y = + 0..15) + 28 + 1 + + + BR11 + Port x reset bit y (y = + 0..15) + 27 + 1 + + + BR10 + Port x reset bit y (y = + 0..15) + 26 + 1 + + + BR9 + Port x reset bit y (y = + 0..15) + 25 + 1 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS15 + Port x set bit y (y= + 0..15) + 15 + 1 + + + BS14 + Port x set bit y (y= + 0..15) + 14 + 1 + + + BS13 + Port x set bit y (y= + 0..15) + 13 + 1 + + + BS12 + Port x set bit y (y= + 0..15) + 12 + 1 + + + BS11 + Port x set bit y (y= + 0..15) + 11 + 1 + + + BS10 + Port x set bit y (y= + 0..15) + 10 + 1 + + + BS9 + Port x set bit y (y= + 0..15) + 9 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK15 + Port x lock bit y (y= + 0..15) + 15 + 1 + + + LCK14 + Port x lock bit y (y= + 0..15) + 14 + 1 + + + LCK13 + Port x lock bit y (y= + 0..15) + 13 + 1 + + + LCK12 + Port x lock bit y (y= + 0..15) + 12 + 1 + + + LCK11 + Port x lock bit y (y= + 0..15) + 11 + 1 + + + LCK10 + Port x lock bit y (y= + 0..15) + 10 + 1 + + + LCK9 + Port x lock bit y (y= + 0..15) + 9 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR15 + Port Reset bit + 15 + 1 + + + BR14 + Port Reset bit + 14 + 1 + + + BR13 + Port Reset bit + 13 + 1 + + + BR12 + Port Reset bit + 12 + 1 + + + BR11 + Port Reset bit + 11 + 1 + + + BR10 + Port Reset bit + 10 + 1 + + + BR9 + Port Reset bit + 9 + 1 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOB + General-purpose I/Os + GPIO + 0x50000400 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x00000000 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x00000000 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOF + 0x50001400 + + + EXTI + External interrupt/event + controller + EXTI + 0x40021800 + + 0x0 + 0x400 + registers + + + EXTI0_1 + EXTI Line 0 and 1 Interrupt + 5 + + + EXTI2_3 + EXTI Line 2 and 3 Interrupt + 6 + + + EXTI4_15 + EXTI Line 4 to 15 Interrupt + 7 + + + + RTSR + RTSR + EXTI rising trigger selection + register + 0x0 + 0x20 + read-write + 0x00000000 + + + RT18 + Rising trigger event configuration bit + of Configurable Event input + 18 + 1 + + + RT17 + Rising trigger event configuration bit + of Configurable Event input + 17 + 1 + + + RT16 + Rising trigger event configuration bit + of Configurable Event input + 16 + 1 + + + RT15 + Rising trigger event configuration bit + of Configurable Event input + 15 + 1 + + + RT14 + Rising trigger event configuration bit + of Configurable Event input + 14 + 1 + + + RT13 + Rising trigger event configuration bit + of Configurable Event input + 13 + 1 + + + RT12 + Rising trigger event configuration bit + of Configurable Event input + 12 + 1 + + + RT11 + Rising trigger event configuration bit + of Configurable Event input + 11 + 1 + + + RT10 + Rising trigger event configuration bit + of Configurable Event input + 10 + 1 + + + RT9 + Rising trigger event configuration bit + of Configurable Event input + 9 + 1 + + + RT8 + Rising trigger event configuration bit + of Configurable Event input + 8 + 1 + + + RT7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + RT6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + RT5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + RT4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + RT3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + RT2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + RT1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + RT0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + FTSR + FTSR + EXTI falling trigger selection + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FT18 + Falling trigger event configuration bit + of Configurable Event input + 18 + 1 + + + FT17 + Falling trigger event configuration bit + of Configurable Event input + 17 + 1 + + + FT16 + Falling trigger event configuration bit + of Configurable Event input + 16 + 1 + + + FT15 + Falling trigger event configuration bit + of Configurable Event input + 15 + 1 + + + FT14 + Falling trigger event configuration bit + of Configurable Event input + 14 + 1 + + + FT13 + Falling trigger event configuration bit + of Configurable Event input + 13 + 1 + + + FT12 + Falling trigger event configuration bit + of Configurable Event input + 12 + 1 + + + FT11 + Falling trigger event configuration bit + of Configurable Event input + 11 + 1 + + + FT10 + Falling trigger event configuration bit + of Configurable Event input + 10 + 1 + + + FT9 + Falling trigger event configuration bit + of Configurable Event input + 9 + 1 + + + FT8 + Falling trigger event configuration bit + of Configurable Event input + 8 + 1 + + + FT7 + Falling trigger event configuration bit + of Configurable Event input + 7 + 1 + + + FT6 + Falling trigger event configuration bit + of Configurable Event input + 6 + 1 + + + FT5 + Falling trigger event configuration bit + of Configurable Event input + 5 + 1 + + + FT4 + Falling trigger event configuration bit + of Configurable Event input + 4 + 1 + + + FT3 + Falling trigger event configuration bit + of Configurable Event input + 3 + 1 + + + FT2 + Falling trigger event configuration bit + of Configurable Event input + 2 + 1 + + + FT1 + Falling trigger event configuration bit + of Configurable Event input + 1 + 1 + + + FT0 + Falling trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + SWIER + SWIER + EXTI software interrupt event + register + 0x8 + 0x20 + read-write + 0x00000000 + + + SWI18 + Rising trigger event configuration bit + of Configurable Event input + 18 + 1 + + + SWI17 + Rising trigger event configuration bit + of Configurable Event input + 17 + 1 + + + SWI16 + Rising trigger event configuration bit + of Configurable Event input + 16 + 1 + + + SWI15 + Rising trigger event configuration bit + of Configurable Event input + 15 + 1 + + + SWI14 + Rising trigger event configuration bit + of Configurable Event input + 14 + 1 + + + SWI13 + Rising trigger event configuration bit + of Configurable Event input + 13 + 1 + + + SWI12 + Rising trigger event configuration bit + of Configurable Event input + 12 + 1 + + + SWI11 + Rising trigger event configuration bit + of Configurable Event input + 11 + 1 + + + SWI10 + Rising trigger event configuration bit + of Configurable Event input + 10 + 1 + + + SWI9 + Rising trigger event configuration bit + of Configurable Event input + 9 + 1 + + + SWI8 + Rising trigger event configuration bit + of Configurable Event input + 8 + 1 + + + SWI7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + SWI6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + SWI5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + SWI4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + SWI3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + SWI2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + SWI1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + SWI0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + PR + PR + EXTI pending + register + 0xC + 0x20 + read-write + 0x00000000 + + + PR18 + configurable event inputs x rising edge + Pending bit. + 18 + 1 + + + PR17 + configurable event inputs x rising edge + Pending bit. + 17 + 1 + + + PR16 + configurable event inputs x rising edge + Pending bit. + 16 + 1 + + + PR15 + configurable event inputs x rising edge + Pending bit. + 15 + 1 + + + PR14 + configurable event inputs x rising edge + Pending bit. + 14 + 1 + + + PR13 + configurable event inputs x rising edge + Pending bit + 13 + 1 + + + PR12 + configurable event inputs x rising edge + Pending bit. + 12 + 1 + + + PR11 + configurable event inputs x rising edge + Pending bit. + 11 + 1 + + + PR10 + configurable event inputs x rising edge + Pending bit. + 10 + 1 + + + PR9 + configurable event inputs x rising edge + Pending bit. + 9 + 1 + + + PR8 + configurable event inputs x rising edge + Pending bit. + 8 + 1 + + + PR7 + configurable event inputs x rising edge + Pending bit. + 7 + 1 + + + PR6 + configurable event inputs x rising edge + Pending bit. + 6 + 1 + + + PR5 + configurable event inputs x rising edge + Pending bit. + 5 + 1 + + + PR4 + configurable event inputs x rising edge + Pending bit. + 4 + 1 + + + PR3 + configurable event inputs x rising edge + Pending bit. + 3 + 1 + + + PR2 + configurable event inputs x rising edge + Pending bit. + 2 + 1 + + + PR1 + configurable event inputs x rising edge + Pending bit. + 1 + 1 + + + PR0 + configurable event inputs x rising edge + Pending bit. + 0 + 1 + + + + + EXTICR1 + EXTICR1 + EXTI external interrupt selection + register + 0x60 + 0x20 + read-write + 0x00000000 + + + EXTI3 + GPIO port selection + 24 + 2 + + + EXTI2 + GPIO port selection + 16 + 2 + + + EXTI1 + GPIO port selection + 8 + 2 + + + EXTI0 + GPIO port selection + 0 + 2 + + + + + EXTICR2 + EXTICR2 + EXTI external interrupt selection + register + 0x64 + 0x20 + read-write + 0x00000000 + + + EXTI7 + GPIO port selection + 24 + 1 + + + EXTI6 + GPIO port selection + 16 + 1 + + + EXTI5 + GPIO port selection + 8 + 1 + + + EXTI4 + GPIO port selection + 0 + 2 + + + + + EXTICR3 + EXTICR3 + EXTI external interrupt selection + register + 0x68 + 0x20 + read-write + 0x00000000 + + + EXTI8 + GPIO port selection + 0 + 1 + + + + + IMR + IMR + EXTI CPU wakeup with interrupt mask + register + 0x80 + 0x20 + read-write + 0xFFF80000 + + + IM29 + CPU wakeup with interrupt mask on event + input + 29 + 1 + + + IM19 + CPU wakeup with interrupt mask on event + input + 19 + 1 + + + IM18 + CPU wakeup with interrupt mask on event + input + 18 + 1 + + + IM17 + CPU wakeup with interrupt mask on event + input + 17 + 1 + + + IM16 + CPU wakeup with interrupt mask on event + input + 16 + 1 + + + IM15 + CPU wakeup with interrupt mask on event + input + 15 + 1 + + + IM14 + CPU wakeup with interrupt mask on event + input + 14 + 1 + + + IM13 + CPU wakeup with interrupt mask on event + input + 13 + 1 + + + IM12 + CPU wakeup with interrupt mask on event + input + 12 + 1 + + + IM11 + CPU wakeup with interrupt mask on event + input + 11 + 1 + + + IM10 + CPU wakeup with interrupt mask on event + input + 10 + 1 + + + IM9 + CPU wakeup with interrupt mask on event + input + 9 + 1 + + + IM8 + CPU wakeup with interrupt mask on event + input + 8 + 1 + + + IM7 + CPU wakeup with interrupt mask on event + input + 7 + 1 + + + IM6 + CPU wakeup with interrupt mask on event + input + 6 + 1 + + + IM5 + CPU wakeup with interrupt mask on event + input + 5 + 1 + + + IM4 + CPU wakeup with interrupt mask on event + input + 4 + 1 + + + IM3 + CPU wakeup with interrupt mask on event + input + 3 + 1 + + + IM2 + CPU wakeup with interrupt mask on event + input + 2 + 1 + + + IM1 + CPU wakeup with interrupt mask on event + input + 1 + 1 + + + IM0 + CPU wakeup with interrupt mask on event + input + 0 + 1 + + + + + EMR + EMR + EXTI CPU wakeup with event mask + register + 0x84 + 0x20 + read-write + 0x00000000 + + + EM29 + CPU wakeup with event mask on event + input + 29 + 1 + + + EM19 + CPU wakeup with event mask on event + input + 19 + 1 + + + EM18 + CPU wakeup with event mask on event + input + 18 + 1 + + + EM17 + CPU wakeup with event mask on event + input + 17 + 1 + + + EM16 + CPU wakeup with event mask on event + input + 16 + 1 + + + EM15 + CPU wakeup with event mask on event + input + 15 + 1 + + + EM14 + CPU wakeup with event mask on event + input + 14 + 1 + + + EM13 + CPU wakeup with event mask on event + input + 13 + 1 + + + EM12 + CPU wakeup with event mask on event + input + 12 + 1 + + + EM11 + CPU wakeup with event mask on event + input + 11 + 1 + + + EM10 + CPU wakeup with event mask on event + input + 10 + 1 + + + EM9 + CPU wakeup with event mask on event + input + 9 + 1 + + + EM8 + CPU wakeup with event mask on event + input + 8 + 1 + + + EM7 + CPU wakeup with event mask on event + input + 7 + 1 + + + EM6 + CPU wakeup with event mask on event + input + 6 + 1 + + + EM5 + CPU wakeup with event mask on event + input + 5 + 1 + + + EM4 + CPU wakeup with event mask on event + input + 4 + 1 + + + EM3 + CPU wakeup with event mask on event + input + 3 + 1 + + + EM2 + CPU wakeup with event mask on event + input + 2 + 1 + + + EM1 + CPU wakeup with event mask on event + input + 1 + 1 + + + EM0 + CPU wakeup with event mask on event + input + 0 + 1 + + + + + + + LPTIM + Low power timer + LPTIM + 0x40007C00 + + 0x0 + 0x400 + registers + + + + ISR + ISR + Interrupt and Status Register + 0x0 + 0x20 + read-only + 0x00000000 + + + ARRM + Autoreload match + 1 + 1 + + + + + ICR + ICR + Interrupt Clear Register + 0x4 + 0x20 + write-only + 0x00000000 + + + ARRMCF + Autoreload match Clear + Flag + 1 + 1 + + + + + IER + IER + Interrupt Enable Register + 0x8 + 0x20 + read-write + 0x00000000 + + + ARRMIE + Autoreload match Interrupt + Enable + 1 + 1 + + + + + CFGR + CFGR + Configuration Register + 0xC + 0x20 + read-write + 0x00000000 + + + PRELOAD + Registers update mode + 22 + 1 + + + PRESC + Clock prescaler + 9 + 3 + + + + + CR + CR + Control Register + 0x10 + 0x20 + read-write + 0x00000000 + + + RSTARE + Reset after read enable + 4 + 1 + + + SNGSTRT + LPTIM start in single mode + 1 + 1 + + + ENABLE + LPTIM Enable + 0 + 1 + + + + + ARR + ARR + Autoreload Register + 0x18 + 0x20 + read-write + 0x00000001 + + + ARR + Auto reload value + 0 + 16 + + + + + CNT + CNT + Counter Register + 0x1C + 0x20 + read-only + 0x00000000 + + + CNT + Counter value + 0 + 16 + + + + + + + USART1 + Universal synchronous asynchronous receiver + transmitter + USART + 0x40013800 + + 0x0 + 0x400 + registers + + + USART1 + USART1 global Interrupt + 27 + + + + SR + SR + Status register + 0x0 + 0x20 + 0x00C0 + + + ABRRQ + Automate baudrate detection requeset + 12 + 1 + write-only + + + ABRE + Automate baudrate detection error flag + 11 + 1 + read-only + + + ABRF + Automate baudrate detection flag + 10 + 1 + read-only + + + CTS + CTS flag + 9 + 1 + read-write + + + TXE + Transmit data register + empty + 7 + 1 + read-only + + + TC + Transmission complete + 6 + 1 + read-write + + + RXNE + Read data register not + empty + 5 + 1 + read-write + + + IDLE + IDLE line detected + 4 + 1 + read-only + + + ORE + Overrun error + 3 + 1 + read-only + + + NE + Noise error flag + 2 + 1 + read-only + + + FE + Framing error + 1 + 1 + read-only + + + PE + Parity error + 0 + 1 + read-only + + + + + DR + DR + Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + DR + Data value + 0 + 9 + + + + + BRR + BRR + Baud rate register + 0x8 + 0x20 + read-write + 0x0000 + + + DIV_Mantissa + mantissa of USARTDIV + 4 + 12 + + + DIV_Fraction + fraction of USARTDIV + 0 + 4 + + + + + CR1 + CR1 + Control register 1 + 0xC + 0x20 + read-write + 0x0000 + + + UE + USART enable + 13 + 1 + + + M + Word length + 12 + 1 + + + WAKE + Wakeup method + 11 + 1 + + + PCE + Parity control enable + 10 + 1 + + + PS + Parity selection + 9 + 1 + + + PEIE + PE interrupt enable + 8 + 1 + + + TXEIE + TXE interrupt enable + 7 + 1 + + + TCIE + Transmission complete interrupt + enable + 6 + 1 + + + RXNEIE + RXNE interrupt enable + 5 + 1 + + + IDLEIE + IDLE interrupt enable + 4 + 1 + + + TE + Transmitter enable + 3 + 1 + + + RE + Receiver enable + 2 + 1 + + + RWU + Receiver wakeup + 1 + 1 + + + SBK + Send break + 0 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x10 + 0x20 + read-write + 0x0000 + + + STOP + STOP bits + 12 + 2 + + + CLKEN + Clock enable + 11 + 1 + + + CPOL + Clock polarity + 10 + 1 + + + CPHA + Clock phase + 9 + 1 + + + LBCL + Last bit clock pulse + 8 + 1 + + + ADD + Address of the USART node + 0 + 4 + + + + + CR3 + CR3 + Control register 3 + 0x14 + 0x20 + read-write + 0x0000 + + + ABRMOD + Auto baudrate mode + 13 + 2 + + + ABREN + Auto baudrate enable + 12 + 1 + + + OVER8 + Oversampling mode + 11 + 1 + + + CTSIE + CTS interrupt enable + 10 + 1 + + + CTSE + CTS enable + 9 + 1 + + + RTSE + RTS enable + 8 + 1 + + + HDSEL + Half-duplex selection + 3 + 1 + + + IRLP + IrDA low-power + 2 + 1 + + + IREN + IrDA mode enable + 1 + 1 + + + EIE + Error interrupt enable + 0 + 1 + + + + + + + IWDG + Independent watchdog + IWDG + 0x40003000 + + 0x0 + 0x400 + registers + + + + KR + KR + Key register (IWDG_KR) + 0x0 + 0x20 + write-only + 0x00000000 + + + KEY + Key value + 0 + 16 + + + + + PR + PR + Prescaler register (IWDG_PR) + 0x4 + 0x20 + read-write + 0x00000000 + + + PR + Prescaler divider + 0 + 3 + + + + + RLR + RLR + Reload register (IWDG_RLR) + 0x8 + 0x20 + read-write + 0x00000FFF + + + RL + Watchdog counter reload + value + 0 + 12 + + + + + SR + SR + Status register (IWDG_SR) + 0xC + 0x20 + read-only + 0x00000000 + + + WVU + Watchdog counter window value update + 2 + 1 + + + RVU + Watchdog counter reload value + update + 1 + 1 + + + PVU + Watchdog prescaler value + update + 0 + 1 + + + + + WINR + WINR + Window register (IWDG_SR) + 0x10 + 0x20 + read-only + 0x00000000 + + + WIN + window counter + 0 + 12 + + + + + + + TIM1 + Advanced timer + TIM + 0x40012C00 + + 0x0 + 0x400 + registers + + + TIM1_BRK_UP_TRG_COM + TIM1 Break, Update, Trigger and Commutation Interrupt + 13 + + + TIM1_CC + TIM1 Capture Compare Interrupt + 14 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Clock division + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + CMS + Center-aligned mode + selection + 5 + 2 + + + DIR + Direction + 4 + 1 + + + OPM + One-pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + OIS4 + Output Idle state 4 + 14 + 1 + + + OIS3N + Output Idle state 3 + 13 + 1 + + + OIS3 + Output Idle state 3 + 12 + 1 + + + OIS2N + Output Idle state 2 + 11 + 1 + + + OIS2 + Output Idle state 2 + 10 + 1 + + + OIS1N + Output Idle state 1 + 9 + 1 + + + OIS1 + Output Idle state 1 + 8 + 1 + + + TI1S + TI1 selection + 7 + 1 + + + MMS + Master mode selection + 4 + 3 + + + CCUS + Capture/compare control update + selection + 2 + 1 + + + CCPC + Capture/compare preloaded + control + 0 + 1 + + + + + SMCR + SMCR + slave mode control register + 0x8 + 0x20 + read-write + 0x0000 + + + ETP + External trigger polarity + 15 + 1 + + + ECE + External clock enable + 14 + 1 + + + ETPS + External trigger prescaler + 12 + 2 + + + ETF + External trigger filter + 8 + 4 + + + MSM + Master/Slave mode + 7 + 1 + + + TS + Trigger selection + 4 + 3 + + + OCCS + OCREF clear selection bit + 3 + 1 + + + SMS + Slave mode selection + 0 + 3 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + BIE + Break interrupt enable + 7 + 1 + + + TIE + Trigger interrupt enable + 6 + 1 + + + COMIE + COM interrupt enable + 5 + 1 + + + CC4IE + Capture/Compare 4 interrupt + enable + 4 + 1 + + + CC3IE + Capture/Compare 3 interrupt + enable + 3 + 1 + + + CC2IE + Capture/Compare 2 interrupt + enable + 2 + 1 + + + CC1IE + Capture/Compare 1 interrupt + enable + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC4OF + Capture/Compare 4 overcapture + flag + 12 + 1 + + + CC3OF + Capture/Compare 3 overcapture + flag + 11 + 1 + + + CC2OF + Capture/compare 2 overcapture + flag + 10 + 1 + + + CC1OF + Capture/Compare 1 overcapture + flag + 9 + 1 + + + BIF + Break interrupt flag + 7 + 1 + + + TIF + Trigger interrupt flag + 6 + 1 + + + COMIF + COM interrupt flag + 5 + 1 + + + CC4IF + Capture/Compare 4 interrupt + flag + 4 + 1 + + + CC3IF + Capture/Compare 3 interrupt + flag + 3 + 1 + + + CC2IF + Capture/Compare 2 interrupt + flag + 2 + 1 + + + CC1IF + Capture/compare 1 interrupt + flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + BG + Break generation + 7 + 1 + + + TG + Trigger generation + 6 + 1 + + + COMG + Capture/Compare control update + generation + 5 + 1 + + + CC4G + Capture/compare 4 + generation + 4 + 1 + + + CC3G + Capture/compare 3 + generation + 3 + 1 + + + CC2G + Capture/compare 2 + generation + 2 + 1 + + + CC1G + Capture/compare 1 + generation + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC2CE + Output Compare 2 clear + enable + 15 + 1 + + + OC2M + Output Compare 2 mode + 12 + 3 + + + OC2PE + Output Compare 2 preload + enable + 11 + 1 + + + OC2FE + Output Compare 2 fast + enable + 10 + 1 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + OC1CE + Output Compare 1 clear + enable + 7 + 1 + + + OC1M + Output Compare 1 mode + 4 + 3 + + + OC1PE + Output Compare 1 preload + enable + 3 + 1 + + + OC1FE + Output Compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC2F + Input capture 2 filter + 12 + 4 + + + IC2PSC + Input capture 2 prescaler + 10 + 2 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + IC1F + Input capture 1 filter + 4 + 4 + + + ICPSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR2_Output + CCMR2_Output + capture/compare mode register (output + mode) + 0x1C + 0x20 + read-write + 0x00000000 + + + OC4CE + Output compare 4 clear + enable + 15 + 1 + + + OC4M + Output compare 4 mode + 12 + 3 + + + OC4PE + Output compare 4 preload + enable + 11 + 1 + + + OC4FE + Output compare 4 fast + enable + 10 + 1 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + OC3CE + Output compare 3 clear + enable + 7 + 1 + + + OC3M + Output compare 3 mode + 4 + 3 + + + OC3PE + Output compare 3 preload + enable + 3 + 1 + + + OC3FE + Output compare 3 fast + enable + 2 + 1 + + + CC3S + Capture/Compare 3 + selection + 0 + 2 + + + + + CCMR2_Input + CCMR2_Input + capture/compare mode register 2 (input + mode) + CCMR2_Output + 0x1C + 0x20 + read-write + 0x00000000 + + + IC4F + Input capture 4 filter + 12 + 4 + + + IC4PSC + Input capture 4 prescaler + 10 + 2 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + IC3F + Input capture 3 filter + 4 + 4 + + + IC3PSC + Input capture 3 prescaler + 2 + 2 + + + CC3S + Capture/compare 3 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC4P + Capture/Compare 3 output + Polarity + 13 + 1 + + + CC4E + Capture/Compare 4 output + enable + 12 + 1 + + + CC3NP + Capture/Compare 3 output + Polarity + 11 + 1 + + + CC3NE + Capture/Compare 3 complementary output + enable + 10 + 1 + + + CC3P + Capture/Compare 3 output + Polarity + 9 + 1 + + + CC3E + Capture/Compare 3 output + enable + 8 + 1 + + + CC2NP + Capture/Compare 2 output + Polarity + 7 + 1 + + + CC2NE + Capture/Compare 2 complementary output + enable + 6 + 1 + + + CC2P + Capture/Compare 2 output + Polarity + 5 + 1 + + + CC2E + Capture/Compare 2 output + enable + 4 + 1 + + + CC1NP + Capture/Compare 1 output + Polarity + 3 + 1 + + + CC1NE + Capture/Compare 1 complementary output + enable + 2 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + RCR + RCR + repetition counter register + 0x30 + 0x20 + read-write + 0x0000 + + + REP + Repetition counter value + 0 + 8 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + CCR2 + CCR2 + capture/compare register 2 + 0x38 + 0x20 + read-write + 0x00000000 + + + CCR2 + Capture/Compare 2 value + 0 + 16 + + + + + CCR3 + CCR3 + capture/compare register 3 + 0x3C + 0x20 + read-write + 0x00000000 + + + CCR3 + Capture/Compare value + 0 + 16 + + + + + CCR4 + CCR4 + capture/compare register 4 + 0x40 + 0x20 + read-write + 0x00000000 + + + CCR4 + Capture/Compare value + 0 + 16 + + + + + BDTR + BDTR + break and dead-time register + 0x44 + 0x20 + read-write + 0x0000 + + + MOE + Main output enable + 15 + 1 + + + AOE + Automatic output enable + 14 + 1 + + + BKP + Break polarity + 13 + 1 + + + BKE + Break enable + 12 + 1 + + + OSSR + Off-state selection for Run + mode + 11 + 1 + + + OSSI + Off-state selection for Idle + mode + 10 + 1 + + + LOCK + Lock configuration + 8 + 2 + + + DTG + Dead-time generator setup + 0 + 8 + + + + + + + TIM16 + General purpose timer + TIM + 0x40014400 + + 0x00 + 0x400 + registers + + + TIM16 + TIM16 global Interrupt + 21 + + + + CR1 + CR1 + TIM16 control register1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Prescaler factor + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + OPM + One pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + UG + Update generation + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + RCR + RCR + repetition counter register + 0x30 + 0x20 + read-write + 0x0000 + + + REP + Repetition counter value + 0 + 8 + + + + + + + SYSCFG + System configuration controller + SYSCFG + 0x40010000 + + 0x0 + 0x30 + registers + + + + CFGR1 + CFGR1 + SYSCFG configuration register + 1 + 0x0 + 0x20 + read-write + 0x00000000 + + + I2C_PF1_ANF + Analog filter enable control driving capability + activation bits PF1 + 30 + 1 + + + I2C_PF0_ANF + Analog filter enable control driving capability + activation bits PF0 + 29 + 1 + + + I2C_PB8_ANF + Analog filter enable control driving capability + activation bits PB8 + 28 + 1 + + + I2C_PB7_ANF + Analog filter enable control driving capability + activation bits PB7 + 27 + 1 + + I2C_PB6_ANF + Analog filter enable control driving capability + activation bits PB6 + 26 + 1 + + + I2C_PA12_ANF + Analog filter enable control driving capability + activation bits PA12 + 25 + 1 + + + I2C_PA11_ANF + Analog filter enable control driving capability + activation bits PA11 + 24 + 1 + + + I2C_PA10_ANF + Analog filter enable control driving capability + activation bits PA10 + 23 + 1 + + + I2C_PA9_ANF + Analog filter enable control driving capability + activation bits PA9 + 22 + 1 + + + I2C_PA8_ANF + Analog filter enable control driving capability + activation bits PA8 + 21 + 1 + + + I2C_PA7_ANF + Analog filter enable control driving capability + activation bits PA7 + 20 + 1 + + + I2C_PA3_ANF + Analog filter enable control driving capability + activation bits PA3 + 19 + 1 + + + I2C_PA2_ANF + Analog filter enable control driving capability + activation bits PA2 + 18 + 1 + + + MEM_MODE + Memory mapping selection + bits + 0 + 2 + + + + + CFGR2 + CFGR2 + SYSCFG configuration register + 2 + 0x18 + 0x20 + read-write + 0x00000000 + + + ETR_SRC_TIM1 + TIM1 ETR source selection + 9 + 2 + + + LOCKUP_LOCK + Cortex-M0+ LOCKUP bit enable + bit + 0 + 1 + + + + + + + FLASH + Flash + Flash + 0x40022000 + + 0x0 + 0x400 + registers + + + FLASH + FLASH global Interrupt + 3 + + + + ACR + ACR + Access control register + 0x0 + 0x20 + read-write + 0x00000600 + + + LATENCY + Latency + 0 + 1 + + + + + KEYR + KEYR + Flash key register + 0x8 + 0x20 + write-only + 0x00000000 + + + KEY + Flash key + 0 + 32 + + + + + OPTKEYR + OPTKEYR + Option byte key register + 0xC + 0x20 + write-only + 0x00000000 + + + OPTKEY + Option byte key + 0 + 32 + + + + + SR + SR + Status register + 0x10 + 0x20 + read-write + 0x00000000 + + + BSY + Busy + 16 + 1 + + + OPTVERR + Option and Engineering bits loading + validity error + 15 + 1 + + + WRPERR + Write protected error + 4 + 1 + + + EOP + End of operation + 0 + 1 + + + + + CR + CR + Flash control register + 0x14 + 0x20 + read-write + 0xC0000000 + + + LOCK + FLASH_CR Lock + 31 + 1 + + + OPTLOCK + Options Lock + 30 + 1 + + + OBL_LAUNCH + Force the option byte + loading + 27 + 1 + + + ERRIE + Error interrupt enable + 25 + 1 + + + EOPIE + End of operation interrupt + enable + 24 + 1 + + + PGTSTRT + Flash main memory program start + 19 + 1 + + + OPTSTRT + Option byte program start + 17 + 1 + + + SER + Sector erase + 11 + 1 + + + MER + Mass erase + 2 + 1 + + + PER + Page erase + 1 + 1 + + + PG + Programming + 0 + 1 + + + + + OPTR + OPTR + Flash option register + 0x20 + 0x20 + read-write + 0x4F55B0AA + + + nBOOT1 + Boot configuration + 15 + 1 + + + NRST_MODE + NRST_MODE + 14 + 1 + + + IDWG_SW + Independent watchdog + selection + 12 + 1 + + + BORF_LEV + These bits contain the VDD supply level + threshold that activates the reset + 9 + 3 + + + BOREN + BOR reset Level + 8 + 1 + + + RDP + Read Protection + 0 + 8 + + + + + SDKR + SDKR + Flash SDK address + register + 0x24 + 0x20 + read-write + 0xFFE0001F + + + SDK_END + SDK area end address + 8 + 5 + + + SDK_STRT + SDK area start address + 0 + 5 + + + + + WRPR + WRPR + Flash WRP address + register + 0x2C + 0x20 + read-write + 0x0000FFFF + + + WRP + WRP address + 0 + 16 + + + + + STCR + STCR + Flash sleep time config + register + 0x90 + 0x20 + read-write + 0x00006400 + + + SLEEP_TIME + FLash sleep time configuration(counter based on HSI_10M) + 8 + 8 + + + SLEEP_EN + FLash sleep enable + 0 + 1 + + + + + TS0 + TS0 + Flash TS0 + register + 0x100 + 0x20 + read-write + 0x000000B4 + + + TS0 + FLash TS0 register + 0 + 8 + + + + + TS1 + TS1 + Flash TS1 + register + 0x104 + 0x20 + read-write + 0x000001B0 + + + TS1 + FLash TS1 register + 0 + 9 + + + + + TS2P + TS2P + Flash TS2P + register + 0x108 + 0x20 + read-write + 0x000000B4 + + + TS2P + FLash TS2P register + 0 + 8 + + + + + TPS3 + TPS3 + Flash TPS3 + register + 0x10C + 0x20 + read-write + 0x000006C0 + + + TPS3 + FLash TPS3 register + 0 + 11 + + + + + TS3 + TS3 + Flash TS3 + register + 0x110 + 0x20 + read-write + 0x000000B4 + + + TS3 + FLash TS3 register + 0 + 8 + + + + + PERTPE + PERTPE + Flash PERTPE + register + 0x114 + 0x20 + read-write + 0x0000EA60 + + + PERTPE + FLash PERTPE register + 0 + 17 + + + + + SMERTPE + SMERTPE + Flash SMERTPE + register + 0x118 + 0x20 + read-write + 0x0000FD20 + + + SMERTPE + FLash SMERTPE register + 0 + 17 + + + + + PRGTPE + PRGTPE + Flash PRGTPE + register + 0x11C + 0x20 + read-write + 0x00008CA0 + + + PRGTPE + FLash PRGTPE register + 0 + 16 + + + + + PRETPE + PRETPE + Flash PRETPE + register + 0x120 + 0x20 + read-write + 0x000012C0 + + + PRETPE + FLash PRETPE register + 0 + 13 + + + + + + + CRC + CRC calculation unit + CRC + 0x40023000 + + 0x0 + 0x400 + registers + + + + DR + DR + Data register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + DR + Data Register + 0 + 32 + + + + + IDR + IDR + Independent Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + IDR + Independent Data register + 0 + 8 + + + + + CR + CR + Control register + 0x8 + 0x20 + write-only + 0x00000000 + + + RESET + Reset bit + 0 + 1 + + + + + + + SPI1 + Serial peripheral interface + SPI + 0x40013000 + + 0x0 + 0x400 + registers + + + SPI1 + SPI1 global Interrupt + 25 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + BIDIMODE + Bidirectional data mode + enable + 15 + 1 + + + BIDIOE + Output enable in bidirectional + mode + 14 + 1 + + + RXONLY + Receive only + 10 + 1 + + + SSM + Software slave management + 9 + 1 + + + SSI + Internal slave selection + 8 + 1 + + + LSBFIRST + Frame format + 7 + 1 + + + SPE + SPI enable + 6 + 1 + + + BR + Baud rate control + 3 + 3 + + + MSTR + Master selection + 2 + 1 + + + CPOL + Clock polarity + 1 + 1 + + + CPHA + Clock phase + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + SLVFM + Slave fast mode enable + 15 + 1 + + + FRXTH + FIFO reception threshold + 12 + 1 + + + DS + Data length + + 11 + 1 + + + TXEIE + Tx buffer empty interrupt + enable + 7 + 1 + + + RXNEIE + RX buffer not empty interrupt + enable + 6 + 1 + + + ERRIE + Error interrupt enable + 5 + 1 + + + SSOE + SS output enable + 2 + 1 + + + + + SR + SR + status register + 0x8 + 0x20 + 0x0002 + + + FTLVL + FIFO transmission level + 11 + 2 + read-only + + + FRLVL + FIFO reception level + 9 + 2 + read-only + + + BSY + Busy flag + 7 + 1 + read-only + + + OVR + Overrun flag + 6 + 1 + read-only + + + MODF + Mode fault + 5 + 1 + read-only + + + TXE + Transmit buffer empty + 1 + 1 + read-only + + + RXNE + Receive buffer not empty + 0 + 1 + read-only + + + + + DR + DR + data register + 0xC + 0x20 + read-write + 0x0000 + + + DR + Data register + 0 + 16 + + + + + + + I2C + Inter integrated circuit + I2C + 0x40005400 + + 0x0 + 0x400 + registers + + + I2C1 + I2C1 global Interrupt + 23 + + + + CR1 + CR1 + Control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + SWRST + Software reset + 15 + 1 + + + PEC + Packet error checking + 12 + 1 + + + POS + Acknowledge/PEC Position (for data + reception) + 11 + 1 + + + ACK + Acknowledge enable + 10 + 1 + + + STOP + Stop generation + 9 + 1 + + + START + Start generation + 8 + 1 + + + NOSTRETCH + Clock stretching disable (Slave + mode) + 7 + 1 + + + ENGC + General call enable + 6 + 1 + + + ENPEC + PEC enable + 5 + 1 + + + PE + Peripheral enable + 0 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + ITBUFEN + Buffer interrupt enable + 10 + 1 + + + ITEVTEN + Event interrupt enable + 9 + 1 + + + ITERREN + Error interrupt enable + 8 + 1 + + + FREQ + Peripheral clock frequency + 0 + 6 + + + + + OAR1 + OAR1 + Own address register 1 + 0x8 + 0x20 + read-write + 0x0000 + + + ADD + Interface address + 1 + 7 + + + + + DR + DR + Data register + 0x10 + 0x20 + read-write + 0x0000 + + + DR + 8-bit data register + 0 + 8 + + + + + SR1 + SR1 + Status register 1 + 0x14 + 0x20 + 0x0000 + + + PECERR + PEC Error in reception + 12 + 1 + read-write + + + OVR + Overrun/Underrun + 11 + 1 + read-write + + + AF + Acknowledge failure + 10 + 1 + read-write + + + ARLO + Arbitration lost (master + mode) + 9 + 1 + read-write + + + BERR + Bus error + 8 + 1 + read-write + + + TxE + Data register empty + (transmitters) + 7 + 1 + read-only + + + RxNE + Data register not empty + (receivers) + 6 + 1 + read-only + + + STOPF + Stop detection (slave + mode) + 4 + 1 + read-only + + + BTF + Byte transfer finished + 2 + 1 + read-only + + + ADDR + Address sent (master mode)/matched + (slave mode) + 1 + 1 + read-only + + + SB + Start bit (Master mode) + 0 + 1 + read-only + + + + + SR2 + SR2 + Status register 2 + 0x18 + 0x20 + read-only + 0x0000 + + + PEC + acket error checking + register + 8 + 8 + + + DUALF + Dual flag (Slave mode) + 7 + 1 + + + GENCALL + General call address (Slave + mode) + 4 + 1 + + + TRA + Transmitter/receiver + 2 + 1 + + + BUSY + Bus busy + 1 + 1 + + + MSL + Master/slave + 0 + 1 + + + + + CCR + CCR + Clock control register + 0x1C + 0x20 + read-write + 0x0000 + + + F_S + I2C master mode selection + 15 + 1 + + + DUTY + Fast mode duty cycle + 14 + 1 + + + CCR + Clock control register in Fast/Standard + mode (Master mode) + 0 + 12 + + + + + TRISE + TRISE + TRISE register + 0x20 + 0x20 + read-write + 0x0002 + + + TRISE + Maximum rise time in Fast/Standard mode + (Master mode) + 0 + 6 + + + + + + + DBGMCU + Debug support + DBGMCU + 0x40015800 + + 0x0 + 0x400 + registers + + + + IDCODE + IDCODE + MCU Device ID Code Register + 0x0 + 0x20 + read-only + 0x0 + + + + + + CR + CR + Debug MCU Configuration + Register + 0x4 + 0x20 + read-write + 0x0 + + + DBG_STOP + Debug Stop Mode + 1 + 1 + + + + + APB_FZ1 + APB_FZ1 + APB Freeze Register1 + 0x8 + 0x20 + read-write + 0x0 + + + DBG_IWDG_STOP + Debug Independent Wachdog stopped when + Core is halted + 12 + 1 + + + DBG_LPTIM_STOP + Debug LPTIM stopped when Core is + halted + 31 + 1 + + + + + APB_FZ2 + APB_FZ2 + APB Freeze Register2 + 0xC + 0x20 + read-write + 0x0 + + + DBG_TIMER1_STOP + Debug Timer 1 stopped when Core is + halted + 11 + 1 + + + DBG_TIMER16_STOP + Debug Timer 16 stopped when Core is + halted + 17 + 1 + + + + + + + diff --git a/Misc/SVD/py32f002xx.svd b/Misc/SVD/py32f002xx.svd new file mode 100644 index 0000000..aebe47e --- /dev/null +++ b/Misc/SVD/py32f002xx.svd @@ -0,0 +1,7953 @@ + + + + Puya + Puya + PY32F0xx_DFP + + PY32F0 + 1.0.0 + Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. + + + + CM0+ + r0p1 + little + false + false + 4 + false + + + + 8 + 32 + 32 + read-write + 0x00000000 + 0xFFFFFFFF + + + ADC + Analog to Digital Converter + ADC + 0x40012400 + + 0x0 + 0x400 + registers + + + ADC + ADC Interrupt through EXTI Lines 17 and 18 + 12 + + + + ISR + ISR + ADC interrupt and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + AWD + ADC analog watchdog flag + 7 + 1 + + + OVR + ADC group regular overrun + flag + 4 + 1 + + + EOSEQ + ADC group regular end of sequence + conversions flag + 3 + 1 + + + EOC + ADC group regular end of unitary + conversion flag + 2 + 1 + + + EOSMP + ADC group regular end of sampling + flag + 1 + 1 + + + + + IER + IER + ADC interrupt enable register + 0x4 + 0x20 + read-write + 0x00000000 + + + AWDIE + ADC analog watchdog + interrupt + 7 + 1 + + + OVRIE + ADC group regular overrun + interrupt + 4 + 1 + + + EOSEQIE + ADC group regular end of sequence + conversions interrupt + 3 + 1 + + + EOCIE + ADC group regular end of unitary + conversion interrupt + 2 + 1 + + + EOSMPIE + ADC group regular end of sampling + interrupt + 1 + 1 + + + + + CR + CR + ADC control register + 0x8 + 0x20 + read-write + 0x00000000 + + + ADCAL + ADC group regular conversion + calibration + 31 + 1 + + + VERBUFF_SEL + desc VERBUFF_SEL + 6 + 2 + + + VREF_BUFFERE + desc VREF_BUFFERE + 5 + 1 + + + ADSTP + ADC group regular conversion + stop + 4 + 1 + + + ADSTART + ADC group regular conversion + start + 2 + 1 + + + ADEN + ADC enable + 0 + 1 + + + + + CFGR1 + CFGR1 + ADC configuration register 1 + 0xC + 0x20 + read-write + 0x00000000 + + + AWDCH + ADC analog watchdog monitored channel + selection + 26 + 4 + + + AWDEN + ADC analog watchdog enable on scope + ADC group regular + 23 + 1 + + + AWDSGL + ADC analog watchdog monitoring a + single channel or all channels + 22 + 1 + + + DISCEN + ADC group regular sequencer + discontinuous mode + 16 + 1 + + + WAIT + Wait conversion mode + 14 + 1 + + + CONT + ADC group regular continuous conversion + mode + 13 + 1 + + + OVRMOD + ADC group regular overrun + configuration + 12 + 1 + + + EXTEN + ADC group regular external trigger + polarity + 10 + 2 + + + EXTSEL + ADC group regular external trigger + source + 6 + 3 + + + ALIGN + ADC data alignement + 5 + 1 + + + RESSEL + ADC data resolution + 3 + 2 + + + SCANDIR + Scan sequence direction + 2 + 1 + + + + + CFGR2 + CFGR2 + ADC configuration register 2 + 0x10 + 0x20 + read-write + 0x00000000 + + + CKMODE + ADC clock mode + 28 + 4 + + + + + SMPR + SMPR + ADC sampling time register + 0x14 + 0x20 + read-write + 0x00000000 + + + SMP + Sampling time selection + 0 + 3 + + + + + TR + TR + ADC analog watchdog 1 threshold register + 0x20 + 0x20 + read-write + 0x0FFF0000 + + + HT + ADC analog watchdog threshold + high + 16 + 12 + + + LT + ADC analog watchdog threshold + low + 0 + 12 + + + + + CHSELR + CHSELR + ADC group regular sequencer register + 0x28 + 0x20 + read-write + 0x0FFF0000 + + + CHSEL12 + Channel-12 selection + 12 + 1 + + + CHSEL11 + Channel-11 selection + 11 + 1 + + + CHSEL9 + Channel-9 selection + 9 + 1 + + + CHSEL8 + Channel-8 selection + 8 + 1 + + + CHSEL7 + Channel-7 selection + 7 + 1 + + + CHSEL6 + Channel-6 selection + 6 + 1 + + + CHSEL5 + Channel-5 selection + 5 + 1 + + + CHSEL4 + Channel-4 selection + 4 + 1 + + + CHSEL3 + Channel-3 selection + 3 + 1 + + + CHSEL2 + Channel-2 selection + 2 + 1 + + + CHSEL1 + Channel-1 selection + 1 + 1 + + + CHSEL0 + Channel-0 selection + 0 + 1 + + + + + DR + DR + ADC group regular data register + 0x40 + 0x20 + read-only + 0x00000000 + + + DATA + ADC group regular conversion + data + 0 + 16 + + + + + CCSR + CCSR + ADC calibration configuration and status register + 0x44 + 0x20 + read-write + 0x00000000 + + + CALON + Calibration flag + 31 + 1 + read-only + + + CALFAIL + Calibration fail flag + 30 + 1 + + + OFFSUC + desc OFFSUC + 29 + 1 + + + CALSET + Calibration factor selection + 15 + 1 + + + CALBYP + desc CALBYP + 14 + 1 + + + CALSMP + Calibration sample time selection + 12 + 2 + + + CALSEL + Calibration contents selection + 11 + 1 + + + + + CALRR1 + CALRR1 + ADC calibration result register 1 + 0x48 + 0x20 + read-only + 0x00000000 + + + CALBOUT + offset result + 16 + 7 + + + CALC5OUT + C5 result + 8 + 8 + + + CALC4OUT + C4 result + 0 + 8 + + + + + CALRR2 + CALRR2 + ADC calibration result register 2 + 0x4C + 0x20 + read-only + 0x00000000 + + + CALC3OUT + C3 result + 24 + 8 + + + CALC2OUT + C2 result + 16 + 8 + + + CALC1OUT + C1 result + 8 + 8 + + + CALC0OUT + C0 result + 0 + 8 + + + + + CALFIR1 + CALFIR1 + ADC calibration factor input register 1 + 0x50 + 0x20 + read-write + 0x00000000 + + + CALBIO + Calibration offset factor input + 16 + 7 + + + CALC5IO + Calibration C5 factor input + 8 + 8 + + + CALC4IO + Calibration C4 factor input + 0 + 8 + + + + + CALFIR2 + CALFIR2 + ADC calibration factor input register 2 + 0x54 + 0x20 + read-write + 0x00000000 + + + CALC3IO + Calibration C3 factor input + 24 + 8 + + + CALC2IO + Calibration C2 factor input + 16 + 8 + + + CALC1IO + Calibration C1 factor input + 8 + 8 + + + CALC0IO + Calibration C0 factor input + 0 + 8 + + + + + CCR + CCR + ADC common configuration register + 0x308 + 0x20 + read-write + 0x00000000 + + + TSEN + Temperature sensor enable + 23 + 1 + + + VREFEN + VREFINT enable + 22 + 1 + + + + + + + RCC + Reset and clock control + RCC + 0x40021000 + + 0x0 + 0x400 + registers + + + RCC + RCC global Interrupt + 4 + + + + CR + CR + Clock control register + 0x0 + 0x20 + read-write + 0x00000100 + + + HSIDIV + HSI16 clock division + factor + 11 + 3 + + + HSIRDY + HSI16 clock ready flag + 10 + 1 + + + HSION + HSI16 clock enable + 8 + 1 + + + + + ICSCR + ICSCR + Internal clock sources calibration + register + 0x4 + 0x20 + 0x10000000 + + + LSI_STARTUP + LSI startup time + 26 + 2 + read-write + + + LSI_TRIM + LSI clock trimming + 16 + 9 + read-write + + + HSI_FS + HSI frequency selection + 13 + 3 + read-write + + + HSI_TRIM + HSI clock trimming + 0 + 13 + read-write + + + + + CFGR + CFGR + Clock configuration register + 0x8 + 0x20 + 0x00000000 + + + MCOPRE + Microcontroller clock output + prescaler + 28 + 3 + read-write + + + MCOSEL + Microcontroller clock + output + 24 + 3 + read-write + + + PPRE + APB prescaler + 12 + 3 + read-write + + + HPRE + AHB prescaler + 8 + 4 + read-write + + + SWS + System clock switch status + 3 + 3 + read-only + + + SW + System clock switch + 0 + 3 + read-write + + + + + ECSCR + ECSCR + External clock source control register + 0x10 + 0x20 + 0x00000000 + + + LSE_DRIVER + desc LSE_DRIVER + 16 + 2 + read-write + + + + + CIER + CIER + Clock interrupt enable + register + 0x18 + 0x20 + read-write + 0x00000000 + + + HSIRDYIE + HSI ready interrupt enable + 3 + 1 + + + LSERDYIE + LSE ready interrupt enable + 1 + 1 + + + LSIRDYIE + LSI ready interrupt enable + 0 + 1 + + + + + CIFR + CIFR + Clock interrupt flag register + 0x1C + 0x20 + read-only + 0x00000000 + + + LSECSSF + LSE clock secure system interrupt flag + 9 + 1 + + + HSIRDYF + HSI ready interrupt flag + 3 + 1 + + + LSERDYF + LSE ready interrupt flag + 2 + 1 + + + LSIRDYF + LSI ready interrupt flag + 0 + 1 + + + + + CICR + CICR + Clock interrupt clear register + 0x20 + 0x20 + write-only + 0x00000000 + + + LSECSSC + LSE clock secure system interrupt flag clear + 9 + 1 + + + HSIRDYC + HSI ready interrupt clear + 3 + 1 + + + LSERDYC + LSE ready interrupt clear + 1 + 1 + + + LSIRDYC + LSI ready interrupt clear + 0 + 1 + + + + + IOPRSTR + IOPRSTR + GPIO reset register + 0x24 + 0x20 + read-write + 0x00000000 + + + GPIOCRST + I/O port C reset + 2 + 1 + + + GPIOBRST + I/O port B reset + 1 + 1 + + + GPIOARST + I/O port A reset + 0 + 1 + + + + + AHBRSTR + AHBRSTR + AHB peripheral reset register + 0x28 + 0x20 + read-write + 0x00000000 + + + CRCRST + CRC reset + 12 + 1 + + + FLASHRST + FLASH reset + 8 + 1 + + + DMARST + DMA reset + 0 + 1 + + + + + APBRSTR1 + APBRSTR1 + APB peripheral reset register 1 + 0x2C + 0x20 + read-write + 0x00000000 + + + LPTIMRST + Low Power Timer reset + 31 + 1 + + + PWRRST + Power interface reset + 28 + 1 + + + DBGRST + Debug support reset + 27 + 1 + + + I2CRST + I2C reset + 21 + 1 + + + TIM6RST + TIM6 reset + 4 + 1 + + + + + APBRSTR2 + APBRSTR2 + APB peripheral reset register + 2 + 0x30 + 0x20 + read-write + 0x00000000 + + + ADCRST + ADC reset + 20 + 1 + + + USART1RST + USART1 reset + 14 + 1 + + + SPI1RST + SPI1 reset + 12 + 1 + + + TIM1RST + TIM1 timer reset + 11 + 1 + + + SYSCFGRST + SYSCFG and COMP + reset + 0 + 1 + + + + + IOPENR + IOPENR + GPIO clock enable register + 0x34 + 0x20 + read-write + 0x00000000 + + + GPIOCEN + I/O port C clock enable + 2 + 1 + + + GPIOBEN + I/O port B clock enable + 1 + 1 + + + GPIOAEN + I/O port A clock enable + 0 + 1 + + + + + AHBENR + AHBENR + AHB peripheral clock enable + register + 0x38 + 0x20 + read-write + 0x00000000 + + + CRCEN + CRC clock enable + 12 + 1 + + + SRAMEN + SRAM memory interface clock enable + 9 + 1 + + + FLASHEN + Flash memory interface clock enable + 8 + 1 + + + DMAEN + DMA interface clock enable + 0 + 1 + + + + + APBENR1 + APBENR1 + APB peripheral clock enable register + 1 + 0x3C + 0x20 + read-write + 0x00000000 + + + LPTIMEN + LPTIM clock enable + 31 + 1 + + + PWREN + Power interface clock + enable + 28 + 1 + + + DBGEN + Debug support clock enable + 27 + 1 + + + I2CEN + I2C clock enable + 21 + 1 + + + TIM6EN + TIM6 clock enable + 4 + 1 + + + + + APBENR2 + APBENR2 + APB peripheral clock enable register + 2 + 0x40 + 0x20 + read-write + 0x00000000 + + + ADCEN + ADC clock enable + 20 + 1 + + + USART1EN + USART1 clock enable + 14 + 1 + + + SPI1EN + SPI1 clock enable + 12 + 1 + + + TIM1EN + TIM1 timer clock enable + 11 + 1 + + + SYSCFGEN + SYSCFG, COMP and VREFBUF clock + enable + 0 + 1 + + + + + CCIPR + CCIPR + Peripherals independent clock configuration + register + 0x54 + 0x20 + read-write + 0x00000000 + + + LPTIM1SEL + LPTIM1 clock source + selection + 18 + 2 + + + + + BDCR + BDCR + RTC domain control register + 0x5C + 0x20 + read-write + 0x00000000 + + + LSCOSEL + + Low-speed clock output + selection + + 25 + 1 + + + LSCOEN + + Low-speed clock output (LSCO) + enable + + 24 + 1 + + + LSECSSD + LSE CSS detect + 6 + 1 + + + LSECSSON + LSE CSS enable + 5 + 1 + + + LSEBYP + LSE oscillator bypass + 2 + 1 + + + LSERDY + LSE oscillator ready + 1 + 1 + + + LSEON + LSE oscillator enable + 0 + 1 + + + + + CSR + CSR + Control/status register + 0x60 + 0x20 + read-write + 0x00000000 + + + IWDGRSTF + Independent window watchdog reset + flag + 29 + 1 + + + SFTRSTF + Software reset flag + 28 + 1 + + + PWRRSTF + BOR or POR/PDR flag + 27 + 1 + + + PINRSTF + Pin reset flag + 26 + 1 + + + OBLRSTF + Option byte loader reset + flag + 25 + 1 + + + RMVF + Remove reset flags + 23 + 1 + + + PINRST_FLTDIS + desc PINRST_FLTDIS + 8 + 1 + + + LSIRDY + LSI oscillator ready + 1 + 1 + + + LSION + LSI oscillator enable + 0 + 1 + + + + + + + PWR + Power control + PWR + 0x40007000 + + 0x0 + 0x400 + registers + + + + CR1 + CR1 + Power control register 1 + 0x0 + 0x20 + read-write + 0x00030000 + + + HSION_CTRL + HSI open time control + 19 + 1 + + + SRAM_RETV + SRAM retention voltage control + 16 + 3 + + + LPR + Low-power run + 14 + 2 + + + FLS_SLPTIME + Flash wait time after wakeup from the stop mode + 12 + 2 + + + MRRDY_TIME + Time selection wakeup from LP to VR + 10 + 2 + + + VOS + Voltage scaling range + selection + 8 + 2 + + + DBP + Disable backup domain write + protection + 7 + 1 + + + BIAS_CR_SEL + MR Bias current selection + 4 + 1 + + + BIAS_CR + MR Bias current + 0 + 4 + + + + + CR2 + CR2 + Power control register 2 + 0x4 + 0x20 + read-write + 0x00000500 + + + FLT_TIME + Digital filter time configuration + 9 + 3 + + + FLTEN + Digital filter enable + 8 + 1 + + + + + + + GPIOA + General-purpose I/Os + GPIO + 0x50000000 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xEBFFFFFF + + + MODE15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + MODE14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + MODE13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + MODE12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + MODE11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + MODE10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + MODE9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT15 + Port x configuration bits (y = + 0..15) + 15 + 1 + + + OT14 + Port x configuration bits (y = + 0..15) + 14 + 1 + + + OT13 + Port x configuration bits (y = + 0..15) + 13 + 1 + + + OT12 + Port x configuration bits (y = + 0..15) + 12 + 1 + + + OT11 + Port x configuration bits (y = + 0..15) + 11 + 1 + + + OT10 + Port x configuration bits (y = + 0..15) + 10 + 1 + + + OT9 + Port x configuration bits (y = + 0..15) + 9 + 1 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x0C000000 + + + OSPEED15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + OSPEED14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + OSPEED13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + OSPEED12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + OSPEED11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + OSPEED10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + OSPEED9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x24000000 + + + PUPD15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + PUPD14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + PUPD13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + PUPD12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + PUPD11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + PUPD10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + PUPD9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID15 + Port input data (y = + 0..15) + 15 + 1 + + + ID14 + Port input data (y = + 0..15) + 14 + 1 + + + ID13 + Port input data (y = + 0..15) + 13 + 1 + + + ID12 + Port input data (y = + 0..15) + 12 + 1 + + + ID11 + Port input data (y = + 0..15) + 11 + 1 + + + ID10 + Port input data (y = + 0..15) + 10 + 1 + + + ID9 + Port input data (y = + 0..15) + 9 + 1 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD15 + Port output data (y = + 0..15) + 15 + 1 + + + OD14 + Port output data (y = + 0..15) + 14 + 1 + + + OD13 + Port output data (y = + 0..15) + 13 + 1 + + + OD12 + Port output data (y = + 0..15) + 12 + 1 + + + OD11 + Port output data (y = + 0..15) + 11 + 1 + + + OD10 + Port output data (y = + 0..15) + 10 + 1 + + + OD9 + Port output data (y = + 0..15) + 9 + 1 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR15 + Port x reset bit y (y = + 0..15) + 31 + 1 + + + BR14 + Port x reset bit y (y = + 0..15) + 30 + 1 + + + BR13 + Port x reset bit y (y = + 0..15) + 29 + 1 + + + BR12 + Port x reset bit y (y = + 0..15) + 28 + 1 + + + BR11 + Port x reset bit y (y = + 0..15) + 27 + 1 + + + BR10 + Port x reset bit y (y = + 0..15) + 26 + 1 + + + BR9 + Port x reset bit y (y = + 0..15) + 25 + 1 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS15 + Port x set bit y (y= + 0..15) + 15 + 1 + + + BS14 + Port x set bit y (y= + 0..15) + 14 + 1 + + + BS13 + Port x set bit y (y= + 0..15) + 13 + 1 + + + BS12 + Port x set bit y (y= + 0..15) + 12 + 1 + + + BS11 + Port x set bit y (y= + 0..15) + 11 + 1 + + + BS10 + Port x set bit y (y= + 0..15) + 10 + 1 + + + BS9 + Port x set bit y (y= + 0..15) + 9 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK15 + Port x lock bit y (y= + 0..15) + 15 + 1 + + + LCK14 + Port x lock bit y (y= + 0..15) + 14 + 1 + + + LCK13 + Port x lock bit y (y= + 0..15) + 13 + 1 + + + LCK12 + Port x lock bit y (y= + 0..15) + 12 + 1 + + + LCK11 + Port x lock bit y (y= + 0..15) + 11 + 1 + + + LCK10 + Port x lock bit y (y= + 0..15) + 10 + 1 + + + LCK9 + Port x lock bit y (y= + 0..15) + 9 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR15 + Port Reset bit + 15 + 1 + + + BR14 + Port Reset bit + 14 + 1 + + + BR13 + Port Reset bit + 13 + 1 + + + BR12 + Port Reset bit + 12 + 1 + + + BR11 + Port Reset bit + 11 + 1 + + + BR10 + Port Reset bit + 10 + 1 + + + BR9 + Port Reset bit + 9 + 1 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOB + General-purpose I/Os + GPIO + 0x50000400 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x00000000 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x00000000 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOC + 0x50000800 + + + EXTI + External interrupt/event + controller + EXTI + 0x40021800 + + 0x0 + 0x400 + registers + + + EXTI0_1 + EXTI Line 0 and 1 Interrupt + 5 + + + EXTI2_3 + EXTI Line 2 and 3 Interrupt + 6 + + + EXTI4_15 + EXTI Line 4 to 15 Interrupt + 7 + + + + RTSR + RTSR + EXTI rising trigger selection + register + 0x0 + 0x20 + read-write + 0x00000000 + + + RT7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + RT6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + RT5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + RT4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + RT3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + RT2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + RT1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + RT0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + FTSR + FTSR + EXTI falling trigger selection + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FT7 + Falling trigger event configuration bit + of Configurable Event input + 7 + 1 + + + FT6 + Falling trigger event configuration bit + of Configurable Event input + 6 + 1 + + + FT5 + Falling trigger event configuration bit + of Configurable Event input + 5 + 1 + + + FT4 + Falling trigger event configuration bit + of Configurable Event input + 4 + 1 + + + FT3 + Falling trigger event configuration bit + of Configurable Event input + 3 + 1 + + + FT2 + Falling trigger event configuration bit + of Configurable Event input + 2 + 1 + + + FT1 + Falling trigger event configuration bit + of Configurable Event input + 1 + 1 + + + FT0 + Falling trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + SWIER + SWIER + EXTI software interrupt event + register + 0x8 + 0x20 + read-write + 0x00000000 + + + SWI7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + SWI6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + SWI5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + SWI4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + SWI3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + SWI2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + SWI1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + SWI0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + PR + PR + EXTI pending + register + 0xC + 0x20 + read-write + 0x00000000 + + + PR7 + configurable event inputs x rising edge + Pending bit. + 7 + 1 + + + PR6 + configurable event inputs x rising edge + Pending bit. + 6 + 1 + + + PR5 + configurable event inputs x rising edge + Pending bit. + 5 + 1 + + + PR4 + configurable event inputs x rising edge + Pending bit. + 4 + 1 + + + PR3 + configurable event inputs x rising edge + Pending bit. + 3 + 1 + + + PR2 + configurable event inputs x rising edge + Pending bit. + 2 + 1 + + + PR1 + configurable event inputs x rising edge + Pending bit. + 1 + 1 + + + PR0 + configurable event inputs x rising edge + Pending bit. + 0 + 1 + + + + + EXTICR1 + EXTICR1 + EXTI external interrupt selection + register + 0x60 + 0x20 + read-write + 0x00000000 + + + EXTI3 + GPIO port selection + 24 + 2 + + + EXTI2 + GPIO port selection + 16 + 2 + + + EXTI1 + GPIO port selection + 8 + 2 + + + EXTI0 + GPIO port selection + 0 + 2 + + + + + EXTICR2 + EXTICR2 + EXTI external interrupt selection + register + 0x64 + 0x20 + read-write + 0x00000000 + + + EXTI7 + GPIO port selection + 24 + 1 + + + EXTI6 + GPIO port selection + 16 + 1 + + + EXTI5 + GPIO port selection + 8 + 1 + + + EXTI4 + GPIO port selection + 0 + 2 + + + + + IMR + IMR + EXTI CPU wakeup with interrupt mask + register + 0x80 + 0x20 + read-write + 0xFFF80000 + + + IM29 + CPU wakeup with interrupt mask on event + input + 29 + 1 + + + IM7 + CPU wakeup with interrupt mask on event + input + 7 + 1 + + + IM6 + CPU wakeup with interrupt mask on event + input + 6 + 1 + + + IM5 + CPU wakeup with interrupt mask on event + input + 5 + 1 + + + IM4 + CPU wakeup with interrupt mask on event + input + 4 + 1 + + + IM3 + CPU wakeup with interrupt mask on event + input + 3 + 1 + + + IM2 + CPU wakeup with interrupt mask on event + input + 2 + 1 + + + IM1 + CPU wakeup with interrupt mask on event + input + 1 + 1 + + + IM0 + CPU wakeup with interrupt mask on event + input + 0 + 1 + + + + + EMR + EMR + EXTI CPU wakeup with event mask + register + 0x84 + 0x20 + read-write + 0x00000000 + + + EM29 + CPU wakeup with event mask on event + input + 29 + 1 + + + EM7 + CPU wakeup with event mask on event + input + 7 + 1 + + + EM6 + CPU wakeup with event mask on event + input + 6 + 1 + + + EM5 + CPU wakeup with event mask on event + input + 5 + 1 + + + EM4 + CPU wakeup with event mask on event + input + 4 + 1 + + + EM3 + CPU wakeup with event mask on event + input + 3 + 1 + + + EM2 + CPU wakeup with event mask on event + input + 2 + 1 + + + EM1 + CPU wakeup with event mask on event + input + 1 + 1 + + + EM0 + CPU wakeup with event mask on event + input + 0 + 1 + + + + + + + LPTIM1 + Low power timer + LPTIM1 + 0x40007C00 + + 0x0 + 0x400 + registers + + + TIM6_LPTIM1_DAC + TIM6, LPTIM1, DAC global Interrupts + 17 + + + + ISR + ISR + Interrupt and Status Register + 0x0 + 0x20 + read-only + 0x00000000 + + + ARRM + Autoreload match + 1 + 1 + + + ARROK + Autoreload match update OK + 4 + 1 + + + + + ICR + ICR + Interrupt Clear Register + 0x4 + 0x20 + write-only + 0x00000000 + + + ARRMCF + + Autoreload match Clear + Flag + + 1 + 1 + + + ARROKCF + + Autoreload match update OK + Clear Flag + + 4 + 1 + + + + + IER + IER + Interrupt Enable Register + 0x8 + 0x20 + read-write + 0x00000000 + + + ARRMIE + + Autoreload matchInterrupt + Enable + + 1 + 1 + + + ARROKIE + + Autoreload match update + OK Interrupt Enable + + 4 + 1 + + + + + CFGR + CFGR + Configuration Register + 0xC + 0x20 + read-write + 0x00000000 + + + PRELOAD + Registers update mode + 22 + 1 + + + PRESC + Clock prescaler + 9 + 3 + + + + + CR + CR + Control Register + 0x10 + 0x20 + read-write + 0x00000000 + + + RSTARE + Reset after read enable + 4 + 1 + + + CNTSTRT + CNTSTRT + 2 + 1 + + + SNGSTRT + LPTIM start in single mode + 1 + 1 + + + ENABLE + LPTIM Enable + 0 + 1 + + + + + ARR + ARR + Autoreload Register + 0x18 + 0x20 + read-write + 0x00000001 + + + ARR + Auto reload value + 0 + 16 + + + + + CNT + CNT + Counter Register + 0x1C + 0x20 + read-only + 0x00000000 + + + CNT + Counter value + 0 + 16 + + + + + + + USART1 + Universal synchronous asynchronous receiver + transmitter + USART + 0x40013800 + + 0x0 + 0x400 + registers + + + USART1 + USART1 global Interrupt + 27 + + + + SR + SR + Status register + 0x0 + 0x20 + 0x00C0 + + + ABRRQ + Automate baudrate detection requeset + 12 + 1 + write-only + + + ABRE + Automate baudrate detection error flag + 11 + 1 + read-only + + + ABRF + Automate baudrate detection flag + 10 + 1 + read-only + + + CTS + CTS flag + 9 + 1 + read-write + + + TXE + Transmit data register + empty + 7 + 1 + read-only + + + TC + Transmission complete + 6 + 1 + read-write + + + RXNE + Read data register not + empty + 5 + 1 + read-write + + + IDLE + IDLE line detected + 4 + 1 + read-only + + + ORE + Overrun error + 3 + 1 + read-only + + + NE + Noise error flag + 2 + 1 + read-only + + + FE + Framing error + 1 + 1 + read-only + + + PE + Parity error + 0 + 1 + read-only + + + + + DR + DR + Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + DR + Data value + 0 + 9 + + + + + BRR + BRR + Baud rate register + 0x8 + 0x20 + read-write + 0x0000 + + + DIV_Mantissa + mantissa of USARTDIV + 4 + 12 + + + DIV_Fraction + fraction of USARTDIV + 0 + 4 + + + + + CR1 + CR1 + Control register 1 + 0xC + 0x20 + read-write + 0x0000 + + + UE + USART enable + 13 + 1 + + + M + Word length + 12 + 1 + + + WAKE + Wakeup method + 11 + 1 + + + PCE + Parity control enable + 10 + 1 + + + PS + Parity selection + 9 + 1 + + + PEIE + PE interrupt enable + 8 + 1 + + + TXEIE + TXE interrupt enable + 7 + 1 + + + TCIE + Transmission complete interrupt + enable + 6 + 1 + + + RXNEIE + RXNE interrupt enable + 5 + 1 + + + IDLEIE + IDLE interrupt enable + 4 + 1 + + + TE + Transmitter enable + 3 + 1 + + + RE + Receiver enable + 2 + 1 + + + RWU + Receiver wakeup + 1 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x10 + 0x20 + read-write + 0x0000 + + + STOP + STOP bits + 12 + 2 + + + CLKEN + Clock enable + 11 + 1 + + + CPOL + Clock polarity + 10 + 1 + + + CPHA + Clock phase + 9 + 1 + + + LBCL + Last bit clock pulse + 8 + 1 + + + ADD + Address of the USART node + 0 + 4 + + + + + CR3 + CR3 + Control register 3 + 0x14 + 0x20 + read-write + 0x0000 + + + ABRMOD + Auto baudrate mode + 13 + 2 + + + ABREN + Auto baudrate enable + 12 + 1 + + + OVER8 + Oversampling mode + 11 + 1 + + + CTSIE + CTS interrupt enable + 10 + 1 + + + CTSE + CTS enable + 9 + 1 + + + RTSE + RTS enable + 8 + 1 + + + HDSEL + Half-duplex selection + 3 + 1 + + + IRLP + IrDA low-power + 2 + 1 + + + IREN + IrDA mode enable + 1 + 1 + + + EIE + Error interrupt enable + 0 + 1 + + + + + + + IWDG + Independent watchdog + IWDG + 0x40003000 + + 0x0 + 0x400 + registers + + + + KR + KR + Key register (IWDG_KR) + 0x0 + 0x20 + write-only + 0x00000000 + + + KEY + Key value + 0 + 16 + + + + + PR + PR + Prescaler register (IWDG_PR) + 0x4 + 0x20 + read-write + 0x00000000 + + + PR + Prescaler divider + 0 + 3 + + + + + RLR + RLR + Reload register (IWDG_RLR) + 0x8 + 0x20 + read-write + 0x00000FFF + + + RL + + Watchdog counter reload + value + + 0 + 12 + + + + + SR + SR + Status register (IWDG_SR) + 0xC + 0x20 + read-only + 0x00000000 + + + RVU + + Watchdog counter reload value + update + + 1 + 1 + + + PVU + + Watchdog prescaler value + update + + 0 + 1 + + + + + + + TIM1 + Advanced timer + TIM + 0x40012C00 + + 0x0 + 0x400 + registers + + + TIM1_BRK_UP_TRG_COM + TIM1 Break, Update, Trigger and Commutation Interrupt + 13 + + + TIM1_CC + TIM1 Capture Compare Interrupt + 14 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + SMCR + desc SMCR + 0x8 + 32 + read-write + 0x0 + 0xFFF7 + + + SMS + desc SMS + 2 + 0 + read-write + + + OCCS + desc OCCS + 3 + 3 + read-write + + + TS + desc TS + 6 + 4 + read-write + + + MSM + desc MSM + 7 + 7 + read-write + + + ETF + desc ETF + 11 + 8 + read-write + + + ETPS + desc ETPS + 13 + 12 + read-write + + + ECE + desc ECE + 14 + 14 + read-write + + + ETP + desc ETP + 15 + 15 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + BIE + desc BIE + 7 + 7 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + COMG + desc COMG + 5 + 5 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + BG + desc BG + 7 + 7 + write-only + + + + + CCMR1_OUTPUT + desc CCMR1:OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + OC1FE + desc OC1FE + 2 + 2 + read-write + + + OC1PE + desc OC1PE + 3 + 3 + read-write + + + OC1M + desc OC1M + 6 + 4 + read-write + + + OC1CE + desc OC1CE + 7 + 7 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + OC2FE + desc OC2FE + 10 + 10 + read-write + + + OC2PE + desc OC2PE + 11 + 11 + read-write + + + OC2M + desc OC2M + 14 + 12 + read-write + + + OC2CE + desc OC2CE + 15 + 15 + read-write + + + + + CCMR1_INPUT + desc CCMR1:INPUT + CCMR1_OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + IC1PSC + desc IC1PSC + 3 + 2 + read-write + + + IC1F + desc IC1F + 7 + 4 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + IC2PSC + desc IC2PSC + 11 + 10 + read-write + + + IC2F + desc IC2F + 15 + 12 + read-write + + + + + CCMR2_OUTPUT + desc CCMR2:OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + OC3FE + desc OC3FE + 2 + 2 + read-write + + + OC3PE + desc OC3PE + 3 + 3 + read-write + + + OC3M + desc OC3M + 6 + 4 + read-write + + + OC3CE + desc OC3CE + 7 + 7 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + OC4FE + desc OC4FE + 10 + 10 + read-write + + + OC4PE + desc OC4PE + 11 + 11 + read-write + + + OC4M + desc OC4M + 14 + 12 + read-write + + + OC4CE + desc OC4CE + 15 + 15 + read-write + + + + + CCMR2_INPUT + desc CCMR2:INPUT + CCMR2_OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + IC3PSC + desc IC3PSC + 3 + 2 + read-write + + + IC3F + desc IC3F + 7 + 4 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + IC4PSC + desc IC4PSC + 11 + 10 + read-write + + + IC4F + desc IC4F + 15 + 12 + read-write + + + + + CCER + desc CCER + 0x20 + 32 + read-write + 0x0 + 0x3333 + + + CC1E + desc CC1E + 0 + 0 + read-write + + + CC1P + desc CC1P + 1 + 1 + read-write + + + CC2E + desc CC2E + 4 + 4 + read-write + + + CC2P + desc CC2P + 5 + 5 + read-write + + + CC3E + desc CC3E + 8 + 8 + read-write + + + CC3P + desc CC3P + 9 + 9 + read-write + + + CC4E + desc CC4E + 12 + 12 + read-write + + + CC4P + desc CC4P + 13 + 13 + read-write + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + RCR + desc RCR + 0x30 + 32 + read-write + 0xFFFF + 0xFFFF + + + REP + desc REP + 7 + 0 + read-write + + + + + CCR1 + desc CCR1 + 0x34 + 32 + read-write + 0x0 + 0xFFFF + + + CCR1 + desc CCR1 + 15 + 0 + read-write + + + + + CCR2 + desc CCR2 + 0x38 + 32 + read-write + 0x0 + 0xFFFF + + + CCR2 + desc CCR2 + 15 + 0 + read-write + + + + + CCR3 + desc CCR3 + 0x3C + 32 + read-write + 0x0 + 0xFFFF + + + CCR3 + desc CCR3 + 15 + 0 + read-write + + + + + CCR4 + desc CCR4 + 0x40 + 32 + read-write + 0x0 + 0xFFFF + + + CCR4 + desc CCR4 + 15 + 0 + read-write + + + + + BDTR + desc BDTR + 0x44 + 32 + read-write + 0x0 + 0xFFFF + + + DTG + desc DTG + 7 + 0 + read-write + + + LOCK + desc LOCK + 9 + 8 + read-write + + + OSSI + desc OSSI + 10 + 10 + read-write + + + OSSR + desc OSSR + 11 + 11 + read-write + + + BKE + desc BKE + 12 + 12 + read-write + + + BKP + desc BKP + 13 + 13 + read-write + + + AOE + desc AOE + 14 + 14 + read-write + + + MOE + desc MOE + 15 + 15 + read-write + + + + + DCR + desc DCR + 0x48 + 32 + read-write + 0x0 + 0x1F1F + + + DBA + desc DBA + 4 + 0 + read-write + + + DBL + desc DBL + 12 + 8 + read-write + + + + + DMAR + desc DMAR + 0x4C + 32 + read-write + 0x0 + 0xFFFF + + + DMAB + desc DMAB + 15 + 0 + read-write + + + + + + + TIM6 + desc TIM + TIM + 0x40001000 + + 0x0 + 0x400 + registers + + + TIM6_LPTIM1_DAC + TIM6, LPTIM1, DAC global Interrupts + 17 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + + + SYSCFG + System configuration controller + SYSCFG + 0x40010000 + + 0x0 + 0x30 + registers + + + + CFGR1 + CFGR1 + SYSCFG configuration register 1 + 0x0 + 0x20 + read-write + 0x00000000 + + + I2C_PB6_FMP + desc I2C_PB6_FMP + 19 + 1 + + + I2C_PB4_FMP + desc I2C_PB4_FMP + 18 + 1 + + + I2C_PB3_FMP + desc I2C_PB3_FMP + 17 + 1 + + + I2C_PA2_FMP + desc I2C_PA2_FMP + 16 + 1 + + + MEM_MODE + Memory mapping selection bits + 0 + 2 + + + + + CFGR2 + CFGR2 + SYSCFG configuration register + 2 + 0x18 + 0x20 + read-write + 0x00000000 + + + ETR_SRC_TIM1 + TIM1 ETR source selection + 9 + 2 + + + LOCKUP_LOCK + Cortex-M0+ LOCKUP bit enable + bit + 0 + 1 + + + + + GPIO_ENS + desc GPIO_ENS + 0x1C + 32 + read-write + 0x0 + + + PC_ENS + desc PC_ENS + 17 + 16 + read-write + + + PB_ENS + desc PB_ENS + 15 + 8 + read-write + + + PA_ENS + desc PA_ENS + 7 + 0 + read-write + + + + + + + FLASH + Flash + Flash + 0x40022000 + + 0x0 + 0x400 + registers + + + FLASH + FLASH global Interrupt + 3 + + + + ACR + ACR + Access control register + 0x0 + 0x20 + read-write + 0x00000600 + + + LATENCY + Latency + 0 + 1 + + + + + KEYR + KEYR + Flash key register + 0x8 + 0x20 + write-only + 0x00000000 + + + KEY + Flash key + 0 + 32 + + + + + OPTKEYR + OPTKEYR + Option byte key register + 0xC + 0x20 + write-only + 0x00000000 + + + OPTKEY + Option byte key + 0 + 32 + + + + + SR + SR + Status register + 0x10 + 0x20 + read-write + 0x00000000 + + + BSY + Busy + 16 + 1 + + + OPTVERR + Option and Engineering bits loading + validity error + 15 + 1 + + + WRPERR + Write protected error + 4 + 1 + + + EOP + End of operation + 0 + 1 + + + + + CR + CR + Flash control register + 0x14 + 0x20 + read-write + 0xC0000000 + + + LOCK + FLASH_CR Lock + 31 + 1 + + + OPTLOCK + Options Lock + 30 + 1 + + + OBL_LAUNCH + Force the option byte + loading + 27 + 1 + + + ERRIE + Error interrupt enable + 25 + 1 + + + EOPIE + End of operation interrupt + enable + 24 + 1 + + + PGTSTRT + Flash main memory program start + 19 + 1 + + + OPTSTRT + Option byte program start + 17 + 1 + + + SER + Sector erase + 11 + 1 + + + MER + Mass erase + 2 + 1 + + + PER + Page erase + 1 + 1 + + + PG + Programming + 0 + 1 + + + + + OPTR + OPTR + Flash option register + 0x20 + 0x20 + read-write + 0x4F55B0AA + + + nBOOT1 + Boot configuration + 15 + 1 + + + NRST_MODE + NRST_MODE + 14 + 1 + + + WWDG_SW + Window watchdog selection + 13 + 1 + + + IWDG_SW + Independent watchdog + selection + 12 + 1 + + + BORF_LEV + These bits contain the VDD supply level + threshold that activates the reset + 9 + 3 + + + BOREN + BOR reset Level + 8 + 1 + + + RDP + Read Protection + 0 + 8 + + + + + SDKR + SDKR + Flash SDK address + register + 0x24 + 0x20 + read-write + 0xFFE0001F + + + SDK_END + SDK area end address + 8 + 4 + + + SDK_STRT + SDK area start address + 0 + 4 + + + + + BTCR + SDKR + FLASH boot control register + 0x28 + 0x20 + read-write + 0x0 + + + BOOT0 + desc BOOT0 + 15 + 1 + + + BOOT_SIZE + desc BOOT_SIZE + 0 + 3 + + + + + WRPR + WRPR + Flash WRP address + register + 0x2C + 0x20 + read-write + 0x0000FFFF + + + WRP + WRP address + 0 + 6 + + + + + STCR + STCR + Flash sleep time config + register + 0x90 + 0x20 + read-write + 0x00006400 + + + SLEEP_TIME + FLash sleep time configuration(counter based on HSI_10M) + 8 + 8 + + + SLEEP_EN + FLash sleep enable + 0 + 1 + + + + + TS0 + TS0 + Flash TS0 + register + 0x100 + 0x20 + read-write + 0x000000B4 + + + TS0 + FLash TS0 register + 0 + 8 + + + + + TS1 + TS1 + Flash TS1 + register + 0x104 + 0x20 + read-write + 0x000001B0 + + + TS1 + FLash TS1 register + 0 + 9 + + + + + TS2P + TS2P + Flash TS2P + register + 0x108 + 0x20 + read-write + 0x000000B4 + + + TS2P + FLash TS2P register + 0 + 8 + + + + + TPS3 + TPS3 + Flash TPS3 + register + 0x10C + 0x20 + read-write + 0x000006C0 + + + TPS3 + FLash TPS3 register + 0 + 11 + + + + + TS3 + TS3 + Flash TS3 + register + 0x110 + 0x20 + read-write + 0x000000B4 + + + TS3 + FLash TS3 register + 0 + 8 + + + + + PERTPE + PERTPE + Flash PERTPE + register + 0x114 + 0x20 + read-write + 0x0000EA60 + + + PERTPE + FLash PERTPE register + 0 + 17 + + + + + SMERTPE + SMERTPE + Flash SMERTPE + register + 0x118 + 0x20 + read-write + 0x0000FD20 + + + SMERTPE + FLash SMERTPE register + 0 + 17 + + + + + PRGTPE + PRGTPE + Flash PRGTPE + register + 0x11C + 0x20 + read-write + 0x00008CA0 + + + PRGTPE + FLash PRGTPE register + 0 + 16 + + + + + PRETPE + PRETPE + Flash PRETPE + register + 0x120 + 0x20 + read-write + 0x000012C0 + + + PRETPE + FLash PRETPE register + 0 + 13 + + + + + + + CRC + CRC calculation unit + CRC + 0x40023000 + + 0x0 + 0x400 + registers + + + + DR + DR + Data register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + DR + Data Register + 0 + 32 + + + + + IDR + IDR + Independent Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + IDR + Independent Data register + 0 + 8 + + + + + CR + CR + Control register + 0x8 + 0x20 + write-only + 0x00000000 + + + RESET + Reset bit + 0 + 1 + + + + + + + SPI1 + Serial peripheral interface + SPI + 0x40013000 + + 0x0 + 0x400 + registers + + + SPI1 + SPI1 global Interrupt + 25 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + + + CPHA + desc CPHA + 0 + 0 + read-write + + + CPOL + desc CPOL + 1 + 1 + read-write + + + MSTR + desc MSTR + 2 + 2 + read-write + + + BR + desc BR + 5 + 3 + read-write + + + SPE + desc SPE + 6 + 6 + read-write + + + LSBFIRST + desc LSBFIRST + 7 + 7 + read-write + + + SSI + desc SSI + 8 + 8 + read-write + + + SSM + desc SSM + 9 + 9 + read-write + + + RXONLY + desc RXONLY + 10 + 10 + read-write + + + DDF + desc DDF + 11 + 11 + read-write + + + CRCNEXT + desc CRCNEXT + 12 + 12 + read-write + + + CRCEN + desc CRCEN + 13 + 13 + read-write + + + BIDIOE + desc BIDIOE + 14 + 14 + read-write + + + BIDIMODE + desc BIDIMODE + 15 + 15 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + + + RXDMAEN + desc RXDMAEN + 0 + 0 + read-write + + + TXDMAEN + desc TXDMAEN + 1 + 1 + read-write + + + SSOE + desc SSOE + 2 + 2 + read-write + + + CLRTXFIFO + desc CLRTXFIFO + 4 + 4 + read-write + + + ERRIE + desc ERRIE + 5 + 5 + read-write + + + RXNEIE + desc RXNEIE + 6 + 6 + read-write + + + TXEIE + desc TXEIE + 7 + 7 + read-write + + + FRXTH + desc FRXTH + 12 + 12 + read-write + + + LDMA_RX + desc LDMA_RX + 13 + 13 + read-write + + + LDMA_TX + desc LDMA_TX + 14 + 14 + read-write + + + + + SR + desc SR + 0x8 + 32 + read-write + 0x2 + + + RXNE + desc RXNE + 0 + 0 + read-only + + + TXE + desc TXE + 1 + 1 + read-only + + + CHSIDE + desc CHSIDE + 2 + 2 + read-only + + + UDR + desc UDR + 3 + 3 + read-only + + + CRCERR + desc CRCERR + 4 + 4 + read-write + + + MODF + desc MODF + 5 + 5 + read-only + + + OVR + desc OVR + 6 + 6 + read-only + + + BSY + desc BSY + 7 + 7 + read-only + + + FRLVL + desc FRLVL + 10 + 9 + read-only + + + FTLVL + desc FTLVL + 12 + 11 + read-only + + + + + DR + desc DR + 0xC + 32 + read-write + 0x0 + + + DR + desc DR + 15 + 0 + read-write + + + + + CRCPR + desc CRCPR + 0x10 + 32 + read-write + 0x7 + + + CRCPOLY + desc CRCPOLY + 15 + 0 + read-write + + + + + RXCRCR + desc RXCRCR + 0x14 + 32 + read-only + 0x0 + + + RXCRC + desc RXCRC + 15 + 0 + read-only + + + + + TXCRCR + desc TXCRCR + 0x18 + 32 + read-only + 0x0 + + + TXCRC + desc TXCRC + 15 + 0 + read-only + + + + + I2SCFGR + desc I2SCFGR + 0x1C + 32 + read-write + 0x0 + + + CHLEN + desc CHLEN + 0 + 0 + read-write + + + DATLEN + desc DATLEN + 2 + 1 + read-write + + + CKPOL + desc CKPOL + 3 + 3 + read-write + + + I2SSTD + desc I2SSTD + 5 + 4 + read-write + + + PCMSYNC + desc PCMSYNC + 7 + 7 + read-write + + + I2SCFG + desc I2SCFG + 9 + 8 + read-write + + + I2SE + desc I2SE + 10 + 10 + read-write + + + I2SMOD + desc I2SMOD + 11 + 11 + read-write + + + + + I2SPR + desc I2SPR + 0x20 + 32 + read-write + 0x2 + + + I2SDIV + desc I2SDIV + 7 + 0 + read-write + + + ODD + desc ODD + 8 + 8 + read-write + + + MCKOE + desc MCKOE + 9 + 9 + read-write + + + + + + + I2C + Inter integrated circuit + I2C + 0x40005400 + + 0x0 + 0x400 + registers + + + I2C1 + I2C1 global Interrupt + 23 + + + + CR1 + CR1 + Control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + SWRST + Software reset + 15 + 1 + + + PEC + Packet error checking + 12 + 1 + + + POS + Acknowledge/PEC Position (for datareception) + 11 + 1 + + + ACK + Acknowledge enable + 10 + 1 + + + STOP + Stop generation + 9 + 1 + + + START + Start generation + 8 + 1 + + + NOSTRETCH + Clock stretching disable (Slavemode) + 7 + 1 + + + ENGC + General call enable + 6 + 1 + + + ENPEC + PEC enable + 5 + 1 + + + PE + Peripheral enable + 0 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + ITBUFEN + Buffer interrupt enable + 10 + 1 + + + ITEVTEN + Event interrupt enable + 9 + 1 + + + ITERREN + Error interrupt enable + 8 + 1 + + + FREQ + Peripheral clock frequency + 0 + 6 + + + + + OAR1 + OAR1 + Own address register 1 + 0x8 + 0x20 + read-write + 0x0000 + + + ADD + Interface address + 1 + 7 + + + + + DR + DR + Data register + 0x10 + 0x20 + read-write + 0x0000 + + + DR + 8-bit data register + 0 + 8 + + + + + SR1 + SR1 + Status register 1 + 0x14 + 0x20 + 0x0000 + + + PECERR + PEC Error in reception + 12 + 1 + read-write + + + OVR + Overrun/Underrun + 11 + 1 + read-write + + + AF + Acknowledge failure + 10 + 1 + read-write + + + ARLO + Arbitration lost (mastermode) + 9 + 1 + read-write + + + BERR + Bus error + 8 + 1 + read-write + + + TxE + Data register empty(transmitters) + 7 + 1 + read-only + + + RxNE + Data register not empty(receivers) + 6 + 1 + read-only + + + STOPF + Stop detection (slavemode) + 4 + 1 + read-only + + + BTF + Byte transfer finished + 2 + 1 + read-only + + + ADDR + Address sent (master mode)/matched(slave mode) + 1 + 1 + read-only + + + SB + Start bit (Master mode) + 0 + 1 + read-only + + + + + SR2 + SR2 + Status register 2 + 0x18 + 0x20 + read-only + 0x0000 + + + PEC + acket error checkingregister + 8 + 8 + + + DUALF + Dual flag (Slave mode) + 7 + 1 + + + GENCALL + General call address (Slavemode) + 4 + 1 + + + TRA + Transmitter/receiver + 2 + 1 + + + BUSY + Bus busy + 1 + 1 + + + MSL + Master/slave + 0 + 1 + + + + + CCR + CCR + Clock control register + 0x1C + 0x20 + read-write + 0x0000 + + + F_S + I2C master mode selection + 15 + 1 + + + DUTY + Fast mode duty cycle + 14 + 1 + + + CCR + Clock control register in Fast/Standardmode (Master mode) + 0 + 12 + + + + + TRISE + TRISE + TRISE register + 0x20 + 0x20 + read-write + 0x0002 + + + TRISE + Maximum rise time in Fast/Standard mode(Master mode) + 0 + 6 + + + + + + + DBGMCU + Debug support + DBGMCU + 0x40015800 + + 0x0 + 0x400 + registers + + + + IDCODE + IDCODE + MCU Device ID Code Register + 0x0 + 0x20 + read-only + 0x0 + + + REV_ID + REV_ID + 0 + 32 + + + + + CR + CR + Debug MCU Configuration Register + 0x4 + 0x20 + read-write + 0x0 + + + DBG_SLEEP + Debug Sleep Mode + 0 + 1 + + + DBG_STOP + Debug Stop Mode + 1 + 1 + + + + + APB_FZ1 + APB_FZ1 + APB Freeze Register1 + 0x8 + 0x20 + read-write + 0x0 + + + DBG_TIM6_STOP + Debug TIM 6 stopped whenCore is halted + 4 + 1 + + + DBG_IWDG_STOP + Debug Independent Wachdog stopped whenCore is halted + 12 + 1 + + + DBG_I2C1_TIMEOUT + Debug I2C1 TIMEOUT stopped when Core ishalted + 21 + 1 + + + DBG_LPTIM_STOP + Debug LPTIM stopped when Core ishalted + 31 + 1 + + + + + APB_FZ2 + APB_FZ2 + APB Freeze Register2 + 0xC + 0x20 + read-write + 0x0 + + + DBG_TIMER1_STOP + Debug Timer 1 stopped when Core ishalted + 11 + 1 + + + + + + + diff --git a/Misc/py32f003xx.svd b/Misc/SVD/py32f003xx.svd similarity index 96% rename from Misc/py32f003xx.svd rename to Misc/SVD/py32f003xx.svd index bb98bc6..f683f8c 100644 --- a/Misc/py32f003xx.svd +++ b/Misc/SVD/py32f003xx.svd @@ -1,11089 +1,11089 @@ - - - - Puya - Puya - PY32F0xx_DFP - - PY32F0 - 1.0.0 - Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. - - - - CM0+ - r0p1 - little - false - false - 4 - false - - - - 8 - 32 - 32 - read-write - 0x00000000 - 0xFFFFFFFF - - - ADC - Analog to Digital Converter - ADC - 0x40012400 - - 0x0 - 0x400 - registers - - - ADC_COMP - ADC and COMP Interrupt through EXTI Lines 17 and 18 - 12 - - - - ISR - ISR - ADC interrupt and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - AWD - ADC analog watchdog flag - 7 - 1 - - - OVR - ADC group regular overrun - flag - 4 - 1 - - - EOSEQ - ADC group regular end of sequence - conversions flag - 3 - 1 - - - EOC - ADC group regular end of unitary - conversion flag - 2 - 1 - - - EOSMP - ADC group regular end of sampling - flag - 1 - 1 - - - - - IER - IER - ADC interrupt enable register - 0x4 - 0x20 - read-write - 0x00000000 - - - AWDIE - ADC analog watchdog - interrupt - 7 - 1 - - - OVRIE - ADC group regular overrun - interrupt - 4 - 1 - - - EOSEQIE - ADC group regular end of sequence - conversions interrupt - 3 - 1 - - - EOCIE - ADC group regular end of unitary - conversion interrupt - 2 - 1 - - - EOSMPIE - ADC group regular end of sampling - interrupt - 1 - 1 - - - - - CR - CR - ADC control register - 0x8 - 0x20 - read-write - 0x00000000 - - - ADCAL - ADC group regular conversion - calibration - 31 - 1 - - - ADSTP - ADC group regular conversion - stop - 4 - 1 - - - ADSTART - ADC group regular conversion - start - 2 - 1 - - - ADEN - ADC enable - 0 - 1 - - - - - CFGR1 - CFGR1 - ADC configuration register 1 - 0xC - 0x20 - read-write - 0x00000000 - - - AWDCH - ADC analog watchdog monitored channel - selection - 26 - 4 - - - AWDEN - ADC analog watchdog enable on scope - ADC group regular - 23 - 1 - - - AWDSGL - ADC analog watchdog monitoring a - single channel or all channels - 22 - 1 - - - DISCEN - ADC group regular sequencer - discontinuous mode - 16 - 1 - - - WAIT - Wait conversion mode - 14 - 1 - - - CONT - ADC group regular continuous conversion - mode - 13 - 1 - - - OVRMOD - ADC group regular overrun - configuration - 12 - 1 - - - EXTEN - ADC group regular external trigger - polarity - 10 - 2 - - - EXTSEL - ADC group regular external trigger - source - 6 - 3 - - - ALIGN - ADC data alignement - 5 - 1 - - - RESSEL - ADC data resolution - 3 - 2 - - - SCANDIR - Scan sequence direction - 2 - 1 - - - DMACFG - ADC DMA transfer - configuration - 1 - 1 - - - DMAEN - ADC DMA transfer enable - 0 - 1 - - - - - CFGR2 - CFGR2 - ADC configuration register 2 - 0x10 - 0x20 - read-write - 0x00000000 - - - CKMODE - ADC clock mode - 28 - 4 - - - - - SMPR - SMPR - ADC sampling time register - 0x14 - 0x20 - read-write - 0x00000000 - - - SMP - Sampling time selection - 0 - 3 - - - - - TR - TR - ADC analog watchdog 1 threshold register - 0x20 - 0x20 - read-write - 0x0FFF0000 - - - HT - ADC analog watchdog threshold - high - 16 - 12 - - - LT - ADC analog watchdog threshold - low - 0 - 12 - - - - - CHSELR - CHSELR - ADC group regular sequencer register - 0x28 - 0x20 - read-write - 0x0FFF0000 - - - CHSEL12 - Channel-12 selection - 12 - 1 - - - CHSEL11 - Channel-11 selection - 11 - 1 - - - CHSEL9 - Channel-9 selection - 9 - 1 - - - CHSEL8 - Channel-8 selection - 8 - 1 - - - CHSEL7 - Channel-7 selection - 7 - 1 - - - CHSEL6 - Channel-6 selection - 6 - 1 - - - CHSEL5 - Channel-5 selection - 5 - 1 - - - CHSEL4 - Channel-4 selection - 4 - 1 - - - CHSEL3 - Channel-3 selection - 3 - 1 - - - CHSEL2 - Channel-2 selection - 2 - 1 - - - CHSEL1 - Channel-1 selection - 1 - 1 - - - CHSEL0 - Channel-0 selection - 0 - 1 - - - - - DR - DR - ADC group regular data register - 0x40 - 0x20 - read-only - 0x00000000 - - - DATA - ADC group regular conversion - data - 0 - 16 - - - - - CCSR - CCSR - ADC calibration configuration and status register - 0x44 - 0x20 - read-write - 0x00000000 - - - CALON - Calibration flag - 31 - 1 - read-only - - - CALFAIL - Calibration fail flag - 30 - 1 - - - CALSET - Calibration factor selection - 15 - 1 - - - CALSMP - Calibration sample time selection - 12 - 2 - - - CALSEL - Calibration contents selection - 11 - 1 - - - - - CALRR1 - CALRR1 - ADC calibration result register 1 - 0x48 - 0x20 - read-only - 0x00000000 - - - CALBOUT - offset result - 16 - 7 - - - CALC5OUT - C5 result - 8 - 8 - - - CALC4OUT - C4 result - 0 - 8 - - - - - CALRR2 - CALRR2 - ADC calibration result register 2 - 0x4C - 0x20 - read-only - 0x00000000 - - - CALC3OUT - C3 result - 24 - 8 - - - CALC2OUT - C2 result - 16 - 8 - - - CALC1OUT - C1 result - 8 - 8 - - - CALC0OUT - C0 result - 0 - 8 - - - - - CALFIR1 - CALFIR1 - ADC calibration factor input register 1 - 0x50 - 0x20 - read-write - 0x00000000 - - - CALBIO - Calibration offset factor input - 16 - 7 - - - CALC5IO - Calibration C5 factor input - 8 - 8 - - - CALC4IO - Calibration C4 factor input - 0 - 8 - - - - - CALFIR2 - CALFIR2 - ADC calibration factor input register 2 - 0x54 - 0x20 - read-write - 0x00000000 - - - CALC3IO - Calibration C3 factor input - 24 - 8 - - - CALC2IO - Calibration C2 factor input - 16 - 8 - - - CALC1IO - Calibration C1 factor input - 8 - 8 - - - CALC0IO - Calibration C0 factor input - 0 - 8 - - - - - CCR - CCR - ADC common configuration register - 0x308 - 0x20 - read-write - 0x00000000 - - - TSEN - Temperature sensor enable - 23 - 1 - - - VREFEN - VREFINT enable - 22 - 1 - - - - - - - COMP1 - Comparator - COMP - 0x40010200 - - 0x0 - 0x10 - registers - - - - CSR - CSR - COMP control and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - LOCK - CSR register lock - 31 - 1 - - - COMP_OUT - Comparator output status - 30 - 1 - - - PWRMODE - Comparator power mode - selector - 18 - 2 - - - HYST - Comparator hysteresis enable - selector - 16 - 1 - - - POLARITY - Comparator polarity - selector - 15 - 1 - - - WINMODE - Comparator non-inverting input - selector for window mode - 11 - 1 - - - INPSEL - Comparator signal selector for - non-inverting input - 8 - 2 - - - INMSEL - Comparator signal selector for - inverting input INM - 4 - 4 - - - SCALER_EN - SCALER enable bit - 1 - 1 - - - COMP_EN - COMP enable bit - 0 - 1 - - - - - FR - FR - Comparator Filter - register - 0x4 - 0x20 - read-write - 0x00000000 - - - FLTCNT - Comparator filter and counter - 16 - 16 - - - FLTEN - Filter enable bit - 0 - 1 - - - - - - - COMP2 - Comparator - COMP - 0x40010210 - - 0x0 - 0x10 - registers - - - - CSR - CSR - COMP control and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - LOCK - CSR register lock - 31 - 1 - - - COMP_OUT - Comparator output status - 30 - 1 - - - PWRMODE - Comparator power mode - selector - 18 - 2 - - - POLARITY - Comparator polarity - selector - 15 - 1 - - - WINMODE - Comparator non-inverting input - selector for window mode - 11 - 1 - - - INPSEL - Comparator signal selector for - non-inverting input - 8 - 2 - - - INMSEL - Comparator signal selector for - inverting input INM - 4 - 4 - - - COMP_EN - COMP enable bit - 0 - 1 - - - - - FR - FR - Comparator Filter - register - 0x4 - 0x20 - read-write - 0x00000000 - - - FLTCNT - Comparator filter and counter - 16 - 16 - - - FLTEN - Filter enable bit - 0 - 1 - - - - - - - RCC - Reset and clock control - RCC - 0x40021000 - - 0x0 - 0x400 - registers - - - RCC - RCC global Interrupt - 4 - - - - CR - CR - Clock control register - 0x0 - 0x20 - read-write - 0x00000100 - - - CSSON - Clock security system - enable - 19 - 1 - - - HSEBYP - HSE crystal oscillator - bypass - 18 - 1 - - - HSERDY - HSE clock ready flag - 17 - 1 - - - HSEON - HSE clock enable - 16 - 1 - - - HSIDIV - HSI16 clock division - factor - 11 - 3 - - - HSIRDY - HSI16 clock ready flag - 10 - 1 - - - HSIKERON - HSI16 always enable for peripheral - kernels - 9 - 1 - - - HSION - HSI16 clock enable - 8 - 1 - - - - - ICSCR - ICSCR - Internal clock sources calibration - register - 0x4 - 0x20 - 0x10000000 - - - LSI_STARTUP - LSI startup time - 26 - 2 - read-write - - - LSI_TRIM - LSI clock trimming - 16 - 9 - read-write - - - HSI_FS - HSI frequency selection - 13 - 3 - read-write - - - HSI_TRIM - HSI clock trimming - 0 - 13 - read-write - - - - - CFGR - CFGR - Clock configuration register - 0x8 - 0x20 - 0x00000000 - - - MCOPRE - Microcontroller clock output - prescaler - 28 - 3 - read-write - - - MCOSEL - Microcontroller clock - output - 24 - 3 - read-write - - - PPRE - APB prescaler - 12 - 3 - read-write - - - HPRE - AHB prescaler - 8 - 4 - read-write - - - SWS - System clock switch status - 3 - 3 - read-only - - - SW - System clock switch - 0 - 3 - read-write - - - - - ECSCR - ECSCR - External clock source control register - 0x10 - 0x20 - 0x00000000 - - - HSE_FREQ - HSE clock freqency selection - 2 - 2 - read-write - - - - - CIER - CIER - Clock interrupt enable - register - 0x18 - 0x20 - read-write - 0x00000000 - - - HSERDYIE - HSE ready interrupt enable - 4 - 1 - - - HSIRDYIE - HSI ready interrupt enable - 3 - 1 - - - LSIRDYIE - LSI ready interrupt enable - 0 - 1 - - - - - CIFR - CIFR - Clock interrupt flag register - 0x1C - 0x20 - read-only - 0x00000000 - - - CSSF - HSE clock secure system interrupt flag - 8 - 1 - - - HSERDYF - HSE ready interrupt flag - 4 - 1 - - - HSIRDYF - HSI ready interrupt flag - 3 - 1 - - - LSIRDYF - LSI ready interrupt flag - 0 - 1 - - - - - CICR - CICR - Clock interrupt clear register - 0x20 - 0x20 - write-only - 0x00000000 - - - CSSC - clock secure system interrupt flag clear - 8 - 1 - - - HSERDYC - HSE ready interrupt clear - 4 - 1 - - - HSIRDYC - HSI ready interrupt clear - 3 - 1 - - - LSIRDYC - LSI ready interrupt clear - 0 - 1 - - - - - IOPRSTR - IOPRSTR - GPIO reset register - 0x24 - 0x20 - read-write - 0x00000000 - - - GPIOFRST - I/O port F reset - 5 - 1 - - - GPIOBRST - I/O port B reset - 1 - 1 - - - GPIOARST - I/O port A reset - 0 - 1 - - - - - AHBRSTR - AHBRSTR - AHB peripheral reset register - 0x28 - 0x20 - read-write - 0x00000000 - - - CRCRST - CRC reset - 12 - 1 - - - DMARST - DMA reset - 0 - 1 - - - - - APBRSTR1 - APBRSTR1 - APB peripheral reset register - 1 - 0x2C - 0x20 - read-write - 0x00000000 - - - LPTIMRST - Low Power Timer reset - 31 - 1 - - - PWRRST - Power interface reset - 28 - 1 - - - DBGRST - Debug support reset - 27 - 1 - - - I2CRST - I2C reset - 21 - 1 - - - USART2RST - USART2 reset - 17 - 1 - - - TIM3RST - TIM3 timer reset - 1 - 1 - - - - - APBRSTR2 - APBRSTR2 - APB peripheral reset register - 2 - 0x30 - 0x20 - read-write - 0x00000000 - - - COMP2RST - COMP2 reset - 22 - 1 - - - COMP1RST - COMP1 reset - 21 - 1 - - - ADCRST - ADC reset - 20 - 1 - - - TIM17RST - TIM17 timer reset - 18 - 1 - - - TIM16RST - TIM16 timer reset - 17 - 1 - - - TIM14RST - TIM14 timer reset - 15 - 1 - - - USART1RST - USART1 reset - 14 - 1 - - - SPI1RST - SPI1 reset - 12 - 1 - - - TIM1RST - TIM1 timer reset - 11 - 1 - - - SYSCFGRST - SYSCFG and COMP - reset - 0 - 1 - - - - - IOPENR - IOPENR - GPIO clock enable register - 0x34 - 0x20 - read-write - 0x00000000 - - - GPIOFEN - I/O port F clock enable - 5 - 1 - - - GPIOBEN - I/O port B clock enable - 1 - 1 - - - GPIOAEN - I/O port A clock enable - 0 - 1 - - - - - AHBENR - AHBENR - AHB peripheral clock enable - register - 0x38 - 0x20 - read-write - 0x00000000 - - - CRCEN - CRC clock enable - 12 - 1 - - - SRAMEN - SRAM memory interface clock - enable - 9 - 1 - - - FLASHEN - Flash memory interface clock - enable - 8 - 1 - - - DMAEN - DMA clock enable - 0 - 1 - - - - - APBENR1 - APBENR1 - APB peripheral clock enable register - 1 - 0x3C - 0x20 - read-write - 0x00000000 - - - LPTIMEN - LPTIM clock enable - 31 - 1 - - - PWREN - Power interface clock - enable - 28 - 1 - - - DBGEN - Debug support clock enable - 27 - 1 - - - I2CEN - I2C clock enable - 21 - 1 - - - USART2EN - USART2 clock enable - 17 - 1 - - - WWDGEN - WWDG clock enable - 11 - 1 - - - RTCAPBEN - RTC APB clock enable - 10 - 1 - - - TIM3EN - TIM3 timer clock enable - 1 - 1 - - - - - APBENR2 - APBENR2 - APB peripheral clock enable register - 2 - 0x40 - 0x20 - read-write - 0x00000000 - - - COMP2EN - COMP2 clock enable - 22 - 1 - - - COMP1EN - COMP1 clock enable - 21 - 1 - - - ADCEN - ADC clock enable - 20 - 1 - - - TIM17EN - TIM16 timer clock enable - 18 - 1 - - - TIM16EN - TIM16 timer clock enable - 17 - 1 - - - TIM14EN - TIM14 timer clock enable - 15 - 1 - - - USART1EN - USART1 clock enable - 14 - 1 - - - SPI1EN - SPI1 clock enable - 12 - 1 - - - TIM1EN - TIM1 timer clock enable - 11 - 1 - - - SYSCFGEN - SYSCFG, COMP and VREFBUF clock - enable - 0 - 1 - - - - - CCIPR - CCIPR - Peripherals independent clock configuration - register - 0x54 - 0x20 - read-write - 0x00000000 - - - LPTIM1SEL - LPTIM1 clock source - selection - 18 - 2 - - - COMP2SEL - COMP2 clock source - selection - 9 - 1 - - - COMP1SEL - COMP1 clock source - selection - 8 - 1 - - - PVDSEL - PVD detect clock source - selection - 7 - 1 - - - - - BDCR - BDCR - RTC domain control register - 0x5C - 0x20 - read-write - 0x00000000 - - - LSCOSEL - Low-speed clock output - selection - 25 - 1 - - - LSCOEN - Low-speed clock output (LSCO) - enable - 24 - 1 - - - BDRST - RTC domain software reset - 16 - 1 - - - RTCEN - RTC clock source enable - 15 - 1 - - - RTCSEL - RTC clock source selection - 8 - 2 - - - - - CSR - CSR - Control/status register - 0x60 - 0x20 - read-write - 0x00000000 - - - WWDGRSTF - Window watchdog reset flag - 30 - 1 - - - IWDGRSTF - Independent window watchdog reset - flag - 29 - 1 - - - SFTRSTF - Software reset flag - 28 - 1 - - - PWRRSTF - BOR or POR/PDR flag - 27 - 1 - - - PINRSTF - Pin reset flag - 26 - 1 - - - OBLRSTF - Option byte loader reset - flag - 25 - 1 - - - RMVF - Remove reset flags - 23 - 1 - - - LSIRDY - LSI oscillator ready - 1 - 1 - - - LSION - LSI oscillator enable - 0 - 1 - - - - - - - PWR - Power control - PWR - 0x40007000 - - 0x0 - 0x400 - registers - - - - CR1 - CR1 - Power control register 1 - 0x0 - 0x20 - read-write - 0x00030000 - - - HSION_CTRL - HSI open time control - 19 - 1 - - - SRAM_RETV - SRAM retention voltage control - 16 - 3 - - - LPR - Low-power run - 14 - 1 - - - FLS_SLPTIME - Flash wait time after wakeup from the stop mode - 12 - 2 - - - MRRDY_TIME - Time selection wakeup from LP to VR - 10 - 2 - - - VOS - Voltage scaling range - selection - 9 - 1 - - - DBP - Disable backup domain write - protection - 8 - 1 - - - BIAS_CR_SEL - MR Bias current selection - 4 - 1 - - - BIAS_CR - MR Bias current - 0 - 4 - - - - - CR2 - CR2 - Power control register 2 - 0x4 - 0x20 - read-write - 0x00000500 - - - FLT_TIME - Digital filter time configuration - 9 - 3 - - - FLTEN - Digital filter enable - 8 - 1 - - - PVDT - Power voltage detector threshold - selection - 4 - 3 - - - SRCSEL - Power voltage detector volatage - selection - 2 - 1 - - - PVDE - Power voltage detector - enable - 0 - 1 - - - - - SR - SR - Power status register - 0x14 - 0x20 - read-only - 0x00000000 - - - PVDO - PVD output - 11 - 1 - - - - - - - GPIOA - General-purpose I/Os - GPIO - 0x50000000 - - 0x0 - 0x400 - registers - - - - MODER - MODER - GPIO port mode register - 0x0 - 0x20 - read-write - 0xEBFFFFFF - - - MODE15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - MODE14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - MODE13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - MODE12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - MODE11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - MODE10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - MODE9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - MODE8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - MODE7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - MODE6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - MODE5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - MODE4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - MODE3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - MODE2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - MODE1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - MODE0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - OTYPER - OTYPER - GPIO port output type register - 0x4 - 0x20 - read-write - 0x00000000 - - - OT15 - Port x configuration bits (y = - 0..15) - 15 - 1 - - - OT14 - Port x configuration bits (y = - 0..15) - 14 - 1 - - - OT13 - Port x configuration bits (y = - 0..15) - 13 - 1 - - - OT12 - Port x configuration bits (y = - 0..15) - 12 - 1 - - - OT11 - Port x configuration bits (y = - 0..15) - 11 - 1 - - - OT10 - Port x configuration bits (y = - 0..15) - 10 - 1 - - - OT9 - Port x configuration bits (y = - 0..15) - 9 - 1 - - - OT8 - Port x configuration bits (y = - 0..15) - 8 - 1 - - - OT7 - Port x configuration bits (y = - 0..15) - 7 - 1 - - - OT6 - Port x configuration bits (y = - 0..15) - 6 - 1 - - - OT5 - Port x configuration bits (y = - 0..15) - 5 - 1 - - - OT4 - Port x configuration bits (y = - 0..15) - 4 - 1 - - - OT3 - Port x configuration bits (y = - 0..15) - 3 - 1 - - - OT2 - Port x configuration bits (y = - 0..15) - 2 - 1 - - - OT1 - Port x configuration bits (y = - 0..15) - 1 - 1 - - - OT0 - Port x configuration bits (y = - 0..15) - 0 - 1 - - - - - OSPEEDR - OSPEEDR - GPIO port output speed - register - 0x8 - 0x20 - read-write - 0x0C000000 - - - OSPEED15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - OSPEED14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - OSPEED13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - OSPEED12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - OSPEED11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - OSPEED10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - OSPEED9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - OSPEED8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - OSPEED7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - OSPEED6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - OSPEED5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - OSPEED4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - OSPEED3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - OSPEED2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - OSPEED1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - OSPEED0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - PUPDR - PUPDR - GPIO port pull-up/pull-down - register - 0xC - 0x20 - read-write - 0x24000000 - - - PUPD15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - PUPD14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - PUPD13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - PUPD12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - PUPD11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - PUPD10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - PUPD9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - PUPD8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - PUPD7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - PUPD6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - PUPD5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - PUPD4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - PUPD3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - PUPD2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - PUPD1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - PUPD0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - IDR - IDR - GPIO port input data register - 0x10 - 0x20 - read-only - 0x00000000 - - - ID15 - Port input data (y = - 0..15) - 15 - 1 - - - ID14 - Port input data (y = - 0..15) - 14 - 1 - - - ID13 - Port input data (y = - 0..15) - 13 - 1 - - - ID12 - Port input data (y = - 0..15) - 12 - 1 - - - ID11 - Port input data (y = - 0..15) - 11 - 1 - - - ID10 - Port input data (y = - 0..15) - 10 - 1 - - - ID9 - Port input data (y = - 0..15) - 9 - 1 - - - ID8 - Port input data (y = - 0..15) - 8 - 1 - - - ID7 - Port input data (y = - 0..15) - 7 - 1 - - - ID6 - Port input data (y = - 0..15) - 6 - 1 - - - ID5 - Port input data (y = - 0..15) - 5 - 1 - - - ID4 - Port input data (y = - 0..15) - 4 - 1 - - - ID3 - Port input data (y = - 0..15) - 3 - 1 - - - ID2 - Port input data (y = - 0..15) - 2 - 1 - - - ID1 - Port input data (y = - 0..15) - 1 - 1 - - - ID0 - Port input data (y = - 0..15) - 0 - 1 - - - - - ODR - ODR - GPIO port output data register - 0x14 - 0x20 - read-write - 0x00000000 - - - OD15 - Port output data (y = - 0..15) - 15 - 1 - - - OD14 - Port output data (y = - 0..15) - 14 - 1 - - - OD13 - Port output data (y = - 0..15) - 13 - 1 - - - OD12 - Port output data (y = - 0..15) - 12 - 1 - - - OD11 - Port output data (y = - 0..15) - 11 - 1 - - - OD10 - Port output data (y = - 0..15) - 10 - 1 - - - OD9 - Port output data (y = - 0..15) - 9 - 1 - - - OD8 - Port output data (y = - 0..15) - 8 - 1 - - - OD7 - Port output data (y = - 0..15) - 7 - 1 - - - OD6 - Port output data (y = - 0..15) - 6 - 1 - - - OD5 - Port output data (y = - 0..15) - 5 - 1 - - - OD4 - Port output data (y = - 0..15) - 4 - 1 - - - OD3 - Port output data (y = - 0..15) - 3 - 1 - - - OD2 - Port output data (y = - 0..15) - 2 - 1 - - - OD1 - Port output data (y = - 0..15) - 1 - 1 - - - OD0 - Port output data (y = - 0..15) - 0 - 1 - - - - - BSRR - BSRR - GPIO port bit set/reset - register - 0x18 - 0x20 - write-only - 0x00000000 - - - BR15 - Port x reset bit y (y = - 0..15) - 31 - 1 - - - BR14 - Port x reset bit y (y = - 0..15) - 30 - 1 - - - BR13 - Port x reset bit y (y = - 0..15) - 29 - 1 - - - BR12 - Port x reset bit y (y = - 0..15) - 28 - 1 - - - BR11 - Port x reset bit y (y = - 0..15) - 27 - 1 - - - BR10 - Port x reset bit y (y = - 0..15) - 26 - 1 - - - BR9 - Port x reset bit y (y = - 0..15) - 25 - 1 - - - BR8 - Port x reset bit y (y = - 0..15) - 24 - 1 - - - BR7 - Port x reset bit y (y = - 0..15) - 23 - 1 - - - BR6 - Port x reset bit y (y = - 0..15) - 22 - 1 - - - BR5 - Port x reset bit y (y = - 0..15) - 21 - 1 - - - BR4 - Port x reset bit y (y = - 0..15) - 20 - 1 - - - BR3 - Port x reset bit y (y = - 0..15) - 19 - 1 - - - BR2 - Port x reset bit y (y = - 0..15) - 18 - 1 - - - BR1 - Port x reset bit y (y = - 0..15) - 17 - 1 - - - BR0 - Port x set bit y (y= - 0..15) - 16 - 1 - - - BS15 - Port x set bit y (y= - 0..15) - 15 - 1 - - - BS14 - Port x set bit y (y= - 0..15) - 14 - 1 - - - BS13 - Port x set bit y (y= - 0..15) - 13 - 1 - - - BS12 - Port x set bit y (y= - 0..15) - 12 - 1 - - - BS11 - Port x set bit y (y= - 0..15) - 11 - 1 - - - BS10 - Port x set bit y (y= - 0..15) - 10 - 1 - - - BS9 - Port x set bit y (y= - 0..15) - 9 - 1 - - - BS8 - Port x set bit y (y= - 0..15) - 8 - 1 - - - BS7 - Port x set bit y (y= - 0..15) - 7 - 1 - - - BS6 - Port x set bit y (y= - 0..15) - 6 - 1 - - - BS5 - Port x set bit y (y= - 0..15) - 5 - 1 - - - BS4 - Port x set bit y (y= - 0..15) - 4 - 1 - - - BS3 - Port x set bit y (y= - 0..15) - 3 - 1 - - - BS2 - Port x set bit y (y= - 0..15) - 2 - 1 - - - BS1 - Port x set bit y (y= - 0..15) - 1 - 1 - - - BS0 - Port x set bit y (y= - 0..15) - 0 - 1 - - - - - LCKR - LCKR - GPIO port configuration lock - register - 0x1C - 0x20 - read-write - 0x00000000 - - - LCKK - Port x lock bit y (y= - 0..15) - 16 - 1 - - - LCK15 - Port x lock bit y (y= - 0..15) - 15 - 1 - - - LCK14 - Port x lock bit y (y= - 0..15) - 14 - 1 - - - LCK13 - Port x lock bit y (y= - 0..15) - 13 - 1 - - - LCK12 - Port x lock bit y (y= - 0..15) - 12 - 1 - - - LCK11 - Port x lock bit y (y= - 0..15) - 11 - 1 - - - LCK10 - Port x lock bit y (y= - 0..15) - 10 - 1 - - - LCK9 - Port x lock bit y (y= - 0..15) - 9 - 1 - - - LCK8 - Port x lock bit y (y= - 0..15) - 8 - 1 - - - LCK7 - Port x lock bit y (y= - 0..15) - 7 - 1 - - - LCK6 - Port x lock bit y (y= - 0..15) - 6 - 1 - - - LCK5 - Port x lock bit y (y= - 0..15) - 5 - 1 - - - LCK4 - Port x lock bit y (y= - 0..15) - 4 - 1 - - - LCK3 - Port x lock bit y (y= - 0..15) - 3 - 1 - - - LCK2 - Port x lock bit y (y= - 0..15) - 2 - 1 - - - LCK1 - Port x lock bit y (y= - 0..15) - 1 - 1 - - - LCK0 - Port x lock bit y (y= - 0..15) - 0 - 1 - - - - - AFRL - AFRL - GPIO alternate function low - register - 0x20 - 0x20 - read-write - 0x00000000 - - - AFSEL7 - Alternate function selection for port x - bit y (y = 0..7) - 28 - 4 - - - AFSEL6 - Alternate function selection for port x - bit y (y = 0..7) - 24 - 4 - - - AFSEL5 - Alternate function selection for port x - bit y (y = 0..7) - 20 - 4 - - - AFSEL4 - Alternate function selection for port x - bit y (y = 0..7) - 16 - 4 - - - AFSEL3 - Alternate function selection for port x - bit y (y = 0..7) - 12 - 4 - - - AFSEL2 - Alternate function selection for port x - bit y (y = 0..7) - 8 - 4 - - - AFSEL1 - Alternate function selection for port x - bit y (y = 0..7) - 4 - 4 - - - AFSEL0 - Alternate function selection for port x - bit y (y = 0..7) - 0 - 4 - - - - - AFRH - AFRH - GPIO alternate function high - register - 0x24 - 0x20 - read-write - 0x00000000 - - - AFSEL15 - Alternate function selection for port x - bit y (y = 8..15) - 28 - 4 - - - AFSEL14 - Alternate function selection for port x - bit y (y = 8..15) - 24 - 4 - - - AFSEL13 - Alternate function selection for port x - bit y (y = 8..15) - 20 - 4 - - - AFSEL12 - Alternate function selection for port x - bit y (y = 8..15) - 16 - 4 - - - AFSEL11 - Alternate function selection for port x - bit y (y = 8..15) - 12 - 4 - - - AFSEL10 - Alternate function selection for port x - bit y (y = 8..15) - 8 - 4 - - - AFSEL9 - Alternate function selection for port x - bit y (y = 8..15) - 4 - 4 - - - AFSEL8 - Alternate function selection for port x - bit y (y = 8..15) - 0 - 4 - - - - - BRR - BRR - port bit reset register - 0x28 - 0x20 - write-only - 0x00000000 - - - BR15 - Port Reset bit - 15 - 1 - - - BR14 - Port Reset bit - 14 - 1 - - - BR13 - Port Reset bit - 13 - 1 - - - BR12 - Port Reset bit - 12 - 1 - - - BR11 - Port Reset bit - 11 - 1 - - - BR10 - Port Reset bit - 10 - 1 - - - BR9 - Port Reset bit - 9 - 1 - - - BR8 - Port Reset bit - 8 - 1 - - - BR7 - Port Reset bit - 7 - 1 - - - BR6 - Port Reset bit - 6 - 1 - - - BR5 - Port Reset bit - 5 - 1 - - - BR4 - Port Reset bit - 4 - 1 - - - BR3 - Port Reset bit - 3 - 1 - - - BR2 - Port Reset bit - 2 - 1 - - - BR1 - Port Reset bit - 1 - 1 - - - BR0 - Port Reset bit - 0 - 1 - - - - - - - GPIOB - General-purpose I/Os - GPIO - 0x50000400 - - 0x0 - 0x400 - registers - - - - MODER - MODER - GPIO port mode register - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - MODE8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - MODE7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - MODE6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - MODE5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - MODE4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - MODE3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - MODE2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - MODE1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - MODE0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - OTYPER - OTYPER - GPIO port output type register - 0x4 - 0x20 - read-write - 0x00000000 - - - OT8 - Port x configuration bits (y = - 0..15) - 8 - 1 - - - OT7 - Port x configuration bits (y = - 0..15) - 7 - 1 - - - OT6 - Port x configuration bits (y = - 0..15) - 6 - 1 - - - OT5 - Port x configuration bits (y = - 0..15) - 5 - 1 - - - OT4 - Port x configuration bits (y = - 0..15) - 4 - 1 - - - OT3 - Port x configuration bits (y = - 0..15) - 3 - 1 - - - OT2 - Port x configuration bits (y = - 0..15) - 2 - 1 - - - OT1 - Port x configuration bits (y = - 0..15) - 1 - 1 - - - OT0 - Port x configuration bits (y = - 0..15) - 0 - 1 - - - - - OSPEEDR - OSPEEDR - GPIO port output speed - register - 0x8 - 0x20 - read-write - 0x00000000 - - - OSPEED8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - OSPEED7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - OSPEED6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - OSPEED5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - OSPEED4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - OSPEED3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - OSPEED2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - OSPEED1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - OSPEED0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - PUPDR - PUPDR - GPIO port pull-up/pull-down - register - 0xC - 0x20 - read-write - 0x00000000 - - - PUPD8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - PUPD7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - PUPD6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - PUPD5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - PUPD4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - PUPD3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - PUPD2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - PUPD1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - PUPD0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - IDR - IDR - GPIO port input data register - 0x10 - 0x20 - read-only - 0x00000000 - - - ID8 - Port input data (y = - 0..15) - 8 - 1 - - - ID7 - Port input data (y = - 0..15) - 7 - 1 - - - ID6 - Port input data (y = - 0..15) - 6 - 1 - - - ID5 - Port input data (y = - 0..15) - 5 - 1 - - - ID4 - Port input data (y = - 0..15) - 4 - 1 - - - ID3 - Port input data (y = - 0..15) - 3 - 1 - - - ID2 - Port input data (y = - 0..15) - 2 - 1 - - - ID1 - Port input data (y = - 0..15) - 1 - 1 - - - ID0 - Port input data (y = - 0..15) - 0 - 1 - - - - - ODR - ODR - GPIO port output data register - 0x14 - 0x20 - read-write - 0x00000000 - - - OD8 - Port output data (y = - 0..15) - 8 - 1 - - - OD7 - Port output data (y = - 0..15) - 7 - 1 - - - OD6 - Port output data (y = - 0..15) - 6 - 1 - - - OD5 - Port output data (y = - 0..15) - 5 - 1 - - - OD4 - Port output data (y = - 0..15) - 4 - 1 - - - OD3 - Port output data (y = - 0..15) - 3 - 1 - - - OD2 - Port output data (y = - 0..15) - 2 - 1 - - - OD1 - Port output data (y = - 0..15) - 1 - 1 - - - OD0 - Port output data (y = - 0..15) - 0 - 1 - - - - - BSRR - BSRR - GPIO port bit set/reset - register - 0x18 - 0x20 - write-only - 0x00000000 - - - BR8 - Port x reset bit y (y = - 0..15) - 24 - 1 - - - BR7 - Port x reset bit y (y = - 0..15) - 23 - 1 - - - BR6 - Port x reset bit y (y = - 0..15) - 22 - 1 - - - BR5 - Port x reset bit y (y = - 0..15) - 21 - 1 - - - BR4 - Port x reset bit y (y = - 0..15) - 20 - 1 - - - BR3 - Port x reset bit y (y = - 0..15) - 19 - 1 - - - BR2 - Port x reset bit y (y = - 0..15) - 18 - 1 - - - BR1 - Port x reset bit y (y = - 0..15) - 17 - 1 - - - BR0 - Port x set bit y (y= - 0..15) - 16 - 1 - - - BS8 - Port x set bit y (y= - 0..15) - 8 - 1 - - - BS7 - Port x set bit y (y= - 0..15) - 7 - 1 - - - BS6 - Port x set bit y (y= - 0..15) - 6 - 1 - - - BS5 - Port x set bit y (y= - 0..15) - 5 - 1 - - - BS4 - Port x set bit y (y= - 0..15) - 4 - 1 - - - BS3 - Port x set bit y (y= - 0..15) - 3 - 1 - - - BS2 - Port x set bit y (y= - 0..15) - 2 - 1 - - - BS1 - Port x set bit y (y= - 0..15) - 1 - 1 - - - BS0 - Port x set bit y (y= - 0..15) - 0 - 1 - - - - - LCKR - LCKR - GPIO port configuration lock - register - 0x1C - 0x20 - read-write - 0x00000000 - - - LCKK - Port x lock bit y (y= - 0..15) - 16 - 1 - - - LCK8 - Port x lock bit y (y= - 0..15) - 8 - 1 - - - LCK7 - Port x lock bit y (y= - 0..15) - 7 - 1 - - - LCK6 - Port x lock bit y (y= - 0..15) - 6 - 1 - - - LCK5 - Port x lock bit y (y= - 0..15) - 5 - 1 - - - LCK4 - Port x lock bit y (y= - 0..15) - 4 - 1 - - - LCK3 - Port x lock bit y (y= - 0..15) - 3 - 1 - - - LCK2 - Port x lock bit y (y= - 0..15) - 2 - 1 - - - LCK1 - Port x lock bit y (y= - 0..15) - 1 - 1 - - - LCK0 - Port x lock bit y (y= - 0..15) - 0 - 1 - - - - - AFRL - AFRL - GPIO alternate function low - register - 0x20 - 0x20 - read-write - 0x00000000 - - - AFSEL7 - Alternate function selection for port x - bit y (y = 0..7) - 28 - 4 - - - AFSEL6 - Alternate function selection for port x - bit y (y = 0..7) - 24 - 4 - - - AFSEL5 - Alternate function selection for port x - bit y (y = 0..7) - 20 - 4 - - - AFSEL4 - Alternate function selection for port x - bit y (y = 0..7) - 16 - 4 - - - AFSEL3 - Alternate function selection for port x - bit y (y = 0..7) - 12 - 4 - - - AFSEL2 - Alternate function selection for port x - bit y (y = 0..7) - 8 - 4 - - - AFSEL1 - Alternate function selection for port x - bit y (y = 0..7) - 4 - 4 - - - AFSEL0 - Alternate function selection for port x - bit y (y = 0..7) - 0 - 4 - - - - - AFRH - AFRH - GPIO alternate function high - register - 0x24 - 0x20 - read-write - 0x00000000 - - - AFSEL15 - Alternate function selection for port x - bit y (y = 8..15) - 28 - 4 - - - AFSEL14 - Alternate function selection for port x - bit y (y = 8..15) - 24 - 4 - - - AFSEL13 - Alternate function selection for port x - bit y (y = 8..15) - 20 - 4 - - - AFSEL12 - Alternate function selection for port x - bit y (y = 8..15) - 16 - 4 - - - AFSEL11 - Alternate function selection for port x - bit y (y = 8..15) - 12 - 4 - - - AFSEL10 - Alternate function selection for port x - bit y (y = 8..15) - 8 - 4 - - - AFSEL9 - Alternate function selection for port x - bit y (y = 8..15) - 4 - 4 - - - AFSEL8 - Alternate function selection for port x - bit y (y = 8..15) - 0 - 4 - - - - - BRR - BRR - port bit reset register - 0x28 - 0x20 - write-only - 0x00000000 - - - BR8 - Port Reset bit - 8 - 1 - - - BR7 - Port Reset bit - 7 - 1 - - - BR6 - Port Reset bit - 6 - 1 - - - BR5 - Port Reset bit - 5 - 1 - - - BR4 - Port Reset bit - 4 - 1 - - - BR3 - Port Reset bit - 3 - 1 - - - BR2 - Port Reset bit - 2 - 1 - - - BR1 - Port Reset bit - 1 - 1 - - - BR0 - Port Reset bit - 0 - 1 - - - - - - - GPIOF - 0x50001400 - - - EXTI - External interrupt/event - controller - EXTI - 0x40021800 - - 0x0 - 0x400 - registers - - - PVD - PVD Interrupt through EXTI Lines 16 - 1 - - - EXTI0_1 - EXTI Line 0 and 1 Interrupt - 5 - - - EXTI2_3 - EXTI Line 2 and 3 Interrupt - 6 - - - EXTI4_15 - EXTI Line 4 to 15 Interrupt - 7 - - - - RTSR - RTSR - EXTI rising trigger selection - register - 0x0 - 0x20 - read-write - 0x00000000 - - - RT18 - Rising trigger event configuration bit - of Configurable Event input - 18 - 1 - - - RT17 - Rising trigger event configuration bit - of Configurable Event input - 17 - 1 - - - RT16 - Rising trigger event configuration bit - of Configurable Event input - 16 - 1 - - - RT15 - Rising trigger event configuration bit - of Configurable Event input - 15 - 1 - - - RT14 - Rising trigger event configuration bit - of Configurable Event input - 14 - 1 - - - RT13 - Rising trigger event configuration bit - of Configurable Event input - 13 - 1 - - - RT12 - Rising trigger event configuration bit - of Configurable Event input - 12 - 1 - - - RT11 - Rising trigger event configuration bit - of Configurable Event input - 11 - 1 - - - RT10 - Rising trigger event configuration bit - of Configurable Event input - 10 - 1 - - - RT9 - Rising trigger event configuration bit - of Configurable Event input - 9 - 1 - - - RT8 - Rising trigger event configuration bit - of Configurable Event input - 8 - 1 - - - RT7 - Rising trigger event configuration bit - of Configurable Event input - 7 - 1 - - - RT6 - Rising trigger event configuration bit - of Configurable Event input - 6 - 1 - - - RT5 - Rising trigger event configuration bit - of Configurable Event input - 5 - 1 - - - RT4 - Rising trigger event configuration bit - of Configurable Event input - 4 - 1 - - - RT3 - Rising trigger event configuration bit - of Configurable Event input - 3 - 1 - - - RT2 - Rising trigger event configuration bit - of Configurable Event input - 2 - 1 - - - RT1 - Rising trigger event configuration bit - of Configurable Event input - 1 - 1 - - - RT0 - Rising trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - FTSR - FTSR - EXTI falling trigger selection - register - 0x4 - 0x20 - read-write - 0x00000000 - - - FT18 - Falling trigger event configuration bit - of Configurable Event input - 18 - 1 - - - FT17 - Falling trigger event configuration bit - of Configurable Event input - 17 - 1 - - - FT16 - Falling trigger event configuration bit - of Configurable Event input - 16 - 1 - - - FT15 - Falling trigger event configuration bit - of Configurable Event input - 15 - 1 - - - FT14 - Falling trigger event configuration bit - of Configurable Event input - 14 - 1 - - - FT13 - Falling trigger event configuration bit - of Configurable Event input - 13 - 1 - - - FT12 - Falling trigger event configuration bit - of Configurable Event input - 12 - 1 - - - FT11 - Falling trigger event configuration bit - of Configurable Event input - 11 - 1 - - - FT10 - Falling trigger event configuration bit - of Configurable Event input - 10 - 1 - - - FT9 - Falling trigger event configuration bit - of Configurable Event input - 9 - 1 - - - FT8 - Falling trigger event configuration bit - of Configurable Event input - 8 - 1 - - - FT7 - Falling trigger event configuration bit - of Configurable Event input - 7 - 1 - - - FT6 - Falling trigger event configuration bit - of Configurable Event input - 6 - 1 - - - FT5 - Falling trigger event configuration bit - of Configurable Event input - 5 - 1 - - - FT4 - Falling trigger event configuration bit - of Configurable Event input - 4 - 1 - - - FT3 - Falling trigger event configuration bit - of Configurable Event input - 3 - 1 - - - FT2 - Falling trigger event configuration bit - of Configurable Event input - 2 - 1 - - - FT1 - Falling trigger event configuration bit - of Configurable Event input - 1 - 1 - - - FT0 - Falling trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - SWIER - SWIER - EXTI software interrupt event - register - 0x8 - 0x20 - read-write - 0x00000000 - - - SWI18 - Rising trigger event configuration bit - of Configurable Event input - 18 - 1 - - - SWI17 - Rising trigger event configuration bit - of Configurable Event input - 17 - 1 - - - SWI16 - Rising trigger event configuration bit - of Configurable Event input - 16 - 1 - - - SWI15 - Rising trigger event configuration bit - of Configurable Event input - 15 - 1 - - - SWI14 - Rising trigger event configuration bit - of Configurable Event input - 14 - 1 - - - SWI13 - Rising trigger event configuration bit - of Configurable Event input - 13 - 1 - - - SWI12 - Rising trigger event configuration bit - of Configurable Event input - 12 - 1 - - - SWI11 - Rising trigger event configuration bit - of Configurable Event input - 11 - 1 - - - SWI10 - Rising trigger event configuration bit - of Configurable Event input - 10 - 1 - - - SWI9 - Rising trigger event configuration bit - of Configurable Event input - 9 - 1 - - - SWI8 - Rising trigger event configuration bit - of Configurable Event input - 8 - 1 - - - SWI7 - Rising trigger event configuration bit - of Configurable Event input - 7 - 1 - - - SWI6 - Rising trigger event configuration bit - of Configurable Event input - 6 - 1 - - - SWI5 - Rising trigger event configuration bit - of Configurable Event input - 5 - 1 - - - SWI4 - Rising trigger event configuration bit - of Configurable Event input - 4 - 1 - - - SWI3 - Rising trigger event configuration bit - of Configurable Event input - 3 - 1 - - - SWI2 - Rising trigger event configuration bit - of Configurable Event input - 2 - 1 - - - SWI1 - Rising trigger event configuration bit - of Configurable Event input - 1 - 1 - - - SWI0 - Rising trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - PR - PR - EXTI pending - register - 0xC - 0x20 - read-write - 0x00000000 - - - PR18 - configurable event inputs x rising edge - Pending bit. - 18 - 1 - - - PR17 - configurable event inputs x rising edge - Pending bit. - 17 - 1 - - - PR16 - configurable event inputs x rising edge - Pending bit. - 16 - 1 - - - PR15 - configurable event inputs x rising edge - Pending bit. - 15 - 1 - - - PR14 - configurable event inputs x rising edge - Pending bit. - 14 - 1 - - - PR13 - configurable event inputs x rising edge - Pending bit - 13 - 1 - - - PR12 - configurable event inputs x rising edge - Pending bit. - 12 - 1 - - - PR11 - configurable event inputs x rising edge - Pending bit. - 11 - 1 - - - PR10 - configurable event inputs x rising edge - Pending bit. - 10 - 1 - - - PR9 - configurable event inputs x rising edge - Pending bit. - 9 - 1 - - - PR8 - configurable event inputs x rising edge - Pending bit. - 8 - 1 - - - PR7 - configurable event inputs x rising edge - Pending bit. - 7 - 1 - - - PR6 - configurable event inputs x rising edge - Pending bit. - 6 - 1 - - - PR5 - configurable event inputs x rising edge - Pending bit. - 5 - 1 - - - PR4 - configurable event inputs x rising edge - Pending bit. - 4 - 1 - - - PR3 - configurable event inputs x rising edge - Pending bit. - 3 - 1 - - - PR2 - configurable event inputs x rising edge - Pending bit. - 2 - 1 - - - PR1 - configurable event inputs x rising edge - Pending bit. - 1 - 1 - - - PR0 - configurable event inputs x rising edge - Pending bit. - 0 - 1 - - - - - EXTICR1 - EXTICR1 - EXTI external interrupt selection - register - 0x60 - 0x20 - read-write - 0x00000000 - - - EXTI3 - GPIO port selection - 24 - 2 - - - EXTI2 - GPIO port selection - 16 - 2 - - - EXTI1 - GPIO port selection - 8 - 2 - - - EXTI0 - GPIO port selection - 0 - 2 - - - - - EXTICR2 - EXTICR2 - EXTI external interrupt selection - register - 0x64 - 0x20 - read-write - 0x00000000 - - - EXTI7 - GPIO port selection - 24 - 1 - - - EXTI6 - GPIO port selection - 16 - 1 - - - EXTI5 - GPIO port selection - 8 - 1 - - - EXTI4 - GPIO port selection - 0 - 2 - - - - - EXTICR3 - EXTICR3 - EXTI external interrupt selection - register - 0x68 - 0x20 - read-write - 0x00000000 - - - EXTI8 - GPIO port selection - 0 - 1 - - - - - IMR - IMR - EXTI CPU wakeup with interrupt mask - register - 0x80 - 0x20 - read-write - 0xFFF80000 - - - IM29 - CPU wakeup with interrupt mask on event - input - 29 - 1 - - - IM19 - CPU wakeup with interrupt mask on event - input - 19 - 1 - - - IM18 - CPU wakeup with interrupt mask on event - input - 18 - 1 - - - IM17 - CPU wakeup with interrupt mask on event - input - 17 - 1 - - - IM16 - CPU wakeup with interrupt mask on event - input - 16 - 1 - - - IM15 - CPU wakeup with interrupt mask on event - input - 15 - 1 - - - IM14 - CPU wakeup with interrupt mask on event - input - 14 - 1 - - - IM13 - CPU wakeup with interrupt mask on event - input - 13 - 1 - - - IM12 - CPU wakeup with interrupt mask on event - input - 12 - 1 - - - IM11 - CPU wakeup with interrupt mask on event - input - 11 - 1 - - - IM10 - CPU wakeup with interrupt mask on event - input - 10 - 1 - - - IM9 - CPU wakeup with interrupt mask on event - input - 9 - 1 - - - IM8 - CPU wakeup with interrupt mask on event - input - 8 - 1 - - - IM7 - CPU wakeup with interrupt mask on event - input - 7 - 1 - - - IM6 - CPU wakeup with interrupt mask on event - input - 6 - 1 - - - IM5 - CPU wakeup with interrupt mask on event - input - 5 - 1 - - - IM4 - CPU wakeup with interrupt mask on event - input - 4 - 1 - - - IM3 - CPU wakeup with interrupt mask on event - input - 3 - 1 - - - IM2 - CPU wakeup with interrupt mask on event - input - 2 - 1 - - - IM1 - CPU wakeup with interrupt mask on event - input - 1 - 1 - - - IM0 - CPU wakeup with interrupt mask on event - input - 0 - 1 - - - - - EMR - EMR - EXTI CPU wakeup with event mask - register - 0x84 - 0x20 - read-write - 0x00000000 - - - EM29 - CPU wakeup with event mask on event - input - 29 - 1 - - - EM19 - CPU wakeup with event mask on event - input - 19 - 1 - - - EM18 - CPU wakeup with event mask on event - input - 18 - 1 - - - EM17 - CPU wakeup with event mask on event - input - 17 - 1 - - - EM16 - CPU wakeup with event mask on event - input - 16 - 1 - - - EM15 - CPU wakeup with event mask on event - input - 15 - 1 - - - EM14 - CPU wakeup with event mask on event - input - 14 - 1 - - - EM13 - CPU wakeup with event mask on event - input - 13 - 1 - - - EM12 - CPU wakeup with event mask on event - input - 12 - 1 - - - EM11 - CPU wakeup with event mask on event - input - 11 - 1 - - - EM10 - CPU wakeup with event mask on event - input - 10 - 1 - - - EM9 - CPU wakeup with event mask on event - input - 9 - 1 - - - EM8 - CPU wakeup with event mask on event - input - 8 - 1 - - - EM7 - CPU wakeup with event mask on event - input - 7 - 1 - - - EM6 - CPU wakeup with event mask on event - input - 6 - 1 - - - EM5 - CPU wakeup with event mask on event - input - 5 - 1 - - - EM4 - CPU wakeup with event mask on event - input - 4 - 1 - - - EM3 - CPU wakeup with event mask on event - input - 3 - 1 - - - EM2 - CPU wakeup with event mask on event - input - 2 - 1 - - - EM1 - CPU wakeup with event mask on event - input - 1 - 1 - - - EM0 - CPU wakeup with event mask on event - input - 0 - 1 - - - - - - - LPTIM - Low power timer - LPTIM - 0x40007C00 - - 0x0 - 0x400 - registers - - - - ISR - ISR - Interrupt and Status Register - 0x0 - 0x20 - read-only - 0x00000000 - - - ARRM - Autoreload match - 1 - 1 - - - - - ICR - ICR - Interrupt Clear Register - 0x4 - 0x20 - write-only - 0x00000000 - - - ARRMCF - Autoreload match Clear - Flag - 1 - 1 - - - - - IER - IER - Interrupt Enable Register - 0x8 - 0x20 - read-write - 0x00000000 - - - ARRMIE - Autoreload match Interrupt - Enable - 1 - 1 - - - - - CFGR - CFGR - Configuration Register - 0xC - 0x20 - read-write - 0x00000000 - - - PRELOAD - Registers update mode - 22 - 1 - - - PRESC - Clock prescaler - 9 - 3 - - - - - CR - CR - Control Register - 0x10 - 0x20 - read-write - 0x00000000 - - - RSTARE - Reset after read enable - 4 - 1 - - - SNGSTRT - LPTIM start in single mode - 1 - 1 - - - ENABLE - LPTIM Enable - 0 - 1 - - - - - ARR - ARR - Autoreload Register - 0x18 - 0x20 - read-write - 0x00000001 - - - ARR - Auto reload value - 0 - 16 - - - - - CNT - CNT - Counter Register - 0x1C - 0x20 - read-only - 0x00000000 - - - CNT - Counter value - 0 - 16 - - - - - - - USART1 - Universal synchronous asynchronous receiver - transmitter - USART - 0x40013800 - - 0x0 - 0x400 - registers - - - USART1 - USART1 global Interrupt - 27 - - - - SR - SR - Status register - 0x0 - 0x20 - 0x00C0 - - - ABRRQ - Automate baudrate detection requeset - 12 - 1 - write-only - - - ABRE - Automate baudrate detection error flag - 11 - 1 - read-only - - - ABRF - Automate baudrate detection flag - 10 - 1 - read-only - - - CTS - CTS flag - 9 - 1 - read-write - - - TXE - Transmit data register - empty - 7 - 1 - read-only - - - TC - Transmission complete - 6 - 1 - read-write - - - RXNE - Read data register not - empty - 5 - 1 - read-write - - - IDLE - IDLE line detected - 4 - 1 - read-only - - - ORE - Overrun error - 3 - 1 - read-only - - - NE - Noise error flag - 2 - 1 - read-only - - - FE - Framing error - 1 - 1 - read-only - - - PE - Parity error - 0 - 1 - read-only - - - - - DR - DR - Data register - 0x4 - 0x20 - read-write - 0x00000000 - - - DR - Data value - 0 - 9 - - - - - BRR - BRR - Baud rate register - 0x8 - 0x20 - read-write - 0x0000 - - - DIV_Mantissa - mantissa of USARTDIV - 4 - 12 - - - DIV_Fraction - fraction of USARTDIV - 0 - 4 - - - - - CR1 - CR1 - Control register 1 - 0xC - 0x20 - read-write - 0x0000 - - - UE - USART enable - 13 - 1 - - - M - Word length - 12 - 1 - - - WAKE - Wakeup method - 11 - 1 - - - PCE - Parity control enable - 10 - 1 - - - PS - Parity selection - 9 - 1 - - - PEIE - PE interrupt enable - 8 - 1 - - - TXEIE - TXE interrupt enable - 7 - 1 - - - TCIE - Transmission complete interrupt - enable - 6 - 1 - - - RXNEIE - RXNE interrupt enable - 5 - 1 - - - IDLEIE - IDLE interrupt enable - 4 - 1 - - - TE - Transmitter enable - 3 - 1 - - - RE - Receiver enable - 2 - 1 - - - RWU - Receiver wakeup - 1 - 1 - - - SBK - Send break - 0 - 1 - - - - - CR2 - CR2 - Control register 2 - 0x10 - 0x20 - read-write - 0x0000 - - - STOP - STOP bits - 12 - 2 - - - CLKEN - Clock enable - 11 - 1 - - - CPOL - Clock polarity - 10 - 1 - - - CPHA - Clock phase - 9 - 1 - - - LBCL - Last bit clock pulse - 8 - 1 - - - ADD - Address of the USART node - 0 - 4 - - - - - CR3 - CR3 - Control register 3 - 0x14 - 0x20 - read-write - 0x0000 - - - ABRMOD - Auto baudrate mode - 13 - 2 - - - ABREN - Auto baudrate enable - 12 - 1 - - - OVER8 - Oversampling mode - 11 - 1 - - - CTSIE - CTS interrupt enable - 10 - 1 - - - CTSE - CTS enable - 9 - 1 - - - RTSE - RTS enable - 8 - 1 - - - DMAT - DMA enable transmitter - 7 - 1 - - - DMAR - DMA enable receiver - 6 - 1 - - - HDSEL - Half-duplex selection - 3 - 1 - - - IRLP - IrDA low-power - 2 - 1 - - - IREN - IrDA mode enable - 1 - 1 - - - EIE - Error interrupt enable - 0 - 1 - - - - - - - USART2 - 0x40004400 - - USART2 - USART2 global Interrupt - 28 - - - - RTC - Real time clock - RTC - 0x40002800 - - 0x0 - 0x400 - registers - - - RTC - RTC Interrupt through EXTI Lines 19 - 2 - - - - CRH - CRH - RTC Control Register High - 0x0 - 0x20 - read-write - 0x00000000 - - - OWIE - Overflow interrupt Enable - 2 - 1 - - - ALRIE - Alarm interrupt Enable - 1 - 1 - - - SECIE - Second interrupt Enable - 0 - 1 - - - - - CRL - CRL - RTC Control Register Low - 0x4 - 0x20 - 0x00000020 - - - RTOFF - RTC operation OFF - 5 - 1 - read-only - - - CNF - Configuration Flag - 4 - 1 - read-write - - - RSF - Registers Synchronized - Flag - 3 - 1 - read-write - - - OWF - Overflow Flag - 2 - 1 - read-write - - - ALRF - Alarm Flag - 1 - 1 - read-write - - - SECF - Second Flag - 0 - 1 - read-write - - - - - PRLH - PRLH - RTC Prescaler Load Register - High - 0x8 - 0x20 - write-only - 0x00000000 - - - PRLH - RTC Prescaler Load Register - High - 0 - 4 - - - - - PRLL - PRLL - RTC Prescaler Load Register - Low - 0xC - 0x20 - write-only - 0x8000 - - - PRLL - RTC Prescaler Divider Register - Low - 0 - 16 - - - - - DIVH - DIVH - RTC Prescaler Divider Register - High - 0x10 - 0x20 - read-only - 0x00000000 - - - DIVH - RTC prescaler divider register - high - 0 - 4 - - - - - DIVL - DIVL - RTC Prescaler Divider Register - Low - 0x14 - 0x20 - read-only - 0x8000 - - - DIVL - RTC prescaler divider register - Low - 0 - 16 - - - - - CNTH - CNTH - RTC Counter Register High - 0x18 - 0x20 - read-write - 0x00000000 - - - CNTH - RTC counter register high - 0 - 16 - - - - - CNTL - CNTL - RTC Counter Register Low - 0x1C - 0x20 - read-write - 0x00000000 - - - CNTL - RTC counter register Low - 0 - 16 - - - - - ALRH - ALRH - RTC Alarm Register High - 0x20 - 0x20 - write-only - 0xFFFF - - - ALRH - RTC alarm register high - 0 - 16 - - - - - ALRL - ALRL - RTC Alarm Register Low - 0x24 - 0x20 - write-only - 0xFFFF - - - ALRL - RTC alarm register low - 0 - 16 - - - - - RTCCR - RTCCR - RTC clock calibration - 0x2C - 0x20 - read-write - 0x0000 - - - ASOS - Alarm or second output selection - 9 - 1 - - - ASOE - Alarm or second output enable - 8 - 1 - - - CCO - Calibration clock output - 7 - 1 - - - CAL - Calibration value - 0 - 7 - - - - - - - IWDG - Independent watchdog - IWDG - 0x40003000 - - 0x0 - 0x400 - registers - - - - KR - KR - Key register (IWDG_KR) - 0x0 - 0x20 - write-only - 0x00000000 - - - KEY - Key value - 0 - 16 - - - - - PR - PR - Prescaler register (IWDG_PR) - 0x4 - 0x20 - read-write - 0x00000000 - - - PR - Prescaler divider - 0 - 3 - - - - - RLR - RLR - Reload register (IWDG_RLR) - 0x8 - 0x20 - read-write - 0x00000FFF - - - RL - Watchdog counter reload - value - 0 - 12 - - - - - SR - SR - Status register (IWDG_SR) - 0xC - 0x20 - read-only - 0x00000000 - - - WVU - Watchdog counter window value update - 2 - 1 - - - RVU - Watchdog counter reload value - update - 1 - 1 - - - PVU - Watchdog prescaler value - update - 0 - 1 - - - - - WINR - WINR - Window register (IWDG_SR) - 0x10 - 0x20 - read-only - 0x00000000 - - - WIN - window counter - 0 - 12 - - - - - - - WWDG - Window watchdog - WWDG - 0x40002C00 - - 0x0 - 0x400 - registers - - - WWDG - Window WatchDog Interrupt - 0 - - - - CR - CR - Control register (WWDG_CR) - 0x0 - 0x20 - read-write - 0x0000007F - - - WDGA - Activation bit - 7 - 1 - - - T - 7-bit counter (MSB to LSB) - 0 - 7 - - - - - CFR - CFR - Configuration register - (WWDG_CFR) - 0x4 - 0x20 - read-write - 0x0000007F - - - EWI - Early Wakeup Interrupt - 9 - 1 - - - WDGTB - Timer Base - 7 - 2 - - - W - 7-bit window value - 0 - 7 - - - - - SR - SR - Status register (WWDG_SR) - 0x8 - 0x20 - read-write - 0x00000000 - - - EWIF - Early Wakeup Interrupt flag - 0 - 1 - - - - - - - TIM1 - Advanced timer - TIM - 0x40012C00 - - 0x0 - 0x400 - registers - - - TIM1_BRK_UP_TRG_COM - TIM1 Break, Update, Trigger and Commutation Interrupt - 13 - - - TIM1_CC - TIM1 Capture Compare Interrupt - 14 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Clock division - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - CMS - Center-aligned mode - selection - 5 - 2 - - - DIR - Direction - 4 - 1 - - - OPM - One-pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - OIS4 - Output Idle state 4 - 14 - 1 - - - OIS3N - Output Idle state 3 - 13 - 1 - - - OIS3 - Output Idle state 3 - 12 - 1 - - - OIS2N - Output Idle state 2 - 11 - 1 - - - OIS2 - Output Idle state 2 - 10 - 1 - - - OIS1N - Output Idle state 1 - 9 - 1 - - - OIS1 - Output Idle state 1 - 8 - 1 - - - TI1S - TI1 selection - 7 - 1 - - - MMS - Master mode selection - 4 - 3 - - - CCDS - Capture/compare DMA - selection - 3 - 1 - - - CCUS - Capture/compare control update - selection - 2 - 1 - - - CCPC - Capture/compare preloaded - control - 0 - 1 - - - - - SMCR - SMCR - slave mode control register - 0x8 - 0x20 - read-write - 0x0000 - - - ETP - External trigger polarity - 15 - 1 - - - ECE - External clock enable - 14 - 1 - - - ETPS - External trigger prescaler - 12 - 2 - - - ETF - External trigger filter - 8 - 4 - - - MSM - Master/Slave mode - 7 - 1 - - - TS - Trigger selection - 4 - 3 - - - OCCS - OCREF clear selection bit - 3 - 1 - - - SMS - Slave mode selection - 0 - 3 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - TDE - Trigger DMA request enable - 14 - 1 - - - COMDE - COM DMA request enable - 13 - 1 - - - CC4DE - Capture/Compare 4 DMA request - enable - 12 - 1 - - - CC3DE - Capture/Compare 3 DMA request - enable - 11 - 1 - - - CC2DE - Capture/Compare 2 DMA request - enable - 10 - 1 - - - CC1DE - Capture/Compare 1 DMA request - enable - 9 - 1 - - - UDE - Update DMA request enable - 8 - 1 - - - BIE - Break interrupt enable - 7 - 1 - - - TIE - Trigger interrupt enable - 6 - 1 - - - COMIE - COM interrupt enable - 5 - 1 - - - CC4IE - Capture/Compare 4 interrupt - enable - 4 - 1 - - - CC3IE - Capture/Compare 3 interrupt - enable - 3 - 1 - - - CC2IE - Capture/Compare 2 interrupt - enable - 2 - 1 - - - CC1IE - Capture/Compare 1 interrupt - enable - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC4OF - Capture/Compare 4 overcapture - flag - 12 - 1 - - - CC3OF - Capture/Compare 3 overcapture - flag - 11 - 1 - - - CC2OF - Capture/compare 2 overcapture - flag - 10 - 1 - - - CC1OF - Capture/Compare 1 overcapture - flag - 9 - 1 - - - BIF - Break interrupt flag - 7 - 1 - - - TIF - Trigger interrupt flag - 6 - 1 - - - COMIF - COM interrupt flag - 5 - 1 - - - CC4IF - Capture/Compare 4 interrupt - flag - 4 - 1 - - - CC3IF - Capture/Compare 3 interrupt - flag - 3 - 1 - - - CC2IF - Capture/Compare 2 interrupt - flag - 2 - 1 - - - CC1IF - Capture/compare 1 interrupt - flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - BG - Break generation - 7 - 1 - - - TG - Trigger generation - 6 - 1 - - - COMG - Capture/Compare control update - generation - 5 - 1 - - - CC4G - Capture/compare 4 - generation - 4 - 1 - - - CC3G - Capture/compare 3 - generation - 3 - 1 - - - CC2G - Capture/compare 2 - generation - 2 - 1 - - - CC1G - Capture/compare 1 - generation - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC2CE - Output Compare 2 clear - enable - 15 - 1 - - - OC2M - Output Compare 2 mode - 12 - 3 - - - OC2PE - Output Compare 2 preload - enable - 11 - 1 - - - OC2FE - Output Compare 2 fast - enable - 10 - 1 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - OC1CE - Output Compare 1 clear - enable - 7 - 1 - - - OC1M - Output Compare 1 mode - 4 - 3 - - - OC1PE - Output Compare 1 preload - enable - 3 - 1 - - - OC1FE - Output Compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC2F - Input capture 2 filter - 12 - 4 - - - IC2PSC - Input capture 2 prescaler - 10 - 2 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - IC1F - Input capture 1 filter - 4 - 4 - - - ICPSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR2_Output - CCMR2_Output - capture/compare mode register (output - mode) - 0x1C - 0x20 - read-write - 0x00000000 - - - OC4CE - Output compare 4 clear - enable - 15 - 1 - - - OC4M - Output compare 4 mode - 12 - 3 - - - OC4PE - Output compare 4 preload - enable - 11 - 1 - - - OC4FE - Output compare 4 fast - enable - 10 - 1 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - OC3CE - Output compare 3 clear - enable - 7 - 1 - - - OC3M - Output compare 3 mode - 4 - 3 - - - OC3PE - Output compare 3 preload - enable - 3 - 1 - - - OC3FE - Output compare 3 fast - enable - 2 - 1 - - - CC3S - Capture/Compare 3 - selection - 0 - 2 - - - - - CCMR2_Input - CCMR2_Input - capture/compare mode register 2 (input - mode) - CCMR2_Output - 0x1C - 0x20 - read-write - 0x00000000 - - - IC4F - Input capture 4 filter - 12 - 4 - - - IC4PSC - Input capture 4 prescaler - 10 - 2 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - IC3F - Input capture 3 filter - 4 - 4 - - - IC3PSC - Input capture 3 prescaler - 2 - 2 - - - CC3S - Capture/compare 3 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC4P - Capture/Compare 3 output - Polarity - 13 - 1 - - - CC4E - Capture/Compare 4 output - enable - 12 - 1 - - - CC3NP - Capture/Compare 3 output - Polarity - 11 - 1 - - - CC3NE - Capture/Compare 3 complementary output - enable - 10 - 1 - - - CC3P - Capture/Compare 3 output - Polarity - 9 - 1 - - - CC3E - Capture/Compare 3 output - enable - 8 - 1 - - - CC2NP - Capture/Compare 2 output - Polarity - 7 - 1 - - - CC2NE - Capture/Compare 2 complementary output - enable - 6 - 1 - - - CC2P - Capture/Compare 2 output - Polarity - 5 - 1 - - - CC2E - Capture/Compare 2 output - enable - 4 - 1 - - - CC1NP - Capture/Compare 1 output - Polarity - 3 - 1 - - - CC1NE - Capture/Compare 1 complementary output - enable - 2 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - RCR - RCR - repetition counter register - 0x30 - 0x20 - read-write - 0x0000 - - - REP - Repetition counter value - 0 - 8 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - CCR2 - CCR2 - capture/compare register 2 - 0x38 - 0x20 - read-write - 0x00000000 - - - CCR2 - Capture/Compare 2 value - 0 - 16 - - - - - CCR3 - CCR3 - capture/compare register 3 - 0x3C - 0x20 - read-write - 0x00000000 - - - CCR3 - Capture/Compare value - 0 - 16 - - - - - CCR4 - CCR4 - capture/compare register 4 - 0x40 - 0x20 - read-write - 0x00000000 - - - CCR4 - Capture/Compare value - 0 - 16 - - - - - BDTR - BDTR - break and dead-time register - 0x44 - 0x20 - read-write - 0x0000 - - - MOE - Main output enable - 15 - 1 - - - AOE - Automatic output enable - 14 - 1 - - - BKP - Break polarity - 13 - 1 - - - BKE - Break enable - 12 - 1 - - - OSSR - Off-state selection for Run - mode - 11 - 1 - - - OSSI - Off-state selection for Idle - mode - 10 - 1 - - - LOCK - Lock configuration - 8 - 2 - - - DTG - Dead-time generator setup - 0 - 8 - - - - - DCR - DCR - DMA control register - 0x48 - 0x20 - read-write - 0x0000 - - - DBL - DMA burst length - 8 - 5 - - - DBA - DMA base address - 0 - 5 - - - - - DMAR - DMAR - DMA address for full transfer - 0x4C - 0x20 - read-write - 0x0000 - - - DMAB - DMA register for burst - accesses - 0 - 16 - - - - - - - TIM3 - General purpose timer - TIM - 0x40000400 - - 0x00 - 0x400 - registers - - - TIM3 - TIM3 global Interrupt - 16 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Clock division - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - CMS - Center-aligned mode - selection - 5 - 2 - - - DIR - Direction - 4 - 1 - - - OPM - One-pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - TI1S - TI1 selection - 7 - 1 - - - MMS - Master mode selection - 4 - 3 - - - CCDS - Capture/compare DMA - selection - 3 - 1 - - - - - SMCR - SMCR - slave mode control register - 0x8 - 0x20 - read-write - 0x0000 - - - MSM - Master/Slave mode - 7 - 1 - - - TS - Trigger selection - 4 - 3 - - - OCCS - OCREF Clear Selection - 3 - 1 - - - SMS - Slave mode selection - 0 - 3 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - TDE - Trigger DMA request enable - 14 - 1 - - - CC4DE - Capture/Compare 4 DMA request - enable - 12 - 1 - - - CC3DE - Capture/Compare 3 DMA request - enable - 11 - 1 - - - CC2DE - Capture/Compare 2 DMA request - enable - 10 - 1 - - - CC1DE - Capture/Compare 1 DMA request - enable - 9 - 1 - - - UDE - Update DMA request enable - 8 - 1 - - - TIE - Trigger interrupt enable - 6 - 1 - - - CC4IE - Capture/Compare 4 interrupt - enable - 4 - 1 - - - CC3IE - Capture/Compare 3 interrupt - enable - 3 - 1 - - - CC2IE - Capture/Compare 2 interrupt - enable - 2 - 1 - - - CC1IE - Capture/Compare 1 interrupt - enable - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC4OF - Capture/Compare 4 overcapture - flag - 12 - 1 - - - CC3OF - Capture/Compare 3 overcapture - flag - 11 - 1 - - - CC2OF - Capture/compare 2 overcapture - flag - 10 - 1 - - - CC1OF - Capture/Compare 1 overcapture - flag - 9 - 1 - - - TIF - Trigger interrupt flag - 6 - 1 - - - CC4IF - Capture/Compare 4 interrupt - flag - 4 - 1 - - - CC3IF - Capture/Compare 3 interrupt - flag - 3 - 1 - - - CC2IF - Capture/Compare 2 interrupt - flag - 2 - 1 - - - CC1IF - Capture/compare 1 interrupt - flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - TG - Trigger generation - 6 - 1 - - - CC4G - Capture/compare 4 - generation - 4 - 1 - - - CC3G - Capture/compare 3 - generation - 3 - 1 - - - CC2G - Capture/compare 2 - generation - 2 - 1 - - - CC1G - Capture/compare 1 - generation - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register 1 (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC2CE - Output compare 2 clear - enable - 15 - 1 - - - OC2M - Output compare 2 mode - 12 - 3 - - - OC2PE - Output compare 2 preload - enable - 11 - 1 - - - OC2FE - Output compare 2 fast - enable - 10 - 1 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - OC1CE - Output compare 1 clear - enable - 7 - 1 - - - OC1M - Output compare 1 mode - 4 - 3 - - - OC1PE - Output compare 1 preload - enable - 3 - 1 - - - OC1FE - Output compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC2F - Input capture 2 filter - 12 - 4 - - - IC2PSC - Input capture 2 prescaler - 10 - 2 - - - CC2S - Capture/compare 2 - selection - 8 - 2 - - - IC1F - Input capture 1 filter - 4 - 4 - - - IC1PSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR2_Output - CCMR2_Output - capture/compare mode register 2 (output - mode) - 0x1C - 0x20 - read-write - 0x00000000 - - - OC4CE - Output compare 4 clear - enable - 15 - 1 - - - OC4M - Output compare 4 mode - 12 - 3 - - - OC4PE - Output compare 4 preload - enable - 11 - 1 - - - OC4FE - Output compare 4 fast - enable - 10 - 1 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - OC3CE - Output compare 3 clear - enable - 7 - 1 - - - OC3M - Output compare 3 mode - 4 - 3 - - - OC3PE - Output compare 3 preload - enable - 3 - 1 - - - OC3FE - Output compare 3 fast - enable - 2 - 1 - - - CC3S - Capture/Compare 3 - selection - 0 - 2 - - - - - CCMR2_Input - CCMR2_Input - capture/compare mode register 2 (input - mode) - CCMR2_Output - 0x1C - 0x20 - read-write - 0x00000000 - - - IC4F - Input capture 4 filter - 12 - 4 - - - IC4PSC - Input capture 4 prescaler - 10 - 2 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - IC3F - Input capture 3 filter - 4 - 4 - - - IC3PSC - Input capture 3 prescaler - 2 - 2 - - - CC3S - Capture/Compare 3 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC4NP - - Capture/Compare 4 output - Polarity - - 15 - 1 - - - CC4P - - Capture/Compare 4 output - Polarity - - 13 - 1 - - - CC4E - - Capture/Compare 4 output - enable - - 12 - 1 - - - CC3NP - - Capture/Compare 3 output - Polarity - - 11 - 1 - - - CC3P - - Capture/Compare 3 output - Polarity - - 9 - 1 - - - CC3E - - Capture/Compare 3 output - enable - - 8 - 1 - - - CC2NP - - Capture/Compare 2 output - Polarity - - 7 - 1 - - - CC2P - - Capture/Compare 2 output - Polarity - - 5 - 1 - - - CC2E - - Capture/Compare 2 output - enable - - 4 - 1 - - - CC1NP - - Capture/Compare 1 output - Polarity - - 3 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - CCR2 - CCR2 - capture/compare register 2 - 0x38 - 0x20 - read-write - 0x00000000 - - - CCR2 - Capture/Compare 2 value - 0 - 16 - - - - - CCR3 - CCR3 - capture/compare register 3 - 0x3C - 0x20 - read-write - 0x00000000 - - - CCR3 - Capture/Compare value - 0 - 16 - - - - - CCR4 - CCR4 - capture/compare register 4 - 0x40 - 0x20 - read-write - 0x00000000 - - - CCR4 - Capture/Compare value - 0 - 16 - - - - - DCR - DCR - DMA control register - 0x48 - 0x20 - read-write - 0x0000 - - - DBL - DMA burst length - 8 - 5 - - - DBA - DMA base address - 0 - 5 - - - - - DMAR - DMAR - DMA address for full transfer - 0x4C - 0x20 - read-write - 0x0000 - - - DMAB - DMA register for burst - accesses - 0 - 32 - - - - - - - TIM14 - General purpose timer - TIM - 0x40002000 - - 0x00 - 0x400 - registers - - - TIM14 - TIM14 global Interrupt - 19 - - - - CR1 - CR1 - TIM14 control register1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Prescaler factor - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - CC1IE - Compare/ - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC1OF - Compare/capture 1 flag - 9 - 1 - - - CC1IF - Compare/capture 1 interrupt flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - CC1G - Compare/capture1 event - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC1M - Output Compare 1 mode - 4 - 3 - - - OC1PE - Output Compare 1 preload - enable - 3 - 1 - - - OC1FE - Output Compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC1F - Input capture 1 filter - 4 - 4 - - - IC1PSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC1NP - Capture/Compare 1 output - Polarity - 3 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - OR - OR - Option register - 0x50 - 0x20 - read-write - 0x00000000 - - - TI1_RMP - TIM14 channel1 input remap - 0 - 2 - - - - - - - TIM16 - General purpose timer - TIM - 0x40014400 - - 0x00 - 0x400 - registers - - - TIM16 - TIM16 global Interrupt - 21 - - - - CR1 - CR1 - TIM16 control register1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Prescaler factor - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - OPM - One pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - OIS1N - Output Idle state 1 - 9 - 1 - - - OIS1 - Output Idle state 1 - 8 - 1 - - - CCDS - Capture/compare DMA - selection - 3 - 1 - - - CCPC - Capture/compare preloaded - control - 0 - 1 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - CC1DE - Compare/capture DMA requeset enable - 9 - 1 - - - UDE - Update DMA request enable - 8 - 1 - - - BIE - Break interrupt enable - 7 - 1 - - - COMIE - Com interrupt enable - 5 - 1 - - - CC1IE - Capture/Compare 1 interrupt enable - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC1OF - Update interrupt flag - 9 - 1 - - - BIF - Break interrupt flag - 7 - 1 - - - COMIF - Com interrupt flag - 5 - 1 - - - CC1IF - Capture/Compare 1 interrupt flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - BG - Break event generation - 7 - 1 - - - COMG - COM evnet generation - 5 - 1 - - - CC1G - Capture/Compare 1 generation - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC1M - Output Compare 1 mode - 4 - 3 - - - OC1PE - Output Compare 1 preload - enable - 3 - 1 - - - OC1FE - Output Compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC1F - Input capture 1 filter - 4 - 4 - - - IC1PSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC1NP - Capture/Compare 1 output - Polarity - 3 - 1 - - - CC1NE - Capture/Compare 1 complementary output - enable - 2 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - RCR - RCR - repetition counter register - 0x30 - 0x20 - read-write - 0x0000 - - - REP - Repetition counter value - 0 - 8 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - BDTR - BDTR - break and dead-time register - 0x44 - 0x20 - read-write - 0x0000 - - - MOE - Main output enable - 15 - 1 - - - AOE - Automatic output enable - 14 - 1 - - - BKP - Break polarity - 13 - 1 - - - BKE - Break enable - 12 - 1 - - - OSSR - Off-state selection for Run - mode - 11 - 1 - - - OSSI - Off-state selection for Idle - mode - 10 - 1 - - - LOCK - Lock configuration - 8 - 2 - - - DTG - Dead-time generator setup - 0 - 8 - - - - - DCR - DCR - DMA control register - 0x48 - 0x20 - read-write - 0x0000 - - - DBL - DMA burst length - 8 - 5 - - - DBA - DMA base address - 0 - 5 - - - - - DMAR - DMAR - DMA address for full transfer - 0x4C - 0x20 - read-write - 0x0000 - - - DMAB - DMA register for burst - accesses - 0 - 32 - - - - - - - TIM17 - 0x40014800 - - TIM17 - TIM17 global Interrupt - 22 - - - - SYSCFG - System configuration controller - SYSCFG - 0x40010000 - - 0x0 - 0x30 - registers - - - - CFGR1 - CFGR1 - SYSCFG configuration register - 1 - 0x0 - 0x20 - read-write - 0x00000000 - - - I2C_PF1_ANF - Analog filter enable control driving capability - activation bits PF1 - 30 - 1 - - - I2C_PF0_ANF - Analog filter enable control driving capability - activation bits PF0 - 29 - 1 - - - I2C_PB8_ANF - Analog filter enable control driving capability - activation bits PB8 - 28 - 1 - - - I2C_PB7_ANF - Analog filter enable control driving capability - activation bits PB7 - 27 - 1 - - I2C_PB6_ANF - Analog filter enable control driving capability - activation bits PB6 - 26 - 1 - - - I2C_PA12_ANF - Analog filter enable control driving capability - activation bits PA12 - 25 - 1 - - - I2C_PA11_ANF - Analog filter enable control driving capability - activation bits PA11 - 24 - 1 - - - I2C_PA10_ANF - Analog filter enable control driving capability - activation bits PA10 - 23 - 1 - - - I2C_PA9_ANF - Analog filter enable control driving capability - activation bits PA9 - 22 - 1 - - - I2C_PA8_ANF - Analog filter enable control driving capability - activation bits PA8 - 21 - 1 - - - I2C_PA7_ANF - Analog filter enable control driving capability - activation bits PA7 - 20 - 1 - - - I2C_PA3_ANF - Analog filter enable control driving capability - activation bits PA3 - 19 - 1 - - - I2C_PA2_ANF - Analog filter enable control driving capability - activation bits PA2 - 18 - 1 - - - MEM_MODE - Memory mapping selection - bits - 0 - 2 - - - - - CFGR2 - CFGR2 - SYSCFG configuration register - 2 - 0x18 - 0x20 - read-write - 0x00000000 - - - ETR_SRC_TIM1 - TIM1 ETR source selection - 9 - 2 - - - COMP2_BRK_TIM17 - COMP2 is enable to input of TIM17 break - 8 - 1 - - - COMP1_BRK_TIM17 - COMP1 is enable to input of TIM17 break - 7 - 1 - - - COMP2_BRK_TIM16 - COMP2 is enable to input of TIM16 break - 6 - 1 - - - COMP1_BRK_TIM16 - COMP1 is enable to input of TIM16 break - 5 - 1 - - - COMP2_BRK_TIM1 - COMP2 is enable to input of TIM1 break - 4 - 1 - - - COMP1_BRK_TIM1 - COMP1 is enable to input of TIM1 break - 3 - 1 - - - PVD_LOCK - PVD lock enable bit - 2 - 1 - - - LOCKUP_LOCK - Cortex-M0+ LOCKUP bit enable - bit - 0 - 1 - - - - - CFGR3 - CFGR3 - SYSCFG configuration register - 3 - 0x1C - 0x20 - read-write - 0x00000000 - - - DMA3_MAP - DMA channel3 requeset selection - 16 - 5 - - - DMA2_MAP - DMA channel2 requeset selection - 8 - 5 - - - DMA1_MAP - DMA channel1 requeset selection - 0 - 5 - - - - - - - DMA - Direct memory access - DMA - 0x40020000 - - 0x0 - 0x400 - registers - - - DMA_Channel1 - DMA Channel 1 Interrupt - 9 - - - DMA_Channel2_3 - DMA Channel 2 and Channel 3 Interrupt - 10 - - - - ISR - ISR - DMA interrupt status register - (DMA_ISR) - 0x0 - 0x20 - read-only - 0x00000000 - - - TEIF3 - Channel 3 Transfer Error - flag - 11 - 1 - - - HTIF3 - Channel 3 Half Transfer Complete - flag - 10 - 1 - - - TCIF3 - Channel 3 Transfer Complete - flag - 9 - 1 - - - GIF3 - Channel 3 Global interrupt - flag - 8 - 1 - - - TEIF2 - Channel 2 Transfer Error - flag - 7 - 1 - - - HTIF2 - Channel 2 Half Transfer Complete - flag - 6 - 1 - - - TCIF2 - Channel 2 Transfer Complete - flag - 5 - 1 - - - GIF2 - Channel 2 Global interrupt - flag - 4 - 1 - - - TEIF1 - Channel 1 Transfer Error - flag - 3 - 1 - - - HTIF1 - Channel 1 Half Transfer Complete - flag - 2 - 1 - - - TCIF1 - Channel 1 Transfer Complete - flag - 1 - 1 - - - GIF1 - Channel 1 Global interrupt - flag - 0 - 1 - - - - - IFCR - IFCR - DMA interrupt flag clear register - (DMA_IFCR) - 0x4 - 0x20 - write-only - 0x00000000 - - - CTEIF3 - Channel 3 Transfer Error - clear - 11 - 1 - - - CHTIF3 - Channel 3 Half Transfer - clear - 10 - 1 - - - CTCIF3 - Channel 3 Transfer Complete - clear - 9 - 1 - - - CGIF3 - Channel 3 Global interrupt - clear - 8 - 1 - - - CTEIF2 - Channel 2 Transfer Error - clear - 7 - 1 - - - CHTIF2 - Channel 2 Half Transfer - clear - 6 - 1 - - - CTCIF2 - Channel 2 Transfer Complete - clear - 5 - 1 - - - CGIF2 - Channel 2 Global interrupt - clear - 4 - 1 - - - CTEIF1 - Channel 1 Transfer Error - clear - 3 - 1 - - - CHTIF1 - Channel 1 Half Transfer - clear - 2 - 1 - - - CTCIF1 - Channel 1 Transfer Complete - clear - 1 - 1 - - - CGIF1 - Channel 1 Global interrupt - clear - 0 - 1 - - - - - CCR1 - CCR1 - DMA channel configuration register - (DMA_CCR) - 0x8 - 0x20 - read-write - 0x00000000 - - - MEM2MEM - Memory to memory mode - 14 - 1 - - - PL - Channel Priority level - 12 - 2 - - - MSIZE - Memory size - 10 - 2 - - - PSIZE - Peripheral size - 8 - 2 - - - MINC - Memory increment mode - 7 - 1 - - - PINC - Peripheral increment mode - 6 - 1 - - - CIRC - Circular mode - 5 - 1 - - - DIR - Data transfer direction - 4 - 1 - - - TEIE - Transfer error interrupt - enable - 3 - 1 - - - HTIE - Half Transfer interrupt - enable - 2 - 1 - - - TCIE - Transfer complete interrupt - enable - 1 - 1 - - - EN - Channel enable - 0 - 1 - - - - - CNDTR1 - CNDTR1 - DMA channel 1 number of data - register - 0xC - 0x20 - read-write - 0x00000000 - - - NDT - Number of data to transfer - 0 - 16 - - - - - CPAR1 - CPAR1 - DMA channel 1 peripheral address - register - 0x10 - 0x20 - read-write - 0x00000000 - - - PA - Peripheral address - 0 - 32 - - - - - CMAR1 - CMAR1 - DMA channel 1 memory address - register - 0x14 - 0x20 - read-write - 0x00000000 - - - MA - Memory address - 0 - 32 - - - - - CCR2 - CCR2 - DMA channel configuration register - (DMA_CCR) - 0x1C - 0x20 - read-write - 0x00000000 - - - MEM2MEM - Memory to memory mode - 14 - 1 - - - PL - Channel Priority level - 12 - 2 - - - MSIZE - Memory size - 10 - 2 - - - PSIZE - Peripheral size - 8 - 2 - - - MINC - Memory increment mode - 7 - 1 - - - PINC - Peripheral increment mode - 6 - 1 - - - CIRC - Circular mode - 5 - 1 - - - DIR - Data transfer direction - 4 - 1 - - - TEIE - Transfer error interrupt - enable - 3 - 1 - - - HTIE - Half Transfer interrupt - enable - 2 - 1 - - - TCIE - Transfer complete interrupt - enable - 1 - 1 - - - EN - Channel enable - 0 - 1 - - - - - CNDTR2 - CNDTR2 - DMA channel 2 number of data - register - 0x20 - 0x20 - read-write - 0x00000000 - - - NDT - Number of data to transfer - 0 - 16 - - - - - CPAR2 - CPAR2 - DMA channel 2 peripheral address - register - 0x24 - 0x20 - read-write - 0x00000000 - - - PA - Peripheral address - 0 - 32 - - - - - CMAR2 - CMAR2 - DMA channel 2 memory address - register - 0x28 - 0x20 - read-write - 0x00000000 - - - MA - Memory address - 0 - 32 - - - - - CCR3 - CCR3 - DMA channel configuration register - (DMA_CCR) - 0x30 - 0x20 - read-write - 0x00000000 - - - MEM2MEM - Memory to memory mode - 14 - 1 - - - PL - Channel Priority level - 12 - 2 - - - MSIZE - Memory size - 10 - 2 - - - PSIZE - Peripheral size - 8 - 2 - - - MINC - Memory increment mode - 7 - 1 - - - PINC - Peripheral increment mode - 6 - 1 - - - CIRC - Circular mode - 5 - 1 - - - DIR - Data transfer direction - 4 - 1 - - - TEIE - Transfer error interrupt - enable - 3 - 1 - - - HTIE - Half Transfer interrupt - enable - 2 - 1 - - - TCIE - Transfer complete interrupt - enable - 1 - 1 - - - EN - Channel enable - 0 - 1 - - - - - CNDTR3 - CNDTR3 - DMA channel 3 number of data - register - 0x34 - 0x20 - read-write - 0x00000000 - - - NDT - Number of data to transfer - 0 - 16 - - - - - CPAR3 - CPAR3 - DMA channel 3 peripheral address - register - 0x38 - 0x20 - read-write - 0x00000000 - - - PA - Peripheral address - 0 - 32 - - - - - CMAR3 - CMAR3 - DMA channel 3 memory address - register - 0x3C - 0x20 - read-write - 0x00000000 - - - MA - Memory address - 0 - 32 - - - - - - - FLASH - Flash - Flash - 0x40022000 - - 0x0 - 0x400 - registers - - - FLASH - FLASH global Interrupt - 3 - - - - ACR - ACR - Access control register - 0x0 - 0x20 - read-write - 0x00000600 - - - LATENCY - Latency - 0 - 1 - - - - - KEYR - KEYR - Flash key register - 0x8 - 0x20 - write-only - 0x00000000 - - - KEY - Flash key - 0 - 32 - - - - - OPTKEYR - OPTKEYR - Option byte key register - 0xC - 0x20 - write-only - 0x00000000 - - - OPTKEY - Option byte key - 0 - 32 - - - - - SR - SR - Status register - 0x10 - 0x20 - read-write - 0x00000000 - - - BSY - Busy - 16 - 1 - - - OPTVERR - Option and Engineering bits loading - validity error - 15 - 1 - - - WRPERR - Write protected error - 4 - 1 - - - EOP - End of operation - 0 - 1 - - - - - CR - CR - Flash control register - 0x14 - 0x20 - read-write - 0xC0000000 - - - LOCK - FLASH_CR Lock - 31 - 1 - - - OPTLOCK - Options Lock - 30 - 1 - - - OBL_LAUNCH - Force the option byte - loading - 27 - 1 - - - ERRIE - Error interrupt enable - 25 - 1 - - - EOPIE - End of operation interrupt - enable - 24 - 1 - - - PGTSTRT - Flash main memory program start - 19 - 1 - - - OPTSTRT - Option byte program start - 17 - 1 - - - SER - Sector erase - 11 - 1 - - - MER - Mass erase - 2 - 1 - - - PER - Page erase - 1 - 1 - - - PG - Programming - 0 - 1 - - - - - OPTR - OPTR - Flash option register - 0x20 - 0x20 - read-write - 0x4F55B0AA - - - nBOOT1 - Boot configuration - 15 - 1 - - - NRST_MODE - NRST_MODE - 14 - 1 - - - WWDG_SW - Window watchdog selection - 13 - 1 - - - IDWG_SW - Independent watchdog - selection - 12 - 1 - - - BORF_LEV - These bits contain the VDD supply level - threshold that activates the reset - 9 - 3 - - - BOREN - BOR reset Level - 8 - 1 - - - RDP - Read Protection - 0 - 8 - - - - - SDKR - SDKR - Flash SDK address - register - 0x24 - 0x20 - read-write - 0xFFE0001F - - - SDK_END - SDK area end address - 8 - 5 - - - SDK_STRT - SDK area start address - 0 - 5 - - - - - WRPR - WRPR - Flash WRP address - register - 0x2C - 0x20 - read-write - 0x0000FFFF - - - WRP - WRP address - 0 - 16 - - - - - STCR - STCR - Flash sleep time config - register - 0x90 - 0x20 - read-write - 0x00006400 - - - SLEEP_TIME - FLash sleep time configuration(counter based on HSI_10M) - 8 - 8 - - - SLEEP_EN - FLash sleep enable - 0 - 1 - - - - - TS0 - TS0 - Flash TS0 - register - 0x100 - 0x20 - read-write - 0x000000B4 - - - TS0 - FLash TS0 register - 0 - 8 - - - - - TS1 - TS1 - Flash TS1 - register - 0x104 - 0x20 - read-write - 0x000001B0 - - - TS1 - FLash TS1 register - 0 - 9 - - - - - TS2P - TS2P - Flash TS2P - register - 0x108 - 0x20 - read-write - 0x000000B4 - - - TS2P - FLash TS2P register - 0 - 8 - - - - - TPS3 - TPS3 - Flash TPS3 - register - 0x10C - 0x20 - read-write - 0x000006C0 - - - TPS3 - FLash TPS3 register - 0 - 11 - - - - - TS3 - TS3 - Flash TS3 - register - 0x110 - 0x20 - read-write - 0x000000B4 - - - TS3 - FLash TS3 register - 0 - 8 - - - - - PERTPE - PERTPE - Flash PERTPE - register - 0x114 - 0x20 - read-write - 0x0000EA60 - - - PERTPE - FLash PERTPE register - 0 - 17 - - - - - SMERTPE - SMERTPE - Flash SMERTPE - register - 0x118 - 0x20 - read-write - 0x0000FD20 - - - SMERTPE - FLash SMERTPE register - 0 - 17 - - - - - PRGTPE - PRGTPE - Flash PRGTPE - register - 0x11C - 0x20 - read-write - 0x00008CA0 - - - PRGTPE - FLash PRGTPE register - 0 - 16 - - - - - PRETPE - PRETPE - Flash PRETPE - register - 0x120 - 0x20 - read-write - 0x000012C0 - - - PRETPE - FLash PRETPE register - 0 - 13 - - - - - - - CRC - CRC calculation unit - CRC - 0x40023000 - - 0x0 - 0x400 - registers - - - - DR - DR - Data register - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - DR - Data Register - 0 - 32 - - - - - IDR - IDR - Independent Data register - 0x4 - 0x20 - read-write - 0x00000000 - - - IDR - Independent Data register - 0 - 8 - - - - - CR - CR - Control register - 0x8 - 0x20 - write-only - 0x00000000 - - - RESET - Reset bit - 0 - 1 - - - - - - - SPI1 - Serial peripheral interface - SPI - 0x40013000 - - 0x0 - 0x400 - registers - - - SPI1 - SPI1 global Interrupt - 25 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - BIDIMODE - Bidirectional data mode - enable - 15 - 1 - - - BIDIOE - Output enable in bidirectional - mode - 14 - 1 - - - RXONLY - Receive only - 10 - 1 - - - SSM - Software slave management - 9 - 1 - - - SSI - Internal slave selection - 8 - 1 - - - LSBFIRST - Frame format - 7 - 1 - - - SPE - SPI enable - 6 - 1 - - - BR - Baud rate control - 3 - 3 - - - MSTR - Master selection - 2 - 1 - - - CPOL - Clock polarity - 1 - 1 - - - CPHA - Clock phase - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - SLVFM - Slave fast mode enable - 15 - 1 - - - LDMA_TX - Last DAM Transmit(TX) - 14 - 1 - - - LDMA_RX - Last DAM Transmit(RX) - 13 - 1 - - - FRXTH - FIFO reception threshold - 12 - 1 - - - DS - Data length - - 11 - 1 - - - TXEIE - Tx buffer empty interrupt - enable - 7 - 1 - - - RXNEIE - RX buffer not empty interrupt - enable - 6 - 1 - - - ERRIE - Error interrupt enable - 5 - 1 - - - SSOE - SS output enable - 2 - 1 - - - TXDMAEN - Tx buffer DMA enable - 1 - 1 - - - RXDMAEN - Rx buffer DMA enable - 0 - 1 - - - - - SR - SR - status register - 0x8 - 0x20 - 0x0002 - - - FTLVL - FIFO transmission level - 11 - 2 - read-only - - - FRLVL - FIFO reception level - 9 - 2 - read-only - - - BSY - Busy flag - 7 - 1 - read-only - - - OVR - Overrun flag - 6 - 1 - read-only - - - MODF - Mode fault - 5 - 1 - read-only - - - TXE - Transmit buffer empty - 1 - 1 - read-only - - - RXNE - Receive buffer not empty - 0 - 1 - read-only - - - - - DR - DR - data register - 0xC - 0x20 - read-write - 0x0000 - - - DR - Data register - 0 - 16 - - - - - - - I2C - Inter integrated circuit - I2C - 0x40005400 - - 0x0 - 0x400 - registers - - - I2C1 - I2C1 global Interrupt - 23 - - - - CR1 - CR1 - Control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - SWRST - Software reset - 15 - 1 - - - PEC - Packet error checking - 12 - 1 - - - POS - Acknowledge/PEC Position (for data - reception) - 11 - 1 - - - ACK - Acknowledge enable - 10 - 1 - - - STOP - Stop generation - 9 - 1 - - - START - Start generation - 8 - 1 - - - NOSTRETCH - Clock stretching disable (Slave - mode) - 7 - 1 - - - ENGC - General call enable - 6 - 1 - - - ENPEC - PEC enable - 5 - 1 - - - PE - Peripheral enable - 0 - 1 - - - - - CR2 - CR2 - Control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - LAST - DMA last transfer - 12 - 1 - - - DMAEN - DMA requests enable - 11 - 1 - - - ITBUFEN - Buffer interrupt enable - 10 - 1 - - - ITEVTEN - Event interrupt enable - 9 - 1 - - - ITERREN - Error interrupt enable - 8 - 1 - - - FREQ - Peripheral clock frequency - 0 - 6 - - - - - OAR1 - OAR1 - Own address register 1 - 0x8 - 0x20 - read-write - 0x0000 - - - ADD - Interface address - 1 - 7 - - - - - DR - DR - Data register - 0x10 - 0x20 - read-write - 0x0000 - - - DR - 8-bit data register - 0 - 8 - - - - - SR1 - SR1 - Status register 1 - 0x14 - 0x20 - 0x0000 - - - PECERR - PEC Error in reception - 12 - 1 - read-write - - - OVR - Overrun/Underrun - 11 - 1 - read-write - - - AF - Acknowledge failure - 10 - 1 - read-write - - - ARLO - Arbitration lost (master - mode) - 9 - 1 - read-write - - - BERR - Bus error - 8 - 1 - read-write - - - TxE - Data register empty - (transmitters) - 7 - 1 - read-only - - - RxNE - Data register not empty - (receivers) - 6 - 1 - read-only - - - STOPF - Stop detection (slave - mode) - 4 - 1 - read-only - - - BTF - Byte transfer finished - 2 - 1 - read-only - - - ADDR - Address sent (master mode)/matched - (slave mode) - 1 - 1 - read-only - - - SB - Start bit (Master mode) - 0 - 1 - read-only - - - - - SR2 - SR2 - Status register 2 - 0x18 - 0x20 - read-only - 0x0000 - - - PEC - acket error checking - register - 8 - 8 - - - DUALF - Dual flag (Slave mode) - 7 - 1 - - - GENCALL - General call address (Slave - mode) - 4 - 1 - - - TRA - Transmitter/receiver - 2 - 1 - - - BUSY - Bus busy - 1 - 1 - - - MSL - Master/slave - 0 - 1 - - - - - CCR - CCR - Clock control register - 0x1C - 0x20 - read-write - 0x0000 - - - F_S - I2C master mode selection - 15 - 1 - - - DUTY - Fast mode duty cycle - 14 - 1 - - - CCR - Clock control register in Fast/Standard - mode (Master mode) - 0 - 12 - - - - - TRISE - TRISE - TRISE register - 0x20 - 0x20 - read-write - 0x0002 - - - TRISE - Maximum rise time in Fast/Standard mode - (Master mode) - 0 - 6 - - - - - - - DBGMCU - Debug support - DBGMCU - 0x40015800 - - 0x0 - 0x400 - registers - - - - IDCODE - IDCODE - MCU Device ID Code Register - 0x0 - 0x20 - read-only - 0x0 - - - - - - CR - CR - Debug MCU Configuration - Register - 0x4 - 0x20 - read-write - 0x0 - - - DBG_STOP - Debug Stop Mode - 1 - 1 - - - - - APB_FZ1 - APB_FZ1 - APB Freeze Register1 - 0x8 - 0x20 - read-write - 0x0 - - - DBG_TIMER3_STOP - Debug Timer 3 stopped when Core is - halted - 1 - 1 - - - DBG_RTC_STOP - Debug RTC stopped when Core is - halted - 10 - 1 - - - DBG_WWDG_STOP - Debug Window Wachdog stopped when Core - is halted - 11 - 1 - - - DBG_IWDG_STOP - Debug Independent Wachdog stopped when - Core is halted - 12 - 1 - - - DBG_LPTIM_STOP - Debug LPTIM stopped when Core is - halted - 31 - 1 - - - - - APB_FZ2 - APB_FZ2 - APB Freeze Register2 - 0xC - 0x20 - read-write - 0x0 - - - DBG_TIMER1_STOP - Debug Timer 1 stopped when Core is - halted - 11 - 1 - - - DBG_TIMER14_STOP - Debug Timer 14 stopped when Core is - halted - 15 - 1 - - - DBG_TIMER16_STOP - Debug Timer 16 stopped when Core is - halted - 17 - 1 - - - DBG_TIMER17_STOP - Debug Timer 17 stopped when Core is - halted - 18 - 1 - - - - - - - + + + + Puya + Puya + PY32F0xx_DFP + + PY32F0 + 1.0.0 + Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. + + + + CM0+ + r0p1 + little + false + false + 4 + false + + + + 8 + 32 + 32 + read-write + 0x00000000 + 0xFFFFFFFF + + + ADC + Analog to Digital Converter + ADC + 0x40012400 + + 0x0 + 0x400 + registers + + + ADC_COMP + ADC and COMP Interrupt through EXTI Lines 17 and 18 + 12 + + + + ISR + ISR + ADC interrupt and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + AWD + ADC analog watchdog flag + 7 + 1 + + + OVR + ADC group regular overrun + flag + 4 + 1 + + + EOSEQ + ADC group regular end of sequence + conversions flag + 3 + 1 + + + EOC + ADC group regular end of unitary + conversion flag + 2 + 1 + + + EOSMP + ADC group regular end of sampling + flag + 1 + 1 + + + + + IER + IER + ADC interrupt enable register + 0x4 + 0x20 + read-write + 0x00000000 + + + AWDIE + ADC analog watchdog + interrupt + 7 + 1 + + + OVRIE + ADC group regular overrun + interrupt + 4 + 1 + + + EOSEQIE + ADC group regular end of sequence + conversions interrupt + 3 + 1 + + + EOCIE + ADC group regular end of unitary + conversion interrupt + 2 + 1 + + + EOSMPIE + ADC group regular end of sampling + interrupt + 1 + 1 + + + + + CR + CR + ADC control register + 0x8 + 0x20 + read-write + 0x00000000 + + + ADCAL + ADC group regular conversion + calibration + 31 + 1 + + + ADSTP + ADC group regular conversion + stop + 4 + 1 + + + ADSTART + ADC group regular conversion + start + 2 + 1 + + + ADEN + ADC enable + 0 + 1 + + + + + CFGR1 + CFGR1 + ADC configuration register 1 + 0xC + 0x20 + read-write + 0x00000000 + + + AWDCH + ADC analog watchdog monitored channel + selection + 26 + 4 + + + AWDEN + ADC analog watchdog enable on scope + ADC group regular + 23 + 1 + + + AWDSGL + ADC analog watchdog monitoring a + single channel or all channels + 22 + 1 + + + DISCEN + ADC group regular sequencer + discontinuous mode + 16 + 1 + + + WAIT + Wait conversion mode + 14 + 1 + + + CONT + ADC group regular continuous conversion + mode + 13 + 1 + + + OVRMOD + ADC group regular overrun + configuration + 12 + 1 + + + EXTEN + ADC group regular external trigger + polarity + 10 + 2 + + + EXTSEL + ADC group regular external trigger + source + 6 + 3 + + + ALIGN + ADC data alignement + 5 + 1 + + + RESSEL + ADC data resolution + 3 + 2 + + + SCANDIR + Scan sequence direction + 2 + 1 + + + DMACFG + ADC DMA transfer + configuration + 1 + 1 + + + DMAEN + ADC DMA transfer enable + 0 + 1 + + + + + CFGR2 + CFGR2 + ADC configuration register 2 + 0x10 + 0x20 + read-write + 0x00000000 + + + CKMODE + ADC clock mode + 28 + 4 + + + + + SMPR + SMPR + ADC sampling time register + 0x14 + 0x20 + read-write + 0x00000000 + + + SMP + Sampling time selection + 0 + 3 + + + + + TR + TR + ADC analog watchdog 1 threshold register + 0x20 + 0x20 + read-write + 0x0FFF0000 + + + HT + ADC analog watchdog threshold + high + 16 + 12 + + + LT + ADC analog watchdog threshold + low + 0 + 12 + + + + + CHSELR + CHSELR + ADC group regular sequencer register + 0x28 + 0x20 + read-write + 0x0FFF0000 + + + CHSEL12 + Channel-12 selection + 12 + 1 + + + CHSEL11 + Channel-11 selection + 11 + 1 + + + CHSEL9 + Channel-9 selection + 9 + 1 + + + CHSEL8 + Channel-8 selection + 8 + 1 + + + CHSEL7 + Channel-7 selection + 7 + 1 + + + CHSEL6 + Channel-6 selection + 6 + 1 + + + CHSEL5 + Channel-5 selection + 5 + 1 + + + CHSEL4 + Channel-4 selection + 4 + 1 + + + CHSEL3 + Channel-3 selection + 3 + 1 + + + CHSEL2 + Channel-2 selection + 2 + 1 + + + CHSEL1 + Channel-1 selection + 1 + 1 + + + CHSEL0 + Channel-0 selection + 0 + 1 + + + + + DR + DR + ADC group regular data register + 0x40 + 0x20 + read-only + 0x00000000 + + + DATA + ADC group regular conversion + data + 0 + 16 + + + + + CCSR + CCSR + ADC calibration configuration and status register + 0x44 + 0x20 + read-write + 0x00000000 + + + CALON + Calibration flag + 31 + 1 + read-only + + + CALFAIL + Calibration fail flag + 30 + 1 + + + CALSET + Calibration factor selection + 15 + 1 + + + CALSMP + Calibration sample time selection + 12 + 2 + + + CALSEL + Calibration contents selection + 11 + 1 + + + + + CALRR1 + CALRR1 + ADC calibration result register 1 + 0x48 + 0x20 + read-only + 0x00000000 + + + CALBOUT + offset result + 16 + 7 + + + CALC5OUT + C5 result + 8 + 8 + + + CALC4OUT + C4 result + 0 + 8 + + + + + CALRR2 + CALRR2 + ADC calibration result register 2 + 0x4C + 0x20 + read-only + 0x00000000 + + + CALC3OUT + C3 result + 24 + 8 + + + CALC2OUT + C2 result + 16 + 8 + + + CALC1OUT + C1 result + 8 + 8 + + + CALC0OUT + C0 result + 0 + 8 + + + + + CALFIR1 + CALFIR1 + ADC calibration factor input register 1 + 0x50 + 0x20 + read-write + 0x00000000 + + + CALBIO + Calibration offset factor input + 16 + 7 + + + CALC5IO + Calibration C5 factor input + 8 + 8 + + + CALC4IO + Calibration C4 factor input + 0 + 8 + + + + + CALFIR2 + CALFIR2 + ADC calibration factor input register 2 + 0x54 + 0x20 + read-write + 0x00000000 + + + CALC3IO + Calibration C3 factor input + 24 + 8 + + + CALC2IO + Calibration C2 factor input + 16 + 8 + + + CALC1IO + Calibration C1 factor input + 8 + 8 + + + CALC0IO + Calibration C0 factor input + 0 + 8 + + + + + CCR + CCR + ADC common configuration register + 0x308 + 0x20 + read-write + 0x00000000 + + + TSEN + Temperature sensor enable + 23 + 1 + + + VREFEN + VREFINT enable + 22 + 1 + + + + + + + COMP1 + Comparator + COMP + 0x40010200 + + 0x0 + 0x10 + registers + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + LOCK + CSR register lock + 31 + 1 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + Comparator power mode + selector + 18 + 2 + + + HYST + Comparator hysteresis enable + selector + 16 + 1 + + + POLARITY + Comparator polarity + selector + 15 + 1 + + + WINMODE + Comparator non-inverting input + selector for window mode + 11 + 1 + + + INPSEL + Comparator signal selector for + non-inverting input + 8 + 2 + + + INMSEL + Comparator signal selector for + inverting input INM + 4 + 4 + + + SCALER_EN + SCALER enable bit + 1 + 1 + + + COMP_EN + COMP enable bit + 0 + 1 + + + + + FR + FR + Comparator Filter + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT + Comparator filter and counter + 16 + 16 + + + FLTEN + Filter enable bit + 0 + 1 + + + + + + + COMP2 + Comparator + COMP + 0x40010210 + + 0x0 + 0x10 + registers + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + LOCK + CSR register lock + 31 + 1 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + Comparator power mode + selector + 18 + 2 + + + POLARITY + Comparator polarity + selector + 15 + 1 + + + WINMODE + Comparator non-inverting input + selector for window mode + 11 + 1 + + + INPSEL + Comparator signal selector for + non-inverting input + 8 + 2 + + + INMSEL + Comparator signal selector for + inverting input INM + 4 + 4 + + + COMP_EN + COMP enable bit + 0 + 1 + + + + + FR + FR + Comparator Filter + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT + Comparator filter and counter + 16 + 16 + + + FLTEN + Filter enable bit + 0 + 1 + + + + + + + RCC + Reset and clock control + RCC + 0x40021000 + + 0x0 + 0x400 + registers + + + RCC + RCC global Interrupt + 4 + + + + CR + CR + Clock control register + 0x0 + 0x20 + read-write + 0x00000100 + + + CSSON + Clock security system + enable + 19 + 1 + + + HSEBYP + HSE crystal oscillator + bypass + 18 + 1 + + + HSERDY + HSE clock ready flag + 17 + 1 + + + HSEON + HSE clock enable + 16 + 1 + + + HSIDIV + HSI16 clock division + factor + 11 + 3 + + + HSIRDY + HSI16 clock ready flag + 10 + 1 + + + HSIKERON + HSI16 always enable for peripheral + kernels + 9 + 1 + + + HSION + HSI16 clock enable + 8 + 1 + + + + + ICSCR + ICSCR + Internal clock sources calibration + register + 0x4 + 0x20 + 0x10000000 + + + LSI_STARTUP + LSI startup time + 26 + 2 + read-write + + + LSI_TRIM + LSI clock trimming + 16 + 9 + read-write + + + HSI_FS + HSI frequency selection + 13 + 3 + read-write + + + HSI_TRIM + HSI clock trimming + 0 + 13 + read-write + + + + + CFGR + CFGR + Clock configuration register + 0x8 + 0x20 + 0x00000000 + + + MCOPRE + Microcontroller clock output + prescaler + 28 + 3 + read-write + + + MCOSEL + Microcontroller clock + output + 24 + 3 + read-write + + + PPRE + APB prescaler + 12 + 3 + read-write + + + HPRE + AHB prescaler + 8 + 4 + read-write + + + SWS + System clock switch status + 3 + 3 + read-only + + + SW + System clock switch + 0 + 3 + read-write + + + + + ECSCR + ECSCR + External clock source control register + 0x10 + 0x20 + 0x00000000 + + + HSE_FREQ + HSE clock freqency selection + 2 + 2 + read-write + + + + + CIER + CIER + Clock interrupt enable + register + 0x18 + 0x20 + read-write + 0x00000000 + + + HSERDYIE + HSE ready interrupt enable + 4 + 1 + + + HSIRDYIE + HSI ready interrupt enable + 3 + 1 + + + LSIRDYIE + LSI ready interrupt enable + 0 + 1 + + + + + CIFR + CIFR + Clock interrupt flag register + 0x1C + 0x20 + read-only + 0x00000000 + + + CSSF + HSE clock secure system interrupt flag + 8 + 1 + + + HSERDYF + HSE ready interrupt flag + 4 + 1 + + + HSIRDYF + HSI ready interrupt flag + 3 + 1 + + + LSIRDYF + LSI ready interrupt flag + 0 + 1 + + + + + CICR + CICR + Clock interrupt clear register + 0x20 + 0x20 + write-only + 0x00000000 + + + CSSC + clock secure system interrupt flag clear + 8 + 1 + + + HSERDYC + HSE ready interrupt clear + 4 + 1 + + + HSIRDYC + HSI ready interrupt clear + 3 + 1 + + + LSIRDYC + LSI ready interrupt clear + 0 + 1 + + + + + IOPRSTR + IOPRSTR + GPIO reset register + 0x24 + 0x20 + read-write + 0x00000000 + + + GPIOFRST + I/O port F reset + 5 + 1 + + + GPIOBRST + I/O port B reset + 1 + 1 + + + GPIOARST + I/O port A reset + 0 + 1 + + + + + AHBRSTR + AHBRSTR + AHB peripheral reset register + 0x28 + 0x20 + read-write + 0x00000000 + + + CRCRST + CRC reset + 12 + 1 + + + DMARST + DMA reset + 0 + 1 + + + + + APBRSTR1 + APBRSTR1 + APB peripheral reset register + 1 + 0x2C + 0x20 + read-write + 0x00000000 + + + LPTIMRST + Low Power Timer reset + 31 + 1 + + + PWRRST + Power interface reset + 28 + 1 + + + DBGRST + Debug support reset + 27 + 1 + + + I2CRST + I2C reset + 21 + 1 + + + USART2RST + USART2 reset + 17 + 1 + + + TIM3RST + TIM3 timer reset + 1 + 1 + + + + + APBRSTR2 + APBRSTR2 + APB peripheral reset register + 2 + 0x30 + 0x20 + read-write + 0x00000000 + + + COMP2RST + COMP2 reset + 22 + 1 + + + COMP1RST + COMP1 reset + 21 + 1 + + + ADCRST + ADC reset + 20 + 1 + + + TIM17RST + TIM17 timer reset + 18 + 1 + + + TIM16RST + TIM16 timer reset + 17 + 1 + + + TIM14RST + TIM14 timer reset + 15 + 1 + + + USART1RST + USART1 reset + 14 + 1 + + + SPI1RST + SPI1 reset + 12 + 1 + + + TIM1RST + TIM1 timer reset + 11 + 1 + + + SYSCFGRST + SYSCFG and COMP + reset + 0 + 1 + + + + + IOPENR + IOPENR + GPIO clock enable register + 0x34 + 0x20 + read-write + 0x00000000 + + + GPIOFEN + I/O port F clock enable + 5 + 1 + + + GPIOBEN + I/O port B clock enable + 1 + 1 + + + GPIOAEN + I/O port A clock enable + 0 + 1 + + + + + AHBENR + AHBENR + AHB peripheral clock enable + register + 0x38 + 0x20 + read-write + 0x00000000 + + + CRCEN + CRC clock enable + 12 + 1 + + + SRAMEN + SRAM memory interface clock + enable + 9 + 1 + + + FLASHEN + Flash memory interface clock + enable + 8 + 1 + + + DMAEN + DMA clock enable + 0 + 1 + + + + + APBENR1 + APBENR1 + APB peripheral clock enable register + 1 + 0x3C + 0x20 + read-write + 0x00000000 + + + LPTIMEN + LPTIM clock enable + 31 + 1 + + + PWREN + Power interface clock + enable + 28 + 1 + + + DBGEN + Debug support clock enable + 27 + 1 + + + I2CEN + I2C clock enable + 21 + 1 + + + USART2EN + USART2 clock enable + 17 + 1 + + + WWDGEN + WWDG clock enable + 11 + 1 + + + RTCAPBEN + RTC APB clock enable + 10 + 1 + + + TIM3EN + TIM3 timer clock enable + 1 + 1 + + + + + APBENR2 + APBENR2 + APB peripheral clock enable register + 2 + 0x40 + 0x20 + read-write + 0x00000000 + + + COMP2EN + COMP2 clock enable + 22 + 1 + + + COMP1EN + COMP1 clock enable + 21 + 1 + + + ADCEN + ADC clock enable + 20 + 1 + + + TIM17EN + TIM16 timer clock enable + 18 + 1 + + + TIM16EN + TIM16 timer clock enable + 17 + 1 + + + TIM14EN + TIM14 timer clock enable + 15 + 1 + + + USART1EN + USART1 clock enable + 14 + 1 + + + SPI1EN + SPI1 clock enable + 12 + 1 + + + TIM1EN + TIM1 timer clock enable + 11 + 1 + + + SYSCFGEN + SYSCFG, COMP and VREFBUF clock + enable + 0 + 1 + + + + + CCIPR + CCIPR + Peripherals independent clock configuration + register + 0x54 + 0x20 + read-write + 0x00000000 + + + LPTIM1SEL + LPTIM1 clock source + selection + 18 + 2 + + + COMP2SEL + COMP2 clock source + selection + 9 + 1 + + + COMP1SEL + COMP1 clock source + selection + 8 + 1 + + + PVDSEL + PVD detect clock source + selection + 7 + 1 + + + + + BDCR + BDCR + RTC domain control register + 0x5C + 0x20 + read-write + 0x00000000 + + + LSCOSEL + Low-speed clock output + selection + 25 + 1 + + + LSCOEN + Low-speed clock output (LSCO) + enable + 24 + 1 + + + BDRST + RTC domain software reset + 16 + 1 + + + RTCEN + RTC clock source enable + 15 + 1 + + + RTCSEL + RTC clock source selection + 8 + 2 + + + + + CSR + CSR + Control/status register + 0x60 + 0x20 + read-write + 0x00000000 + + + WWDGRSTF + Window watchdog reset flag + 30 + 1 + + + IWDGRSTF + Independent window watchdog reset + flag + 29 + 1 + + + SFTRSTF + Software reset flag + 28 + 1 + + + PWRRSTF + BOR or POR/PDR flag + 27 + 1 + + + PINRSTF + Pin reset flag + 26 + 1 + + + OBLRSTF + Option byte loader reset + flag + 25 + 1 + + + RMVF + Remove reset flags + 23 + 1 + + + LSIRDY + LSI oscillator ready + 1 + 1 + + + LSION + LSI oscillator enable + 0 + 1 + + + + + + + PWR + Power control + PWR + 0x40007000 + + 0x0 + 0x400 + registers + + + + CR1 + CR1 + Power control register 1 + 0x0 + 0x20 + read-write + 0x00030000 + + + HSION_CTRL + HSI open time control + 19 + 1 + + + SRAM_RETV + SRAM retention voltage control + 16 + 3 + + + LPR + Low-power run + 14 + 1 + + + FLS_SLPTIME + Flash wait time after wakeup from the stop mode + 12 + 2 + + + MRRDY_TIME + Time selection wakeup from LP to VR + 10 + 2 + + + VOS + Voltage scaling range + selection + 9 + 1 + + + DBP + Disable backup domain write + protection + 8 + 1 + + + BIAS_CR_SEL + MR Bias current selection + 4 + 1 + + + BIAS_CR + MR Bias current + 0 + 4 + + + + + CR2 + CR2 + Power control register 2 + 0x4 + 0x20 + read-write + 0x00000500 + + + FLT_TIME + Digital filter time configuration + 9 + 3 + + + FLTEN + Digital filter enable + 8 + 1 + + + PVDT + Power voltage detector threshold + selection + 4 + 3 + + + SRCSEL + Power voltage detector volatage + selection + 2 + 1 + + + PVDE + Power voltage detector + enable + 0 + 1 + + + + + SR + SR + Power status register + 0x14 + 0x20 + read-only + 0x00000000 + + + PVDO + PVD output + 11 + 1 + + + + + + + GPIOA + General-purpose I/Os + GPIO + 0x50000000 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xEBFFFFFF + + + MODE15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + MODE14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + MODE13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + MODE12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + MODE11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + MODE10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + MODE9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT15 + Port x configuration bits (y = + 0..15) + 15 + 1 + + + OT14 + Port x configuration bits (y = + 0..15) + 14 + 1 + + + OT13 + Port x configuration bits (y = + 0..15) + 13 + 1 + + + OT12 + Port x configuration bits (y = + 0..15) + 12 + 1 + + + OT11 + Port x configuration bits (y = + 0..15) + 11 + 1 + + + OT10 + Port x configuration bits (y = + 0..15) + 10 + 1 + + + OT9 + Port x configuration bits (y = + 0..15) + 9 + 1 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x0C000000 + + + OSPEED15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + OSPEED14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + OSPEED13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + OSPEED12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + OSPEED11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + OSPEED10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + OSPEED9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x24000000 + + + PUPD15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + PUPD14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + PUPD13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + PUPD12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + PUPD11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + PUPD10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + PUPD9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID15 + Port input data (y = + 0..15) + 15 + 1 + + + ID14 + Port input data (y = + 0..15) + 14 + 1 + + + ID13 + Port input data (y = + 0..15) + 13 + 1 + + + ID12 + Port input data (y = + 0..15) + 12 + 1 + + + ID11 + Port input data (y = + 0..15) + 11 + 1 + + + ID10 + Port input data (y = + 0..15) + 10 + 1 + + + ID9 + Port input data (y = + 0..15) + 9 + 1 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD15 + Port output data (y = + 0..15) + 15 + 1 + + + OD14 + Port output data (y = + 0..15) + 14 + 1 + + + OD13 + Port output data (y = + 0..15) + 13 + 1 + + + OD12 + Port output data (y = + 0..15) + 12 + 1 + + + OD11 + Port output data (y = + 0..15) + 11 + 1 + + + OD10 + Port output data (y = + 0..15) + 10 + 1 + + + OD9 + Port output data (y = + 0..15) + 9 + 1 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR15 + Port x reset bit y (y = + 0..15) + 31 + 1 + + + BR14 + Port x reset bit y (y = + 0..15) + 30 + 1 + + + BR13 + Port x reset bit y (y = + 0..15) + 29 + 1 + + + BR12 + Port x reset bit y (y = + 0..15) + 28 + 1 + + + BR11 + Port x reset bit y (y = + 0..15) + 27 + 1 + + + BR10 + Port x reset bit y (y = + 0..15) + 26 + 1 + + + BR9 + Port x reset bit y (y = + 0..15) + 25 + 1 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS15 + Port x set bit y (y= + 0..15) + 15 + 1 + + + BS14 + Port x set bit y (y= + 0..15) + 14 + 1 + + + BS13 + Port x set bit y (y= + 0..15) + 13 + 1 + + + BS12 + Port x set bit y (y= + 0..15) + 12 + 1 + + + BS11 + Port x set bit y (y= + 0..15) + 11 + 1 + + + BS10 + Port x set bit y (y= + 0..15) + 10 + 1 + + + BS9 + Port x set bit y (y= + 0..15) + 9 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK15 + Port x lock bit y (y= + 0..15) + 15 + 1 + + + LCK14 + Port x lock bit y (y= + 0..15) + 14 + 1 + + + LCK13 + Port x lock bit y (y= + 0..15) + 13 + 1 + + + LCK12 + Port x lock bit y (y= + 0..15) + 12 + 1 + + + LCK11 + Port x lock bit y (y= + 0..15) + 11 + 1 + + + LCK10 + Port x lock bit y (y= + 0..15) + 10 + 1 + + + LCK9 + Port x lock bit y (y= + 0..15) + 9 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR15 + Port Reset bit + 15 + 1 + + + BR14 + Port Reset bit + 14 + 1 + + + BR13 + Port Reset bit + 13 + 1 + + + BR12 + Port Reset bit + 12 + 1 + + + BR11 + Port Reset bit + 11 + 1 + + + BR10 + Port Reset bit + 10 + 1 + + + BR9 + Port Reset bit + 9 + 1 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOB + General-purpose I/Os + GPIO + 0x50000400 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x00000000 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x00000000 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOF + 0x50001400 + + + EXTI + External interrupt/event + controller + EXTI + 0x40021800 + + 0x0 + 0x400 + registers + + + PVD + PVD Interrupt through EXTI Lines 16 + 1 + + + EXTI0_1 + EXTI Line 0 and 1 Interrupt + 5 + + + EXTI2_3 + EXTI Line 2 and 3 Interrupt + 6 + + + EXTI4_15 + EXTI Line 4 to 15 Interrupt + 7 + + + + RTSR + RTSR + EXTI rising trigger selection + register + 0x0 + 0x20 + read-write + 0x00000000 + + + RT18 + Rising trigger event configuration bit + of Configurable Event input + 18 + 1 + + + RT17 + Rising trigger event configuration bit + of Configurable Event input + 17 + 1 + + + RT16 + Rising trigger event configuration bit + of Configurable Event input + 16 + 1 + + + RT15 + Rising trigger event configuration bit + of Configurable Event input + 15 + 1 + + + RT14 + Rising trigger event configuration bit + of Configurable Event input + 14 + 1 + + + RT13 + Rising trigger event configuration bit + of Configurable Event input + 13 + 1 + + + RT12 + Rising trigger event configuration bit + of Configurable Event input + 12 + 1 + + + RT11 + Rising trigger event configuration bit + of Configurable Event input + 11 + 1 + + + RT10 + Rising trigger event configuration bit + of Configurable Event input + 10 + 1 + + + RT9 + Rising trigger event configuration bit + of Configurable Event input + 9 + 1 + + + RT8 + Rising trigger event configuration bit + of Configurable Event input + 8 + 1 + + + RT7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + RT6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + RT5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + RT4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + RT3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + RT2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + RT1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + RT0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + FTSR + FTSR + EXTI falling trigger selection + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FT18 + Falling trigger event configuration bit + of Configurable Event input + 18 + 1 + + + FT17 + Falling trigger event configuration bit + of Configurable Event input + 17 + 1 + + + FT16 + Falling trigger event configuration bit + of Configurable Event input + 16 + 1 + + + FT15 + Falling trigger event configuration bit + of Configurable Event input + 15 + 1 + + + FT14 + Falling trigger event configuration bit + of Configurable Event input + 14 + 1 + + + FT13 + Falling trigger event configuration bit + of Configurable Event input + 13 + 1 + + + FT12 + Falling trigger event configuration bit + of Configurable Event input + 12 + 1 + + + FT11 + Falling trigger event configuration bit + of Configurable Event input + 11 + 1 + + + FT10 + Falling trigger event configuration bit + of Configurable Event input + 10 + 1 + + + FT9 + Falling trigger event configuration bit + of Configurable Event input + 9 + 1 + + + FT8 + Falling trigger event configuration bit + of Configurable Event input + 8 + 1 + + + FT7 + Falling trigger event configuration bit + of Configurable Event input + 7 + 1 + + + FT6 + Falling trigger event configuration bit + of Configurable Event input + 6 + 1 + + + FT5 + Falling trigger event configuration bit + of Configurable Event input + 5 + 1 + + + FT4 + Falling trigger event configuration bit + of Configurable Event input + 4 + 1 + + + FT3 + Falling trigger event configuration bit + of Configurable Event input + 3 + 1 + + + FT2 + Falling trigger event configuration bit + of Configurable Event input + 2 + 1 + + + FT1 + Falling trigger event configuration bit + of Configurable Event input + 1 + 1 + + + FT0 + Falling trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + SWIER + SWIER + EXTI software interrupt event + register + 0x8 + 0x20 + read-write + 0x00000000 + + + SWI18 + Rising trigger event configuration bit + of Configurable Event input + 18 + 1 + + + SWI17 + Rising trigger event configuration bit + of Configurable Event input + 17 + 1 + + + SWI16 + Rising trigger event configuration bit + of Configurable Event input + 16 + 1 + + + SWI15 + Rising trigger event configuration bit + of Configurable Event input + 15 + 1 + + + SWI14 + Rising trigger event configuration bit + of Configurable Event input + 14 + 1 + + + SWI13 + Rising trigger event configuration bit + of Configurable Event input + 13 + 1 + + + SWI12 + Rising trigger event configuration bit + of Configurable Event input + 12 + 1 + + + SWI11 + Rising trigger event configuration bit + of Configurable Event input + 11 + 1 + + + SWI10 + Rising trigger event configuration bit + of Configurable Event input + 10 + 1 + + + SWI9 + Rising trigger event configuration bit + of Configurable Event input + 9 + 1 + + + SWI8 + Rising trigger event configuration bit + of Configurable Event input + 8 + 1 + + + SWI7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + SWI6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + SWI5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + SWI4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + SWI3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + SWI2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + SWI1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + SWI0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + PR + PR + EXTI pending + register + 0xC + 0x20 + read-write + 0x00000000 + + + PR18 + configurable event inputs x rising edge + Pending bit. + 18 + 1 + + + PR17 + configurable event inputs x rising edge + Pending bit. + 17 + 1 + + + PR16 + configurable event inputs x rising edge + Pending bit. + 16 + 1 + + + PR15 + configurable event inputs x rising edge + Pending bit. + 15 + 1 + + + PR14 + configurable event inputs x rising edge + Pending bit. + 14 + 1 + + + PR13 + configurable event inputs x rising edge + Pending bit + 13 + 1 + + + PR12 + configurable event inputs x rising edge + Pending bit. + 12 + 1 + + + PR11 + configurable event inputs x rising edge + Pending bit. + 11 + 1 + + + PR10 + configurable event inputs x rising edge + Pending bit. + 10 + 1 + + + PR9 + configurable event inputs x rising edge + Pending bit. + 9 + 1 + + + PR8 + configurable event inputs x rising edge + Pending bit. + 8 + 1 + + + PR7 + configurable event inputs x rising edge + Pending bit. + 7 + 1 + + + PR6 + configurable event inputs x rising edge + Pending bit. + 6 + 1 + + + PR5 + configurable event inputs x rising edge + Pending bit. + 5 + 1 + + + PR4 + configurable event inputs x rising edge + Pending bit. + 4 + 1 + + + PR3 + configurable event inputs x rising edge + Pending bit. + 3 + 1 + + + PR2 + configurable event inputs x rising edge + Pending bit. + 2 + 1 + + + PR1 + configurable event inputs x rising edge + Pending bit. + 1 + 1 + + + PR0 + configurable event inputs x rising edge + Pending bit. + 0 + 1 + + + + + EXTICR1 + EXTICR1 + EXTI external interrupt selection + register + 0x60 + 0x20 + read-write + 0x00000000 + + + EXTI3 + GPIO port selection + 24 + 2 + + + EXTI2 + GPIO port selection + 16 + 2 + + + EXTI1 + GPIO port selection + 8 + 2 + + + EXTI0 + GPIO port selection + 0 + 2 + + + + + EXTICR2 + EXTICR2 + EXTI external interrupt selection + register + 0x64 + 0x20 + read-write + 0x00000000 + + + EXTI7 + GPIO port selection + 24 + 1 + + + EXTI6 + GPIO port selection + 16 + 1 + + + EXTI5 + GPIO port selection + 8 + 1 + + + EXTI4 + GPIO port selection + 0 + 2 + + + + + EXTICR3 + EXTICR3 + EXTI external interrupt selection + register + 0x68 + 0x20 + read-write + 0x00000000 + + + EXTI8 + GPIO port selection + 0 + 1 + + + + + IMR + IMR + EXTI CPU wakeup with interrupt mask + register + 0x80 + 0x20 + read-write + 0xFFF80000 + + + IM29 + CPU wakeup with interrupt mask on event + input + 29 + 1 + + + IM19 + CPU wakeup with interrupt mask on event + input + 19 + 1 + + + IM18 + CPU wakeup with interrupt mask on event + input + 18 + 1 + + + IM17 + CPU wakeup with interrupt mask on event + input + 17 + 1 + + + IM16 + CPU wakeup with interrupt mask on event + input + 16 + 1 + + + IM15 + CPU wakeup with interrupt mask on event + input + 15 + 1 + + + IM14 + CPU wakeup with interrupt mask on event + input + 14 + 1 + + + IM13 + CPU wakeup with interrupt mask on event + input + 13 + 1 + + + IM12 + CPU wakeup with interrupt mask on event + input + 12 + 1 + + + IM11 + CPU wakeup with interrupt mask on event + input + 11 + 1 + + + IM10 + CPU wakeup with interrupt mask on event + input + 10 + 1 + + + IM9 + CPU wakeup with interrupt mask on event + input + 9 + 1 + + + IM8 + CPU wakeup with interrupt mask on event + input + 8 + 1 + + + IM7 + CPU wakeup with interrupt mask on event + input + 7 + 1 + + + IM6 + CPU wakeup with interrupt mask on event + input + 6 + 1 + + + IM5 + CPU wakeup with interrupt mask on event + input + 5 + 1 + + + IM4 + CPU wakeup with interrupt mask on event + input + 4 + 1 + + + IM3 + CPU wakeup with interrupt mask on event + input + 3 + 1 + + + IM2 + CPU wakeup with interrupt mask on event + input + 2 + 1 + + + IM1 + CPU wakeup with interrupt mask on event + input + 1 + 1 + + + IM0 + CPU wakeup with interrupt mask on event + input + 0 + 1 + + + + + EMR + EMR + EXTI CPU wakeup with event mask + register + 0x84 + 0x20 + read-write + 0x00000000 + + + EM29 + CPU wakeup with event mask on event + input + 29 + 1 + + + EM19 + CPU wakeup with event mask on event + input + 19 + 1 + + + EM18 + CPU wakeup with event mask on event + input + 18 + 1 + + + EM17 + CPU wakeup with event mask on event + input + 17 + 1 + + + EM16 + CPU wakeup with event mask on event + input + 16 + 1 + + + EM15 + CPU wakeup with event mask on event + input + 15 + 1 + + + EM14 + CPU wakeup with event mask on event + input + 14 + 1 + + + EM13 + CPU wakeup with event mask on event + input + 13 + 1 + + + EM12 + CPU wakeup with event mask on event + input + 12 + 1 + + + EM11 + CPU wakeup with event mask on event + input + 11 + 1 + + + EM10 + CPU wakeup with event mask on event + input + 10 + 1 + + + EM9 + CPU wakeup with event mask on event + input + 9 + 1 + + + EM8 + CPU wakeup with event mask on event + input + 8 + 1 + + + EM7 + CPU wakeup with event mask on event + input + 7 + 1 + + + EM6 + CPU wakeup with event mask on event + input + 6 + 1 + + + EM5 + CPU wakeup with event mask on event + input + 5 + 1 + + + EM4 + CPU wakeup with event mask on event + input + 4 + 1 + + + EM3 + CPU wakeup with event mask on event + input + 3 + 1 + + + EM2 + CPU wakeup with event mask on event + input + 2 + 1 + + + EM1 + CPU wakeup with event mask on event + input + 1 + 1 + + + EM0 + CPU wakeup with event mask on event + input + 0 + 1 + + + + + + + LPTIM + Low power timer + LPTIM + 0x40007C00 + + 0x0 + 0x400 + registers + + + + ISR + ISR + Interrupt and Status Register + 0x0 + 0x20 + read-only + 0x00000000 + + + ARRM + Autoreload match + 1 + 1 + + + + + ICR + ICR + Interrupt Clear Register + 0x4 + 0x20 + write-only + 0x00000000 + + + ARRMCF + Autoreload match Clear + Flag + 1 + 1 + + + + + IER + IER + Interrupt Enable Register + 0x8 + 0x20 + read-write + 0x00000000 + + + ARRMIE + Autoreload match Interrupt + Enable + 1 + 1 + + + + + CFGR + CFGR + Configuration Register + 0xC + 0x20 + read-write + 0x00000000 + + + PRELOAD + Registers update mode + 22 + 1 + + + PRESC + Clock prescaler + 9 + 3 + + + + + CR + CR + Control Register + 0x10 + 0x20 + read-write + 0x00000000 + + + RSTARE + Reset after read enable + 4 + 1 + + + SNGSTRT + LPTIM start in single mode + 1 + 1 + + + ENABLE + LPTIM Enable + 0 + 1 + + + + + ARR + ARR + Autoreload Register + 0x18 + 0x20 + read-write + 0x00000001 + + + ARR + Auto reload value + 0 + 16 + + + + + CNT + CNT + Counter Register + 0x1C + 0x20 + read-only + 0x00000000 + + + CNT + Counter value + 0 + 16 + + + + + + + USART1 + Universal synchronous asynchronous receiver + transmitter + USART + 0x40013800 + + 0x0 + 0x400 + registers + + + USART1 + USART1 global Interrupt + 27 + + + + SR + SR + Status register + 0x0 + 0x20 + 0x00C0 + + + ABRRQ + Automate baudrate detection requeset + 12 + 1 + write-only + + + ABRE + Automate baudrate detection error flag + 11 + 1 + read-only + + + ABRF + Automate baudrate detection flag + 10 + 1 + read-only + + + CTS + CTS flag + 9 + 1 + read-write + + + TXE + Transmit data register + empty + 7 + 1 + read-only + + + TC + Transmission complete + 6 + 1 + read-write + + + RXNE + Read data register not + empty + 5 + 1 + read-write + + + IDLE + IDLE line detected + 4 + 1 + read-only + + + ORE + Overrun error + 3 + 1 + read-only + + + NE + Noise error flag + 2 + 1 + read-only + + + FE + Framing error + 1 + 1 + read-only + + + PE + Parity error + 0 + 1 + read-only + + + + + DR + DR + Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + DR + Data value + 0 + 9 + + + + + BRR + BRR + Baud rate register + 0x8 + 0x20 + read-write + 0x0000 + + + DIV_Mantissa + mantissa of USARTDIV + 4 + 12 + + + DIV_Fraction + fraction of USARTDIV + 0 + 4 + + + + + CR1 + CR1 + Control register 1 + 0xC + 0x20 + read-write + 0x0000 + + + UE + USART enable + 13 + 1 + + + M + Word length + 12 + 1 + + + WAKE + Wakeup method + 11 + 1 + + + PCE + Parity control enable + 10 + 1 + + + PS + Parity selection + 9 + 1 + + + PEIE + PE interrupt enable + 8 + 1 + + + TXEIE + TXE interrupt enable + 7 + 1 + + + TCIE + Transmission complete interrupt + enable + 6 + 1 + + + RXNEIE + RXNE interrupt enable + 5 + 1 + + + IDLEIE + IDLE interrupt enable + 4 + 1 + + + TE + Transmitter enable + 3 + 1 + + + RE + Receiver enable + 2 + 1 + + + RWU + Receiver wakeup + 1 + 1 + + + SBK + Send break + 0 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x10 + 0x20 + read-write + 0x0000 + + + STOP + STOP bits + 12 + 2 + + + CLKEN + Clock enable + 11 + 1 + + + CPOL + Clock polarity + 10 + 1 + + + CPHA + Clock phase + 9 + 1 + + + LBCL + Last bit clock pulse + 8 + 1 + + + ADD + Address of the USART node + 0 + 4 + + + + + CR3 + CR3 + Control register 3 + 0x14 + 0x20 + read-write + 0x0000 + + + ABRMOD + Auto baudrate mode + 13 + 2 + + + ABREN + Auto baudrate enable + 12 + 1 + + + OVER8 + Oversampling mode + 11 + 1 + + + CTSIE + CTS interrupt enable + 10 + 1 + + + CTSE + CTS enable + 9 + 1 + + + RTSE + RTS enable + 8 + 1 + + + DMAT + DMA enable transmitter + 7 + 1 + + + DMAR + DMA enable receiver + 6 + 1 + + + HDSEL + Half-duplex selection + 3 + 1 + + + IRLP + IrDA low-power + 2 + 1 + + + IREN + IrDA mode enable + 1 + 1 + + + EIE + Error interrupt enable + 0 + 1 + + + + + + + USART2 + 0x40004400 + + USART2 + USART2 global Interrupt + 28 + + + + RTC + Real time clock + RTC + 0x40002800 + + 0x0 + 0x400 + registers + + + RTC + RTC Interrupt through EXTI Lines 19 + 2 + + + + CRH + CRH + RTC Control Register High + 0x0 + 0x20 + read-write + 0x00000000 + + + OWIE + Overflow interrupt Enable + 2 + 1 + + + ALRIE + Alarm interrupt Enable + 1 + 1 + + + SECIE + Second interrupt Enable + 0 + 1 + + + + + CRL + CRL + RTC Control Register Low + 0x4 + 0x20 + 0x00000020 + + + RTOFF + RTC operation OFF + 5 + 1 + read-only + + + CNF + Configuration Flag + 4 + 1 + read-write + + + RSF + Registers Synchronized + Flag + 3 + 1 + read-write + + + OWF + Overflow Flag + 2 + 1 + read-write + + + ALRF + Alarm Flag + 1 + 1 + read-write + + + SECF + Second Flag + 0 + 1 + read-write + + + + + PRLH + PRLH + RTC Prescaler Load Register + High + 0x8 + 0x20 + write-only + 0x00000000 + + + PRLH + RTC Prescaler Load Register + High + 0 + 4 + + + + + PRLL + PRLL + RTC Prescaler Load Register + Low + 0xC + 0x20 + write-only + 0x8000 + + + PRLL + RTC Prescaler Divider Register + Low + 0 + 16 + + + + + DIVH + DIVH + RTC Prescaler Divider Register + High + 0x10 + 0x20 + read-only + 0x00000000 + + + DIVH + RTC prescaler divider register + high + 0 + 4 + + + + + DIVL + DIVL + RTC Prescaler Divider Register + Low + 0x14 + 0x20 + read-only + 0x8000 + + + DIVL + RTC prescaler divider register + Low + 0 + 16 + + + + + CNTH + CNTH + RTC Counter Register High + 0x18 + 0x20 + read-write + 0x00000000 + + + CNTH + RTC counter register high + 0 + 16 + + + + + CNTL + CNTL + RTC Counter Register Low + 0x1C + 0x20 + read-write + 0x00000000 + + + CNTL + RTC counter register Low + 0 + 16 + + + + + ALRH + ALRH + RTC Alarm Register High + 0x20 + 0x20 + write-only + 0xFFFF + + + ALRH + RTC alarm register high + 0 + 16 + + + + + ALRL + ALRL + RTC Alarm Register Low + 0x24 + 0x20 + write-only + 0xFFFF + + + ALRL + RTC alarm register low + 0 + 16 + + + + + RTCCR + RTCCR + RTC clock calibration + 0x2C + 0x20 + read-write + 0x0000 + + + ASOS + Alarm or second output selection + 9 + 1 + + + ASOE + Alarm or second output enable + 8 + 1 + + + CCO + Calibration clock output + 7 + 1 + + + CAL + Calibration value + 0 + 7 + + + + + + + IWDG + Independent watchdog + IWDG + 0x40003000 + + 0x0 + 0x400 + registers + + + + KR + KR + Key register (IWDG_KR) + 0x0 + 0x20 + write-only + 0x00000000 + + + KEY + Key value + 0 + 16 + + + + + PR + PR + Prescaler register (IWDG_PR) + 0x4 + 0x20 + read-write + 0x00000000 + + + PR + Prescaler divider + 0 + 3 + + + + + RLR + RLR + Reload register (IWDG_RLR) + 0x8 + 0x20 + read-write + 0x00000FFF + + + RL + Watchdog counter reload + value + 0 + 12 + + + + + SR + SR + Status register (IWDG_SR) + 0xC + 0x20 + read-only + 0x00000000 + + + WVU + Watchdog counter window value update + 2 + 1 + + + RVU + Watchdog counter reload value + update + 1 + 1 + + + PVU + Watchdog prescaler value + update + 0 + 1 + + + + + WINR + WINR + Window register (IWDG_SR) + 0x10 + 0x20 + read-only + 0x00000000 + + + WIN + window counter + 0 + 12 + + + + + + + WWDG + Window watchdog + WWDG + 0x40002C00 + + 0x0 + 0x400 + registers + + + WWDG + Window WatchDog Interrupt + 0 + + + + CR + CR + Control register (WWDG_CR) + 0x0 + 0x20 + read-write + 0x0000007F + + + WDGA + Activation bit + 7 + 1 + + + T + 7-bit counter (MSB to LSB) + 0 + 7 + + + + + CFR + CFR + Configuration register + (WWDG_CFR) + 0x4 + 0x20 + read-write + 0x0000007F + + + EWI + Early Wakeup Interrupt + 9 + 1 + + + WDGTB + Timer Base + 7 + 2 + + + W + 7-bit window value + 0 + 7 + + + + + SR + SR + Status register (WWDG_SR) + 0x8 + 0x20 + read-write + 0x00000000 + + + EWIF + Early Wakeup Interrupt flag + 0 + 1 + + + + + + + TIM1 + Advanced timer + TIM + 0x40012C00 + + 0x0 + 0x400 + registers + + + TIM1_BRK_UP_TRG_COM + TIM1 Break, Update, Trigger and Commutation Interrupt + 13 + + + TIM1_CC + TIM1 Capture Compare Interrupt + 14 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Clock division + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + CMS + Center-aligned mode + selection + 5 + 2 + + + DIR + Direction + 4 + 1 + + + OPM + One-pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + OIS4 + Output Idle state 4 + 14 + 1 + + + OIS3N + Output Idle state 3 + 13 + 1 + + + OIS3 + Output Idle state 3 + 12 + 1 + + + OIS2N + Output Idle state 2 + 11 + 1 + + + OIS2 + Output Idle state 2 + 10 + 1 + + + OIS1N + Output Idle state 1 + 9 + 1 + + + OIS1 + Output Idle state 1 + 8 + 1 + + + TI1S + TI1 selection + 7 + 1 + + + MMS + Master mode selection + 4 + 3 + + + CCDS + Capture/compare DMA + selection + 3 + 1 + + + CCUS + Capture/compare control update + selection + 2 + 1 + + + CCPC + Capture/compare preloaded + control + 0 + 1 + + + + + SMCR + SMCR + slave mode control register + 0x8 + 0x20 + read-write + 0x0000 + + + ETP + External trigger polarity + 15 + 1 + + + ECE + External clock enable + 14 + 1 + + + ETPS + External trigger prescaler + 12 + 2 + + + ETF + External trigger filter + 8 + 4 + + + MSM + Master/Slave mode + 7 + 1 + + + TS + Trigger selection + 4 + 3 + + + OCCS + OCREF clear selection bit + 3 + 1 + + + SMS + Slave mode selection + 0 + 3 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + TDE + Trigger DMA request enable + 14 + 1 + + + COMDE + COM DMA request enable + 13 + 1 + + + CC4DE + Capture/Compare 4 DMA request + enable + 12 + 1 + + + CC3DE + Capture/Compare 3 DMA request + enable + 11 + 1 + + + CC2DE + Capture/Compare 2 DMA request + enable + 10 + 1 + + + CC1DE + Capture/Compare 1 DMA request + enable + 9 + 1 + + + UDE + Update DMA request enable + 8 + 1 + + + BIE + Break interrupt enable + 7 + 1 + + + TIE + Trigger interrupt enable + 6 + 1 + + + COMIE + COM interrupt enable + 5 + 1 + + + CC4IE + Capture/Compare 4 interrupt + enable + 4 + 1 + + + CC3IE + Capture/Compare 3 interrupt + enable + 3 + 1 + + + CC2IE + Capture/Compare 2 interrupt + enable + 2 + 1 + + + CC1IE + Capture/Compare 1 interrupt + enable + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC4OF + Capture/Compare 4 overcapture + flag + 12 + 1 + + + CC3OF + Capture/Compare 3 overcapture + flag + 11 + 1 + + + CC2OF + Capture/compare 2 overcapture + flag + 10 + 1 + + + CC1OF + Capture/Compare 1 overcapture + flag + 9 + 1 + + + BIF + Break interrupt flag + 7 + 1 + + + TIF + Trigger interrupt flag + 6 + 1 + + + COMIF + COM interrupt flag + 5 + 1 + + + CC4IF + Capture/Compare 4 interrupt + flag + 4 + 1 + + + CC3IF + Capture/Compare 3 interrupt + flag + 3 + 1 + + + CC2IF + Capture/Compare 2 interrupt + flag + 2 + 1 + + + CC1IF + Capture/compare 1 interrupt + flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + BG + Break generation + 7 + 1 + + + TG + Trigger generation + 6 + 1 + + + COMG + Capture/Compare control update + generation + 5 + 1 + + + CC4G + Capture/compare 4 + generation + 4 + 1 + + + CC3G + Capture/compare 3 + generation + 3 + 1 + + + CC2G + Capture/compare 2 + generation + 2 + 1 + + + CC1G + Capture/compare 1 + generation + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC2CE + Output Compare 2 clear + enable + 15 + 1 + + + OC2M + Output Compare 2 mode + 12 + 3 + + + OC2PE + Output Compare 2 preload + enable + 11 + 1 + + + OC2FE + Output Compare 2 fast + enable + 10 + 1 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + OC1CE + Output Compare 1 clear + enable + 7 + 1 + + + OC1M + Output Compare 1 mode + 4 + 3 + + + OC1PE + Output Compare 1 preload + enable + 3 + 1 + + + OC1FE + Output Compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC2F + Input capture 2 filter + 12 + 4 + + + IC2PSC + Input capture 2 prescaler + 10 + 2 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + IC1F + Input capture 1 filter + 4 + 4 + + + ICPSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR2_Output + CCMR2_Output + capture/compare mode register (output + mode) + 0x1C + 0x20 + read-write + 0x00000000 + + + OC4CE + Output compare 4 clear + enable + 15 + 1 + + + OC4M + Output compare 4 mode + 12 + 3 + + + OC4PE + Output compare 4 preload + enable + 11 + 1 + + + OC4FE + Output compare 4 fast + enable + 10 + 1 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + OC3CE + Output compare 3 clear + enable + 7 + 1 + + + OC3M + Output compare 3 mode + 4 + 3 + + + OC3PE + Output compare 3 preload + enable + 3 + 1 + + + OC3FE + Output compare 3 fast + enable + 2 + 1 + + + CC3S + Capture/Compare 3 + selection + 0 + 2 + + + + + CCMR2_Input + CCMR2_Input + capture/compare mode register 2 (input + mode) + CCMR2_Output + 0x1C + 0x20 + read-write + 0x00000000 + + + IC4F + Input capture 4 filter + 12 + 4 + + + IC4PSC + Input capture 4 prescaler + 10 + 2 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + IC3F + Input capture 3 filter + 4 + 4 + + + IC3PSC + Input capture 3 prescaler + 2 + 2 + + + CC3S + Capture/compare 3 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC4P + Capture/Compare 3 output + Polarity + 13 + 1 + + + CC4E + Capture/Compare 4 output + enable + 12 + 1 + + + CC3NP + Capture/Compare 3 output + Polarity + 11 + 1 + + + CC3NE + Capture/Compare 3 complementary output + enable + 10 + 1 + + + CC3P + Capture/Compare 3 output + Polarity + 9 + 1 + + + CC3E + Capture/Compare 3 output + enable + 8 + 1 + + + CC2NP + Capture/Compare 2 output + Polarity + 7 + 1 + + + CC2NE + Capture/Compare 2 complementary output + enable + 6 + 1 + + + CC2P + Capture/Compare 2 output + Polarity + 5 + 1 + + + CC2E + Capture/Compare 2 output + enable + 4 + 1 + + + CC1NP + Capture/Compare 1 output + Polarity + 3 + 1 + + + CC1NE + Capture/Compare 1 complementary output + enable + 2 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + RCR + RCR + repetition counter register + 0x30 + 0x20 + read-write + 0x0000 + + + REP + Repetition counter value + 0 + 8 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + CCR2 + CCR2 + capture/compare register 2 + 0x38 + 0x20 + read-write + 0x00000000 + + + CCR2 + Capture/Compare 2 value + 0 + 16 + + + + + CCR3 + CCR3 + capture/compare register 3 + 0x3C + 0x20 + read-write + 0x00000000 + + + CCR3 + Capture/Compare value + 0 + 16 + + + + + CCR4 + CCR4 + capture/compare register 4 + 0x40 + 0x20 + read-write + 0x00000000 + + + CCR4 + Capture/Compare value + 0 + 16 + + + + + BDTR + BDTR + break and dead-time register + 0x44 + 0x20 + read-write + 0x0000 + + + MOE + Main output enable + 15 + 1 + + + AOE + Automatic output enable + 14 + 1 + + + BKP + Break polarity + 13 + 1 + + + BKE + Break enable + 12 + 1 + + + OSSR + Off-state selection for Run + mode + 11 + 1 + + + OSSI + Off-state selection for Idle + mode + 10 + 1 + + + LOCK + Lock configuration + 8 + 2 + + + DTG + Dead-time generator setup + 0 + 8 + + + + + DCR + DCR + DMA control register + 0x48 + 0x20 + read-write + 0x0000 + + + DBL + DMA burst length + 8 + 5 + + + DBA + DMA base address + 0 + 5 + + + + + DMAR + DMAR + DMA address for full transfer + 0x4C + 0x20 + read-write + 0x0000 + + + DMAB + DMA register for burst + accesses + 0 + 16 + + + + + + + TIM3 + General purpose timer + TIM + 0x40000400 + + 0x00 + 0x400 + registers + + + TIM3 + TIM3 global Interrupt + 16 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Clock division + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + CMS + Center-aligned mode + selection + 5 + 2 + + + DIR + Direction + 4 + 1 + + + OPM + One-pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + TI1S + TI1 selection + 7 + 1 + + + MMS + Master mode selection + 4 + 3 + + + CCDS + Capture/compare DMA + selection + 3 + 1 + + + + + SMCR + SMCR + slave mode control register + 0x8 + 0x20 + read-write + 0x0000 + + + MSM + Master/Slave mode + 7 + 1 + + + TS + Trigger selection + 4 + 3 + + + OCCS + OCREF Clear Selection + 3 + 1 + + + SMS + Slave mode selection + 0 + 3 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + TDE + Trigger DMA request enable + 14 + 1 + + + CC4DE + Capture/Compare 4 DMA request + enable + 12 + 1 + + + CC3DE + Capture/Compare 3 DMA request + enable + 11 + 1 + + + CC2DE + Capture/Compare 2 DMA request + enable + 10 + 1 + + + CC1DE + Capture/Compare 1 DMA request + enable + 9 + 1 + + + UDE + Update DMA request enable + 8 + 1 + + + TIE + Trigger interrupt enable + 6 + 1 + + + CC4IE + Capture/Compare 4 interrupt + enable + 4 + 1 + + + CC3IE + Capture/Compare 3 interrupt + enable + 3 + 1 + + + CC2IE + Capture/Compare 2 interrupt + enable + 2 + 1 + + + CC1IE + Capture/Compare 1 interrupt + enable + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC4OF + Capture/Compare 4 overcapture + flag + 12 + 1 + + + CC3OF + Capture/Compare 3 overcapture + flag + 11 + 1 + + + CC2OF + Capture/compare 2 overcapture + flag + 10 + 1 + + + CC1OF + Capture/Compare 1 overcapture + flag + 9 + 1 + + + TIF + Trigger interrupt flag + 6 + 1 + + + CC4IF + Capture/Compare 4 interrupt + flag + 4 + 1 + + + CC3IF + Capture/Compare 3 interrupt + flag + 3 + 1 + + + CC2IF + Capture/Compare 2 interrupt + flag + 2 + 1 + + + CC1IF + Capture/compare 1 interrupt + flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + TG + Trigger generation + 6 + 1 + + + CC4G + Capture/compare 4 + generation + 4 + 1 + + + CC3G + Capture/compare 3 + generation + 3 + 1 + + + CC2G + Capture/compare 2 + generation + 2 + 1 + + + CC1G + Capture/compare 1 + generation + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register 1 (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC2CE + Output compare 2 clear + enable + 15 + 1 + + + OC2M + Output compare 2 mode + 12 + 3 + + + OC2PE + Output compare 2 preload + enable + 11 + 1 + + + OC2FE + Output compare 2 fast + enable + 10 + 1 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + OC1CE + Output compare 1 clear + enable + 7 + 1 + + + OC1M + Output compare 1 mode + 4 + 3 + + + OC1PE + Output compare 1 preload + enable + 3 + 1 + + + OC1FE + Output compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC2F + Input capture 2 filter + 12 + 4 + + + IC2PSC + Input capture 2 prescaler + 10 + 2 + + + CC2S + Capture/compare 2 + selection + 8 + 2 + + + IC1F + Input capture 1 filter + 4 + 4 + + + IC1PSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR2_Output + CCMR2_Output + capture/compare mode register 2 (output + mode) + 0x1C + 0x20 + read-write + 0x00000000 + + + OC4CE + Output compare 4 clear + enable + 15 + 1 + + + OC4M + Output compare 4 mode + 12 + 3 + + + OC4PE + Output compare 4 preload + enable + 11 + 1 + + + OC4FE + Output compare 4 fast + enable + 10 + 1 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + OC3CE + Output compare 3 clear + enable + 7 + 1 + + + OC3M + Output compare 3 mode + 4 + 3 + + + OC3PE + Output compare 3 preload + enable + 3 + 1 + + + OC3FE + Output compare 3 fast + enable + 2 + 1 + + + CC3S + Capture/Compare 3 + selection + 0 + 2 + + + + + CCMR2_Input + CCMR2_Input + capture/compare mode register 2 (input + mode) + CCMR2_Output + 0x1C + 0x20 + read-write + 0x00000000 + + + IC4F + Input capture 4 filter + 12 + 4 + + + IC4PSC + Input capture 4 prescaler + 10 + 2 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + IC3F + Input capture 3 filter + 4 + 4 + + + IC3PSC + Input capture 3 prescaler + 2 + 2 + + + CC3S + Capture/Compare 3 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC4NP + + Capture/Compare 4 output + Polarity + + 15 + 1 + + + CC4P + + Capture/Compare 4 output + Polarity + + 13 + 1 + + + CC4E + + Capture/Compare 4 output + enable + + 12 + 1 + + + CC3NP + + Capture/Compare 3 output + Polarity + + 11 + 1 + + + CC3P + + Capture/Compare 3 output + Polarity + + 9 + 1 + + + CC3E + + Capture/Compare 3 output + enable + + 8 + 1 + + + CC2NP + + Capture/Compare 2 output + Polarity + + 7 + 1 + + + CC2P + + Capture/Compare 2 output + Polarity + + 5 + 1 + + + CC2E + + Capture/Compare 2 output + enable + + 4 + 1 + + + CC1NP + + Capture/Compare 1 output + Polarity + + 3 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + CCR2 + CCR2 + capture/compare register 2 + 0x38 + 0x20 + read-write + 0x00000000 + + + CCR2 + Capture/Compare 2 value + 0 + 16 + + + + + CCR3 + CCR3 + capture/compare register 3 + 0x3C + 0x20 + read-write + 0x00000000 + + + CCR3 + Capture/Compare value + 0 + 16 + + + + + CCR4 + CCR4 + capture/compare register 4 + 0x40 + 0x20 + read-write + 0x00000000 + + + CCR4 + Capture/Compare value + 0 + 16 + + + + + DCR + DCR + DMA control register + 0x48 + 0x20 + read-write + 0x0000 + + + DBL + DMA burst length + 8 + 5 + + + DBA + DMA base address + 0 + 5 + + + + + DMAR + DMAR + DMA address for full transfer + 0x4C + 0x20 + read-write + 0x0000 + + + DMAB + DMA register for burst + accesses + 0 + 32 + + + + + + + TIM14 + General purpose timer + TIM + 0x40002000 + + 0x00 + 0x400 + registers + + + TIM14 + TIM14 global Interrupt + 19 + + + + CR1 + CR1 + TIM14 control register1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Prescaler factor + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + CC1IE + Compare/ + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC1OF + Compare/capture 1 flag + 9 + 1 + + + CC1IF + Compare/capture 1 interrupt flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + CC1G + Compare/capture1 event + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC1M + Output Compare 1 mode + 4 + 3 + + + OC1PE + Output Compare 1 preload + enable + 3 + 1 + + + OC1FE + Output Compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC1F + Input capture 1 filter + 4 + 4 + + + IC1PSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC1NP + Capture/Compare 1 output + Polarity + 3 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + OR + OR + Option register + 0x50 + 0x20 + read-write + 0x00000000 + + + TI1_RMP + TIM14 channel1 input remap + 0 + 2 + + + + + + + TIM16 + General purpose timer + TIM + 0x40014400 + + 0x00 + 0x400 + registers + + + TIM16 + TIM16 global Interrupt + 21 + + + + CR1 + CR1 + TIM16 control register1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Prescaler factor + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + OPM + One pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + OIS1N + Output Idle state 1 + 9 + 1 + + + OIS1 + Output Idle state 1 + 8 + 1 + + + CCDS + Capture/compare DMA + selection + 3 + 1 + + + CCPC + Capture/compare preloaded + control + 0 + 1 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + CC1DE + Compare/capture DMA requeset enable + 9 + 1 + + + UDE + Update DMA request enable + 8 + 1 + + + BIE + Break interrupt enable + 7 + 1 + + + COMIE + Com interrupt enable + 5 + 1 + + + CC1IE + Capture/Compare 1 interrupt enable + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC1OF + Update interrupt flag + 9 + 1 + + + BIF + Break interrupt flag + 7 + 1 + + + COMIF + Com interrupt flag + 5 + 1 + + + CC1IF + Capture/Compare 1 interrupt flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + BG + Break event generation + 7 + 1 + + + COMG + COM evnet generation + 5 + 1 + + + CC1G + Capture/Compare 1 generation + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC1M + Output Compare 1 mode + 4 + 3 + + + OC1PE + Output Compare 1 preload + enable + 3 + 1 + + + OC1FE + Output Compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC1F + Input capture 1 filter + 4 + 4 + + + IC1PSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC1NP + Capture/Compare 1 output + Polarity + 3 + 1 + + + CC1NE + Capture/Compare 1 complementary output + enable + 2 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + RCR + RCR + repetition counter register + 0x30 + 0x20 + read-write + 0x0000 + + + REP + Repetition counter value + 0 + 8 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + BDTR + BDTR + break and dead-time register + 0x44 + 0x20 + read-write + 0x0000 + + + MOE + Main output enable + 15 + 1 + + + AOE + Automatic output enable + 14 + 1 + + + BKP + Break polarity + 13 + 1 + + + BKE + Break enable + 12 + 1 + + + OSSR + Off-state selection for Run + mode + 11 + 1 + + + OSSI + Off-state selection for Idle + mode + 10 + 1 + + + LOCK + Lock configuration + 8 + 2 + + + DTG + Dead-time generator setup + 0 + 8 + + + + + DCR + DCR + DMA control register + 0x48 + 0x20 + read-write + 0x0000 + + + DBL + DMA burst length + 8 + 5 + + + DBA + DMA base address + 0 + 5 + + + + + DMAR + DMAR + DMA address for full transfer + 0x4C + 0x20 + read-write + 0x0000 + + + DMAB + DMA register for burst + accesses + 0 + 32 + + + + + + + TIM17 + 0x40014800 + + TIM17 + TIM17 global Interrupt + 22 + + + + SYSCFG + System configuration controller + SYSCFG + 0x40010000 + + 0x0 + 0x30 + registers + + + + CFGR1 + CFGR1 + SYSCFG configuration register + 1 + 0x0 + 0x20 + read-write + 0x00000000 + + + I2C_PF1_ANF + Analog filter enable control driving capability + activation bits PF1 + 30 + 1 + + + I2C_PF0_ANF + Analog filter enable control driving capability + activation bits PF0 + 29 + 1 + + + I2C_PB8_ANF + Analog filter enable control driving capability + activation bits PB8 + 28 + 1 + + + I2C_PB7_ANF + Analog filter enable control driving capability + activation bits PB7 + 27 + 1 + + I2C_PB6_ANF + Analog filter enable control driving capability + activation bits PB6 + 26 + 1 + + + I2C_PA12_ANF + Analog filter enable control driving capability + activation bits PA12 + 25 + 1 + + + I2C_PA11_ANF + Analog filter enable control driving capability + activation bits PA11 + 24 + 1 + + + I2C_PA10_ANF + Analog filter enable control driving capability + activation bits PA10 + 23 + 1 + + + I2C_PA9_ANF + Analog filter enable control driving capability + activation bits PA9 + 22 + 1 + + + I2C_PA8_ANF + Analog filter enable control driving capability + activation bits PA8 + 21 + 1 + + + I2C_PA7_ANF + Analog filter enable control driving capability + activation bits PA7 + 20 + 1 + + + I2C_PA3_ANF + Analog filter enable control driving capability + activation bits PA3 + 19 + 1 + + + I2C_PA2_ANF + Analog filter enable control driving capability + activation bits PA2 + 18 + 1 + + + MEM_MODE + Memory mapping selection + bits + 0 + 2 + + + + + CFGR2 + CFGR2 + SYSCFG configuration register + 2 + 0x18 + 0x20 + read-write + 0x00000000 + + + ETR_SRC_TIM1 + TIM1 ETR source selection + 9 + 2 + + + COMP2_BRK_TIM17 + COMP2 is enable to input of TIM17 break + 8 + 1 + + + COMP1_BRK_TIM17 + COMP1 is enable to input of TIM17 break + 7 + 1 + + + COMP2_BRK_TIM16 + COMP2 is enable to input of TIM16 break + 6 + 1 + + + COMP1_BRK_TIM16 + COMP1 is enable to input of TIM16 break + 5 + 1 + + + COMP2_BRK_TIM1 + COMP2 is enable to input of TIM1 break + 4 + 1 + + + COMP1_BRK_TIM1 + COMP1 is enable to input of TIM1 break + 3 + 1 + + + PVD_LOCK + PVD lock enable bit + 2 + 1 + + + LOCKUP_LOCK + Cortex-M0+ LOCKUP bit enable + bit + 0 + 1 + + + + + CFGR3 + CFGR3 + SYSCFG configuration register + 3 + 0x1C + 0x20 + read-write + 0x00000000 + + + DMA3_MAP + DMA channel3 requeset selection + 16 + 5 + + + DMA2_MAP + DMA channel2 requeset selection + 8 + 5 + + + DMA1_MAP + DMA channel1 requeset selection + 0 + 5 + + + + + + + DMA + Direct memory access + DMA + 0x40020000 + + 0x0 + 0x400 + registers + + + DMA_Channel1 + DMA Channel 1 Interrupt + 9 + + + DMA_Channel2_3 + DMA Channel 2 and Channel 3 Interrupt + 10 + + + + ISR + ISR + DMA interrupt status register + (DMA_ISR) + 0x0 + 0x20 + read-only + 0x00000000 + + + TEIF3 + Channel 3 Transfer Error + flag + 11 + 1 + + + HTIF3 + Channel 3 Half Transfer Complete + flag + 10 + 1 + + + TCIF3 + Channel 3 Transfer Complete + flag + 9 + 1 + + + GIF3 + Channel 3 Global interrupt + flag + 8 + 1 + + + TEIF2 + Channel 2 Transfer Error + flag + 7 + 1 + + + HTIF2 + Channel 2 Half Transfer Complete + flag + 6 + 1 + + + TCIF2 + Channel 2 Transfer Complete + flag + 5 + 1 + + + GIF2 + Channel 2 Global interrupt + flag + 4 + 1 + + + TEIF1 + Channel 1 Transfer Error + flag + 3 + 1 + + + HTIF1 + Channel 1 Half Transfer Complete + flag + 2 + 1 + + + TCIF1 + Channel 1 Transfer Complete + flag + 1 + 1 + + + GIF1 + Channel 1 Global interrupt + flag + 0 + 1 + + + + + IFCR + IFCR + DMA interrupt flag clear register + (DMA_IFCR) + 0x4 + 0x20 + write-only + 0x00000000 + + + CTEIF3 + Channel 3 Transfer Error + clear + 11 + 1 + + + CHTIF3 + Channel 3 Half Transfer + clear + 10 + 1 + + + CTCIF3 + Channel 3 Transfer Complete + clear + 9 + 1 + + + CGIF3 + Channel 3 Global interrupt + clear + 8 + 1 + + + CTEIF2 + Channel 2 Transfer Error + clear + 7 + 1 + + + CHTIF2 + Channel 2 Half Transfer + clear + 6 + 1 + + + CTCIF2 + Channel 2 Transfer Complete + clear + 5 + 1 + + + CGIF2 + Channel 2 Global interrupt + clear + 4 + 1 + + + CTEIF1 + Channel 1 Transfer Error + clear + 3 + 1 + + + CHTIF1 + Channel 1 Half Transfer + clear + 2 + 1 + + + CTCIF1 + Channel 1 Transfer Complete + clear + 1 + 1 + + + CGIF1 + Channel 1 Global interrupt + clear + 0 + 1 + + + + + CCR1 + CCR1 + DMA channel configuration register + (DMA_CCR) + 0x8 + 0x20 + read-write + 0x00000000 + + + MEM2MEM + Memory to memory mode + 14 + 1 + + + PL + Channel Priority level + 12 + 2 + + + MSIZE + Memory size + 10 + 2 + + + PSIZE + Peripheral size + 8 + 2 + + + MINC + Memory increment mode + 7 + 1 + + + PINC + Peripheral increment mode + 6 + 1 + + + CIRC + Circular mode + 5 + 1 + + + DIR + Data transfer direction + 4 + 1 + + + TEIE + Transfer error interrupt + enable + 3 + 1 + + + HTIE + Half Transfer interrupt + enable + 2 + 1 + + + TCIE + Transfer complete interrupt + enable + 1 + 1 + + + EN + Channel enable + 0 + 1 + + + + + CNDTR1 + CNDTR1 + DMA channel 1 number of data + register + 0xC + 0x20 + read-write + 0x00000000 + + + NDT + Number of data to transfer + 0 + 16 + + + + + CPAR1 + CPAR1 + DMA channel 1 peripheral address + register + 0x10 + 0x20 + read-write + 0x00000000 + + + PA + Peripheral address + 0 + 32 + + + + + CMAR1 + CMAR1 + DMA channel 1 memory address + register + 0x14 + 0x20 + read-write + 0x00000000 + + + MA + Memory address + 0 + 32 + + + + + CCR2 + CCR2 + DMA channel configuration register + (DMA_CCR) + 0x1C + 0x20 + read-write + 0x00000000 + + + MEM2MEM + Memory to memory mode + 14 + 1 + + + PL + Channel Priority level + 12 + 2 + + + MSIZE + Memory size + 10 + 2 + + + PSIZE + Peripheral size + 8 + 2 + + + MINC + Memory increment mode + 7 + 1 + + + PINC + Peripheral increment mode + 6 + 1 + + + CIRC + Circular mode + 5 + 1 + + + DIR + Data transfer direction + 4 + 1 + + + TEIE + Transfer error interrupt + enable + 3 + 1 + + + HTIE + Half Transfer interrupt + enable + 2 + 1 + + + TCIE + Transfer complete interrupt + enable + 1 + 1 + + + EN + Channel enable + 0 + 1 + + + + + CNDTR2 + CNDTR2 + DMA channel 2 number of data + register + 0x20 + 0x20 + read-write + 0x00000000 + + + NDT + Number of data to transfer + 0 + 16 + + + + + CPAR2 + CPAR2 + DMA channel 2 peripheral address + register + 0x24 + 0x20 + read-write + 0x00000000 + + + PA + Peripheral address + 0 + 32 + + + + + CMAR2 + CMAR2 + DMA channel 2 memory address + register + 0x28 + 0x20 + read-write + 0x00000000 + + + MA + Memory address + 0 + 32 + + + + + CCR3 + CCR3 + DMA channel configuration register + (DMA_CCR) + 0x30 + 0x20 + read-write + 0x00000000 + + + MEM2MEM + Memory to memory mode + 14 + 1 + + + PL + Channel Priority level + 12 + 2 + + + MSIZE + Memory size + 10 + 2 + + + PSIZE + Peripheral size + 8 + 2 + + + MINC + Memory increment mode + 7 + 1 + + + PINC + Peripheral increment mode + 6 + 1 + + + CIRC + Circular mode + 5 + 1 + + + DIR + Data transfer direction + 4 + 1 + + + TEIE + Transfer error interrupt + enable + 3 + 1 + + + HTIE + Half Transfer interrupt + enable + 2 + 1 + + + TCIE + Transfer complete interrupt + enable + 1 + 1 + + + EN + Channel enable + 0 + 1 + + + + + CNDTR3 + CNDTR3 + DMA channel 3 number of data + register + 0x34 + 0x20 + read-write + 0x00000000 + + + NDT + Number of data to transfer + 0 + 16 + + + + + CPAR3 + CPAR3 + DMA channel 3 peripheral address + register + 0x38 + 0x20 + read-write + 0x00000000 + + + PA + Peripheral address + 0 + 32 + + + + + CMAR3 + CMAR3 + DMA channel 3 memory address + register + 0x3C + 0x20 + read-write + 0x00000000 + + + MA + Memory address + 0 + 32 + + + + + + + FLASH + Flash + Flash + 0x40022000 + + 0x0 + 0x400 + registers + + + FLASH + FLASH global Interrupt + 3 + + + + ACR + ACR + Access control register + 0x0 + 0x20 + read-write + 0x00000600 + + + LATENCY + Latency + 0 + 1 + + + + + KEYR + KEYR + Flash key register + 0x8 + 0x20 + write-only + 0x00000000 + + + KEY + Flash key + 0 + 32 + + + + + OPTKEYR + OPTKEYR + Option byte key register + 0xC + 0x20 + write-only + 0x00000000 + + + OPTKEY + Option byte key + 0 + 32 + + + + + SR + SR + Status register + 0x10 + 0x20 + read-write + 0x00000000 + + + BSY + Busy + 16 + 1 + + + OPTVERR + Option and Engineering bits loading + validity error + 15 + 1 + + + WRPERR + Write protected error + 4 + 1 + + + EOP + End of operation + 0 + 1 + + + + + CR + CR + Flash control register + 0x14 + 0x20 + read-write + 0xC0000000 + + + LOCK + FLASH_CR Lock + 31 + 1 + + + OPTLOCK + Options Lock + 30 + 1 + + + OBL_LAUNCH + Force the option byte + loading + 27 + 1 + + + ERRIE + Error interrupt enable + 25 + 1 + + + EOPIE + End of operation interrupt + enable + 24 + 1 + + + PGTSTRT + Flash main memory program start + 19 + 1 + + + OPTSTRT + Option byte program start + 17 + 1 + + + SER + Sector erase + 11 + 1 + + + MER + Mass erase + 2 + 1 + + + PER + Page erase + 1 + 1 + + + PG + Programming + 0 + 1 + + + + + OPTR + OPTR + Flash option register + 0x20 + 0x20 + read-write + 0x4F55B0AA + + + nBOOT1 + Boot configuration + 15 + 1 + + + NRST_MODE + NRST_MODE + 14 + 1 + + + WWDG_SW + Window watchdog selection + 13 + 1 + + + IDWG_SW + Independent watchdog + selection + 12 + 1 + + + BORF_LEV + These bits contain the VDD supply level + threshold that activates the reset + 9 + 3 + + + BOREN + BOR reset Level + 8 + 1 + + + RDP + Read Protection + 0 + 8 + + + + + SDKR + SDKR + Flash SDK address + register + 0x24 + 0x20 + read-write + 0xFFE0001F + + + SDK_END + SDK area end address + 8 + 5 + + + SDK_STRT + SDK area start address + 0 + 5 + + + + + WRPR + WRPR + Flash WRP address + register + 0x2C + 0x20 + read-write + 0x0000FFFF + + + WRP + WRP address + 0 + 16 + + + + + STCR + STCR + Flash sleep time config + register + 0x90 + 0x20 + read-write + 0x00006400 + + + SLEEP_TIME + FLash sleep time configuration(counter based on HSI_10M) + 8 + 8 + + + SLEEP_EN + FLash sleep enable + 0 + 1 + + + + + TS0 + TS0 + Flash TS0 + register + 0x100 + 0x20 + read-write + 0x000000B4 + + + TS0 + FLash TS0 register + 0 + 8 + + + + + TS1 + TS1 + Flash TS1 + register + 0x104 + 0x20 + read-write + 0x000001B0 + + + TS1 + FLash TS1 register + 0 + 9 + + + + + TS2P + TS2P + Flash TS2P + register + 0x108 + 0x20 + read-write + 0x000000B4 + + + TS2P + FLash TS2P register + 0 + 8 + + + + + TPS3 + TPS3 + Flash TPS3 + register + 0x10C + 0x20 + read-write + 0x000006C0 + + + TPS3 + FLash TPS3 register + 0 + 11 + + + + + TS3 + TS3 + Flash TS3 + register + 0x110 + 0x20 + read-write + 0x000000B4 + + + TS3 + FLash TS3 register + 0 + 8 + + + + + PERTPE + PERTPE + Flash PERTPE + register + 0x114 + 0x20 + read-write + 0x0000EA60 + + + PERTPE + FLash PERTPE register + 0 + 17 + + + + + SMERTPE + SMERTPE + Flash SMERTPE + register + 0x118 + 0x20 + read-write + 0x0000FD20 + + + SMERTPE + FLash SMERTPE register + 0 + 17 + + + + + PRGTPE + PRGTPE + Flash PRGTPE + register + 0x11C + 0x20 + read-write + 0x00008CA0 + + + PRGTPE + FLash PRGTPE register + 0 + 16 + + + + + PRETPE + PRETPE + Flash PRETPE + register + 0x120 + 0x20 + read-write + 0x000012C0 + + + PRETPE + FLash PRETPE register + 0 + 13 + + + + + + + CRC + CRC calculation unit + CRC + 0x40023000 + + 0x0 + 0x400 + registers + + + + DR + DR + Data register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + DR + Data Register + 0 + 32 + + + + + IDR + IDR + Independent Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + IDR + Independent Data register + 0 + 8 + + + + + CR + CR + Control register + 0x8 + 0x20 + write-only + 0x00000000 + + + RESET + Reset bit + 0 + 1 + + + + + + + SPI1 + Serial peripheral interface + SPI + 0x40013000 + + 0x0 + 0x400 + registers + + + SPI1 + SPI1 global Interrupt + 25 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + BIDIMODE + Bidirectional data mode + enable + 15 + 1 + + + BIDIOE + Output enable in bidirectional + mode + 14 + 1 + + + RXONLY + Receive only + 10 + 1 + + + SSM + Software slave management + 9 + 1 + + + SSI + Internal slave selection + 8 + 1 + + + LSBFIRST + Frame format + 7 + 1 + + + SPE + SPI enable + 6 + 1 + + + BR + Baud rate control + 3 + 3 + + + MSTR + Master selection + 2 + 1 + + + CPOL + Clock polarity + 1 + 1 + + + CPHA + Clock phase + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + SLVFM + Slave fast mode enable + 15 + 1 + + + LDMA_TX + Last DAM Transmit(TX) + 14 + 1 + + + LDMA_RX + Last DAM Transmit(RX) + 13 + 1 + + + FRXTH + FIFO reception threshold + 12 + 1 + + + DS + Data length + + 11 + 1 + + + TXEIE + Tx buffer empty interrupt + enable + 7 + 1 + + + RXNEIE + RX buffer not empty interrupt + enable + 6 + 1 + + + ERRIE + Error interrupt enable + 5 + 1 + + + SSOE + SS output enable + 2 + 1 + + + TXDMAEN + Tx buffer DMA enable + 1 + 1 + + + RXDMAEN + Rx buffer DMA enable + 0 + 1 + + + + + SR + SR + status register + 0x8 + 0x20 + 0x0002 + + + FTLVL + FIFO transmission level + 11 + 2 + read-only + + + FRLVL + FIFO reception level + 9 + 2 + read-only + + + BSY + Busy flag + 7 + 1 + read-only + + + OVR + Overrun flag + 6 + 1 + read-only + + + MODF + Mode fault + 5 + 1 + read-only + + + TXE + Transmit buffer empty + 1 + 1 + read-only + + + RXNE + Receive buffer not empty + 0 + 1 + read-only + + + + + DR + DR + data register + 0xC + 0x20 + read-write + 0x0000 + + + DR + Data register + 0 + 16 + + + + + + + I2C + Inter integrated circuit + I2C + 0x40005400 + + 0x0 + 0x400 + registers + + + I2C1 + I2C1 global Interrupt + 23 + + + + CR1 + CR1 + Control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + SWRST + Software reset + 15 + 1 + + + PEC + Packet error checking + 12 + 1 + + + POS + Acknowledge/PEC Position (for data + reception) + 11 + 1 + + + ACK + Acknowledge enable + 10 + 1 + + + STOP + Stop generation + 9 + 1 + + + START + Start generation + 8 + 1 + + + NOSTRETCH + Clock stretching disable (Slave + mode) + 7 + 1 + + + ENGC + General call enable + 6 + 1 + + + ENPEC + PEC enable + 5 + 1 + + + PE + Peripheral enable + 0 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + LAST + DMA last transfer + 12 + 1 + + + DMAEN + DMA requests enable + 11 + 1 + + + ITBUFEN + Buffer interrupt enable + 10 + 1 + + + ITEVTEN + Event interrupt enable + 9 + 1 + + + ITERREN + Error interrupt enable + 8 + 1 + + + FREQ + Peripheral clock frequency + 0 + 6 + + + + + OAR1 + OAR1 + Own address register 1 + 0x8 + 0x20 + read-write + 0x0000 + + + ADD + Interface address + 1 + 7 + + + + + DR + DR + Data register + 0x10 + 0x20 + read-write + 0x0000 + + + DR + 8-bit data register + 0 + 8 + + + + + SR1 + SR1 + Status register 1 + 0x14 + 0x20 + 0x0000 + + + PECERR + PEC Error in reception + 12 + 1 + read-write + + + OVR + Overrun/Underrun + 11 + 1 + read-write + + + AF + Acknowledge failure + 10 + 1 + read-write + + + ARLO + Arbitration lost (master + mode) + 9 + 1 + read-write + + + BERR + Bus error + 8 + 1 + read-write + + + TxE + Data register empty + (transmitters) + 7 + 1 + read-only + + + RxNE + Data register not empty + (receivers) + 6 + 1 + read-only + + + STOPF + Stop detection (slave + mode) + 4 + 1 + read-only + + + BTF + Byte transfer finished + 2 + 1 + read-only + + + ADDR + Address sent (master mode)/matched + (slave mode) + 1 + 1 + read-only + + + SB + Start bit (Master mode) + 0 + 1 + read-only + + + + + SR2 + SR2 + Status register 2 + 0x18 + 0x20 + read-only + 0x0000 + + + PEC + acket error checking + register + 8 + 8 + + + DUALF + Dual flag (Slave mode) + 7 + 1 + + + GENCALL + General call address (Slave + mode) + 4 + 1 + + + TRA + Transmitter/receiver + 2 + 1 + + + BUSY + Bus busy + 1 + 1 + + + MSL + Master/slave + 0 + 1 + + + + + CCR + CCR + Clock control register + 0x1C + 0x20 + read-write + 0x0000 + + + F_S + I2C master mode selection + 15 + 1 + + + DUTY + Fast mode duty cycle + 14 + 1 + + + CCR + Clock control register in Fast/Standard + mode (Master mode) + 0 + 12 + + + + + TRISE + TRISE + TRISE register + 0x20 + 0x20 + read-write + 0x0002 + + + TRISE + Maximum rise time in Fast/Standard mode + (Master mode) + 0 + 6 + + + + + + + DBGMCU + Debug support + DBGMCU + 0x40015800 + + 0x0 + 0x400 + registers + + + + IDCODE + IDCODE + MCU Device ID Code Register + 0x0 + 0x20 + read-only + 0x0 + + + + + + CR + CR + Debug MCU Configuration + Register + 0x4 + 0x20 + read-write + 0x0 + + + DBG_STOP + Debug Stop Mode + 1 + 1 + + + + + APB_FZ1 + APB_FZ1 + APB Freeze Register1 + 0x8 + 0x20 + read-write + 0x0 + + + DBG_TIMER3_STOP + Debug Timer 3 stopped when Core is + halted + 1 + 1 + + + DBG_RTC_STOP + Debug RTC stopped when Core is + halted + 10 + 1 + + + DBG_WWDG_STOP + Debug Window Wachdog stopped when Core + is halted + 11 + 1 + + + DBG_IWDG_STOP + Debug Independent Wachdog stopped when + Core is halted + 12 + 1 + + + DBG_LPTIM_STOP + Debug LPTIM stopped when Core is + halted + 31 + 1 + + + + + APB_FZ2 + APB_FZ2 + APB Freeze Register2 + 0xC + 0x20 + read-write + 0x0 + + + DBG_TIMER1_STOP + Debug Timer 1 stopped when Core is + halted + 11 + 1 + + + DBG_TIMER14_STOP + Debug Timer 14 stopped when Core is + halted + 15 + 1 + + + DBG_TIMER16_STOP + Debug Timer 16 stopped when Core is + halted + 17 + 1 + + + DBG_TIMER17_STOP + Debug Timer 17 stopped when Core is + halted + 18 + 1 + + + + + + + diff --git a/Misc/py32f030xx.svd b/Misc/SVD/py32f030xx.svd similarity index 96% rename from Misc/py32f030xx.svd rename to Misc/SVD/py32f030xx.svd index 3f41e8a..07f1dee 100644 --- a/Misc/py32f030xx.svd +++ b/Misc/SVD/py32f030xx.svd @@ -1,11582 +1,11582 @@ - - - - Puya - Puya - PY32F0xx_DFP - - PY32F0 - 1.0.0 - Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. - - - - CM0+ - r0p1 - little - false - false - 4 - false - - - - 8 - 32 - 32 - read-write - 0x00000000 - 0xFFFFFFFF - - - ADC - Analog to Digital Converter - ADC - 0x40012400 - - 0x0 - 0x400 - registers - - - ADC_COMP - ADC and COMP Interrupt through EXTI Lines 17 and 18 - 12 - - - - ISR - ISR - ADC interrupt and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - AWD - ADC analog watchdog flag - 7 - 1 - - - OVR - ADC group regular overrun - flag - 4 - 1 - - - EOSEQ - ADC group regular end of sequence - conversions flag - 3 - 1 - - - EOC - ADC group regular end of unitary - conversion flag - 2 - 1 - - - EOSMP - ADC group regular end of sampling - flag - 1 - 1 - - - - - IER - IER - ADC interrupt enable register - 0x4 - 0x20 - read-write - 0x00000000 - - - AWDIE - ADC analog watchdog - interrupt - 7 - 1 - - - OVRIE - ADC group regular overrun - interrupt - 4 - 1 - - - EOSEQIE - ADC group regular end of sequence - conversions interrupt - 3 - 1 - - - EOCIE - ADC group regular end of unitary - conversion interrupt - 2 - 1 - - - EOSMPIE - ADC group regular end of sampling - interrupt - 1 - 1 - - - - - CR - CR - ADC control register - 0x8 - 0x20 - read-write - 0x00000000 - - - ADCAL - ADC group regular conversion - calibration - 31 - 1 - - - ADSTP - ADC group regular conversion - stop - 4 - 1 - - - ADSTART - ADC group regular conversion - start - 2 - 1 - - - ADEN - ADC enable - 0 - 1 - - - - - CFGR1 - CFGR1 - ADC configuration register 1 - 0xC - 0x20 - read-write - 0x00000000 - - - AWDCH - ADC analog watchdog monitored channel - selection - 26 - 4 - - - AWDEN - ADC analog watchdog enable on scope - ADC group regular - 23 - 1 - - - AWDSGL - ADC analog watchdog monitoring a - single channel or all channels - 22 - 1 - - - DISCEN - ADC group regular sequencer - discontinuous mode - 16 - 1 - - - WAIT - Wait conversion mode - 14 - 1 - - - CONT - ADC group regular continuous conversion - mode - 13 - 1 - - - OVRMOD - ADC group regular overrun - configuration - 12 - 1 - - - EXTEN - ADC group regular external trigger - polarity - 10 - 2 - - - EXTSEL - ADC group regular external trigger - source - 6 - 3 - - - ALIGN - ADC data alignement - 5 - 1 - - - RESSEL - ADC data resolution - 3 - 2 - - - SCANDIR - Scan sequence direction - 2 - 1 - - - DMACFG - ADC DMA transfer - configuration - 1 - 1 - - - DMAEN - ADC DMA transfer enable - 0 - 1 - - - - - CFGR2 - CFGR2 - ADC configuration register 2 - 0x10 - 0x20 - read-write - 0x00000000 - - - CKMODE - ADC clock mode - 28 - 4 - - - - - SMPR - SMPR - ADC sampling time register - 0x14 - 0x20 - read-write - 0x00000000 - - - SMP - Sampling time selection - 0 - 3 - - - - - TR - TR - ADC analog watchdog 1 threshold register - 0x20 - 0x20 - read-write - 0x0FFF0000 - - - HT - ADC analog watchdog threshold - high - 16 - 12 - - - LT - ADC analog watchdog threshold - low - 0 - 12 - - - - - CHSELR - CHSELR - ADC group regular sequencer register - 0x28 - 0x20 - read-write - 0x0FFF0000 - - - CHSEL12 - Channel-12 selection - 12 - 1 - - - CHSEL11 - Channel-11 selection - 11 - 1 - - - CHSEL9 - Channel-9 selection - 9 - 1 - - - CHSEL8 - Channel-8 selection - 8 - 1 - - - CHSEL7 - Channel-7 selection - 7 - 1 - - - CHSEL6 - Channel-6 selection - 6 - 1 - - - CHSEL5 - Channel-5 selection - 5 - 1 - - - CHSEL4 - Channel-4 selection - 4 - 1 - - - CHSEL3 - Channel-3 selection - 3 - 1 - - - CHSEL2 - Channel-2 selection - 2 - 1 - - - CHSEL1 - Channel-1 selection - 1 - 1 - - - CHSEL0 - Channel-0 selection - 0 - 1 - - - - - DR - DR - ADC group regular data register - 0x40 - 0x20 - read-only - 0x00000000 - - - DATA - ADC group regular conversion - data - 0 - 16 - - - - - CCSR - CCSR - ADC calibration configuration and status register - 0x44 - 0x20 - read-write - 0x00000000 - - - CALON - Calibration flag - 31 - 1 - read-only - - - CALFAIL - Calibration fail flag - 30 - 1 - - - CALSET - Calibration factor selection - 15 - 1 - - - CALSMP - Calibration sample time selection - 12 - 2 - - - CALSEL - Calibration contents selection - 11 - 1 - - - - - CALRR1 - CALRR1 - ADC calibration result register 1 - 0x48 - 0x20 - read-only - 0x00000000 - - - CALBOUT - offset result - 16 - 7 - - - CALC5OUT - C5 result - 8 - 8 - - - CALC4OUT - C4 result - 0 - 8 - - - - - CALRR2 - CALRR2 - ADC calibration result register 2 - 0x4C - 0x20 - read-only - 0x00000000 - - - CALC3OUT - C3 result - 24 - 8 - - - CALC2OUT - C2 result - 16 - 8 - - - CALC1OUT - C1 result - 8 - 8 - - - CALC0OUT - C0 result - 0 - 8 - - - - - CALFIR1 - CALFIR1 - ADC calibration factor input register 1 - 0x50 - 0x20 - read-write - 0x00000000 - - - CALBIO - Calibration offset factor input - 16 - 7 - - - CALC5IO - Calibration C5 factor input - 8 - 8 - - - CALC4IO - Calibration C4 factor input - 0 - 8 - - - - - CALFIR2 - CALFIR2 - ADC calibration factor input register 2 - 0x54 - 0x20 - read-write - 0x00000000 - - - CALC3IO - Calibration C3 factor input - 24 - 8 - - - CALC2IO - Calibration C2 factor input - 16 - 8 - - - CALC1IO - Calibration C1 factor input - 8 - 8 - - - CALC0IO - Calibration C0 factor input - 0 - 8 - - - - - CCR - CCR - ADC common configuration register - 0x308 - 0x20 - read-write - 0x00000000 - - - TSEN - Temperature sensor enable - 23 - 1 - - - VREFEN - VREFINT enable - 22 - 1 - - - - - - - COMP1 - Comparator - COMP - 0x40010200 - - 0x0 - 0x10 - registers - - - - CSR - CSR - COMP control and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - LOCK - CSR register lock - 31 - 1 - - - COMP_OUT - Comparator output status - 30 - 1 - - - PWRMODE - Comparator power mode - selector - 18 - 2 - - - HYST - Comparator hysteresis enable - selector - 16 - 1 - - - POLARITY - Comparator polarity - selector - 15 - 1 - - - WINMODE - Comparator non-inverting input - selector for window mode - 11 - 1 - - - INPSEL - Comparator signal selector for - non-inverting input - 8 - 2 - - - INMSEL - Comparator signal selector for - inverting input INM - 4 - 4 - - - SCALER_EN - SCALER enable bit - 1 - 1 - - - COMP_EN - COMP enable bit - 0 - 1 - - - - - FR - FR - Comparator Filter - register - 0x4 - 0x20 - read-write - 0x00000000 - - - FLTCNT - Comparator filter and counter - 16 - 16 - - - FLTEN - Filter enable bit - 0 - 1 - - - - - - - COMP2 - Comparator - COMP - 0x40010210 - - 0x0 - 0x10 - registers - - - - CSR - CSR - COMP control and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - LOCK - CSR register lock - 31 - 1 - - - COMP_OUT - Comparator output status - 30 - 1 - - - PWRMODE - Comparator power mode - selector - 18 - 2 - - - POLARITY - Comparator polarity - selector - 15 - 1 - - - WINMODE - Comparator non-inverting input - selector for window mode - 11 - 1 - - - INPSEL - Comparator signal selector for - non-inverting input - 8 - 2 - - - INMSEL - Comparator signal selector for - inverting input INM - 4 - 4 - - - COMP_EN - COMP enable bit - 0 - 1 - - - - - FR - FR - Comparator Filter - register - 0x4 - 0x20 - read-write - 0x00000000 - - - FLTCNT - Comparator filter and counter - 16 - 16 - - - FLTEN - Filter enable bit - 0 - 1 - - - - - - - RCC - Reset and clock control - RCC - 0x40021000 - - 0x0 - 0x400 - registers - - - RCC - RCC global Interrupt - 4 - - - - CR - CR - Clock control register - 0x0 - 0x20 - read-write - 0x00000100 - - - PLLRDY - PLL clock ready flag - 25 - 1 - - - PLLON - PLL enable - 24 - 1 - - - CSSON - Clock security system - enable - 19 - 1 - - - HSEBYP - HSE crystal oscillator - bypass - 18 - 1 - - - HSERDY - HSE clock ready flag - 17 - 1 - - - HSEON - HSE clock enable - 16 - 1 - - - HSIDIV - HSI16 clock division - factor - 11 - 3 - - - HSIRDY - HSI16 clock ready flag - 10 - 1 - - - HSIKERON - HSI16 always enable for peripheral - kernels - 9 - 1 - - - HSION - HSI16 clock enable - 8 - 1 - - - - - ICSCR - ICSCR - Internal clock sources calibration - register - 0x4 - 0x20 - 0x10000000 - - - LSI_STARTUP - LSI startup time - 26 - 2 - read-write - - - LSI_TRIM - LSI clock trimming - 16 - 9 - read-write - - - HSI_FS - HSI frequency selection - 13 - 3 - read-write - - - HSI_TRIM - HSI clock trimming - 0 - 13 - read-write - - - - - CFGR - CFGR - Clock configuration register - 0x8 - 0x20 - 0x00000000 - - - MCOPRE - Microcontroller clock output - prescaler - 28 - 3 - read-write - - - MCOSEL - Microcontroller clock - output - 24 - 3 - read-write - - - PPRE - APB prescaler - 12 - 3 - read-write - - - HPRE - AHB prescaler - 8 - 4 - read-write - - - SWS - System clock switch status - 3 - 3 - read-only - - - SW - System clock switch - 0 - 3 - read-write - - - - - PLLCFGR - PLLCFGR - PLL configuration register - 0xC - 0x20 - 0x00000000 - - - PLLSRC - PLL clock source selection - 0 - 1 - read-write - - - - - ECSCR - ECSCR - External clock source control register - 0x10 - 0x20 - 0x00000000 - - - LSE_DRIVER - LSE clock driver selection - 16 - 2 - read-write - - - HSE_FREQ - HSE clock freqency selection - 2 - 2 - read-write - - - - - CIER - CIER - Clock interrupt enable - register - 0x18 - 0x20 - read-write - 0x00000000 - - - PLLRDYIE - PLL ready interrupt enable - 5 - 1 - - - HSERDYIE - HSE ready interrupt enable - 4 - 1 - - - HSIRDYIE - HSI ready interrupt enable - 3 - 1 - - - LSERDYIE - LSE ready interrupt enable - 1 - 1 - - - LSIRDYIE - LSI ready interrupt enable - 0 - 1 - - - - - CIFR - CIFR - Clock interrupt flag register - 0x1C - 0x20 - read-only - 0x00000000 - - - LSECSSF - LSE clock secure system interrupt flag - 9 - 1 - - - CSSF - HSE clock secure system interrupt flag - 8 - 1 - - - PLLRDYF - PLL ready interrupt flag - 5 - 1 - - - HSERDYF - HSE ready interrupt flag - 4 - 1 - - - HSIRDYF - HSI ready interrupt flag - 3 - 1 - - - LSERDYF - LSE ready interrupt flag - 1 - 1 - - - LSIRDYF - LSI ready interrupt flag - 0 - 1 - - - - - CICR - CICR - Clock interrupt clear register - 0x20 - 0x20 - write-only - 0x00000000 - - - LSECSSC - LSE clock secure system interrupt flag clear - 9 - 1 - - - CSSC - clock secure system interrupt flag clear - 8 - 1 - - - PLLRDYC - PLL ready interrupt clear - 5 - 1 - - - HSERDYC - HSE ready interrupt clear - 4 - 1 - - - HSIRDYC - HSI ready interrupt clear - 3 - 1 - - - LSERDYC - LSE ready interrupt clear - 1 - 1 - - - LSIRDYC - LSI ready interrupt clear - 0 - 1 - - - - - IOPRSTR - IOPRSTR - GPIO reset register - 0x24 - 0x20 - read-write - 0x00000000 - - - GPIOFRST - I/O port F reset - 5 - 1 - - - GPIOBRST - I/O port B reset - 1 - 1 - - - GPIOARST - I/O port A reset - 0 - 1 - - - - - AHBRSTR - AHBRSTR - AHB peripheral reset register - 0x28 - 0x20 - read-write - 0x00000000 - - - CRCRST - CRC reset - 12 - 1 - - - DMARST - DMA reset - 0 - 1 - - - - - APBRSTR1 - APBRSTR1 - APB peripheral reset register - 1 - 0x2C - 0x20 - read-write - 0x00000000 - - - LPTIMRST - Low Power Timer reset - 31 - 1 - - - PWRRST - Power interface reset - 28 - 1 - - - DBGRST - Debug support reset - 27 - 1 - - - I2CRST - I2C reset - 21 - 1 - - - USART2RST - USART2 reset - 17 - 1 - - - SPI2RST - SPI2 reset - 14 - 1 - - - TIM3RST - TIM3 timer reset - 1 - 1 - - - - - APBRSTR2 - APBRSTR2 - APB peripheral reset register - 2 - 0x30 - 0x20 - read-write - 0x00000000 - - - LEDRST - LED reset - 23 - 1 - - - COMP2RST - COMP2 reset - 22 - 1 - - - COMP1RST - COMP1 reset - 21 - 1 - - - ADCRST - ADC reset - 20 - 1 - - - TIM17RST - TIM17 timer reset - 18 - 1 - - - TIM16RST - TIM16 timer reset - 17 - 1 - - - TIM14RST - TIM14 timer reset - 15 - 1 - - - USART1RST - USART1 reset - 14 - 1 - - - SPI1RST - SPI1 reset - 12 - 1 - - - TIM1RST - TIM1 timer reset - 11 - 1 - - - SYSCFGRST - SYSCFG and COMP - reset - 0 - 1 - - - - - IOPENR - IOPENR - GPIO clock enable register - 0x34 - 0x20 - read-write - 0x00000000 - - - GPIOFEN - I/O port F clock enable - 5 - 1 - - - GPIOBEN - I/O port B clock enable - 1 - 1 - - - GPIOAEN - I/O port A clock enable - 0 - 1 - - - - - AHBENR - AHBENR - AHB peripheral clock enable - register - 0x38 - 0x20 - read-write - 0x00000000 - - - CRCEN - CRC clock enable - 12 - 1 - - - SRAMEN - SRAM memory interface clock - enable - 9 - 1 - - - FLASHEN - Flash memory interface clock - enable - 8 - 1 - - - DMAEN - DMA clock enable - 0 - 1 - - - - - APBENR1 - APBENR1 - APB peripheral clock enable register - 1 - 0x3C - 0x20 - read-write - 0x00000000 - - - LPTIMEN - LPTIM clock enable - 31 - 1 - - - PWREN - Power interface clock - enable - 28 - 1 - - - DBGEN - Debug support clock enable - 27 - 1 - - - I2CEN - I2C clock enable - 21 - 1 - - - USART2EN - USART2 clock enable - 17 - 1 - - - SPI2EN - SPI2 clock enable - 14 - 1 - - - WWDGEN - WWDG clock enable - 11 - 1 - - - RTCAPBEN - RTC APB clock enable - 10 - 1 - - - TIM3EN - TIM3 timer clock enable - 1 - 1 - - - - - APBENR2 - APBENR2 - APB peripheral clock enable register - 2 - 0x40 - 0x20 - read-write - 0x00000000 - - - LEDEN - LED clock enable - 23 - 1 - - - COMP2EN - COMP2 clock enable - 22 - 1 - - - COMP1EN - COMP1 clock enable - 21 - 1 - - - ADCEN - ADC clock enable - 20 - 1 - - - TIM17EN - TIM16 timer clock enable - 18 - 1 - - - TIM16EN - TIM16 timer clock enable - 17 - 1 - - - TIM14EN - TIM14 timer clock enable - 15 - 1 - - - USART1EN - USART1 clock enable - 14 - 1 - - - SPI1EN - SPI1 clock enable - 12 - 1 - - - TIM1EN - TIM1 timer clock enable - 11 - 1 - - - SYSCFGEN - SYSCFG, COMP and VREFBUF clock - enable - 0 - 1 - - - - - CCIPR - CCIPR - Peripherals independent clock configuration - register - 0x54 - 0x20 - read-write - 0x00000000 - - - LPTIM1SEL - LPTIM1 clock source - selection - 18 - 2 - - - COMP2SEL - COMP2 clock source - selection - 9 - 1 - - - COMP1SEL - COMP1 clock source - selection - 8 - 1 - - - PVDSEL - PVD detect clock source - selection - 7 - 1 - - - - - BDCR - BDCR - RTC domain control register - 0x5C - 0x20 - read-write - 0x00000000 - - - LSCOSEL - Low-speed clock output - selection - 25 - 1 - - - LSCOEN - Low-speed clock output (LSCO) - enable - 24 - 1 - - - BDRST - RTC domain software reset - 16 - 1 - - - RTCEN - RTC clock source enable - 15 - 1 - - - RTCSEL - RTC clock source selection - 8 - 2 - - - LSECSSD - LSE CSS detect - 6 - 1 - - - LSECSSON - LSE CSS enable - 5 - 1 - - - LSEBYP - LSE oscillator bypass - 2 - 1 - - - LSERDY - LSE oscillator ready - 1 - 1 - - - LSEON - LSE oscillator enable - 0 - 1 - - - - - CSR - CSR - Control/status register - 0x60 - 0x20 - read-write - 0x00000000 - - - WWDGRSTF - Window watchdog reset flag - 30 - 1 - - - IWDGRSTF - Independent window watchdog reset - flag - 29 - 1 - - - SFTRSTF - Software reset flag - 28 - 1 - - - PWRRSTF - BOR or POR/PDR flag - 27 - 1 - - - PINRSTF - Pin reset flag - 26 - 1 - - - OBLRSTF - Option byte loader reset - flag - 25 - 1 - - - RMVF - Remove reset flags - 23 - 1 - - - LSIRDY - LSI oscillator ready - 1 - 1 - - - LSION - LSI oscillator enable - 0 - 1 - - - - - - - PWR - Power control - PWR - 0x40007000 - - 0x0 - 0x400 - registers - - - - CR1 - CR1 - Power control register 1 - 0x0 - 0x20 - read-write - 0x00030000 - - - HSION_CTRL - HSI open time control - 19 - 1 - - - SRAM_RETV - SRAM retention voltage control - 16 - 3 - - - LPR - Low-power run - 14 - 1 - - - FLS_SLPTIME - Flash wait time after wakeup from the stop mode - 12 - 2 - - - MRRDY_TIME - Time selection wakeup from LP to VR - 10 - 2 - - - VOS - Voltage scaling range - selection - 9 - 1 - - - DBP - Disable backup domain write - protection - 8 - 1 - - - BIAS_CR_SEL - MR Bias current selection - 4 - 1 - - - BIAS_CR - MR Bias current - 0 - 4 - - - - - CR2 - CR2 - Power control register 2 - 0x4 - 0x20 - read-write - 0x00000500 - - - FLT_TIME - Digital filter time configuration - 9 - 3 - - - FLTEN - Digital filter enable - 8 - 1 - - - PVDT - Power voltage detector threshold - selection - 4 - 3 - - - SRCSEL - Power voltage detector volatage - selection - 2 - 1 - - - PVDE - Power voltage detector - enable - 0 - 1 - - - - - SR - SR - Power status register - 0x14 - 0x20 - read-only - 0x00000000 - - - PVDO - PVD output - 11 - 1 - - - - - - - GPIOA - General-purpose I/Os - GPIO - 0x50000000 - - 0x0 - 0x400 - registers - - - - MODER - MODER - GPIO port mode register - 0x0 - 0x20 - read-write - 0xEBFFFFFF - - - MODE15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - MODE14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - MODE13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - MODE12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - MODE11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - MODE10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - MODE9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - MODE8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - MODE7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - MODE6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - MODE5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - MODE4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - MODE3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - MODE2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - MODE1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - MODE0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - OTYPER - OTYPER - GPIO port output type register - 0x4 - 0x20 - read-write - 0x00000000 - - - OT15 - Port x configuration bits (y = - 0..15) - 15 - 1 - - - OT14 - Port x configuration bits (y = - 0..15) - 14 - 1 - - - OT13 - Port x configuration bits (y = - 0..15) - 13 - 1 - - - OT12 - Port x configuration bits (y = - 0..15) - 12 - 1 - - - OT11 - Port x configuration bits (y = - 0..15) - 11 - 1 - - - OT10 - Port x configuration bits (y = - 0..15) - 10 - 1 - - - OT9 - Port x configuration bits (y = - 0..15) - 9 - 1 - - - OT8 - Port x configuration bits (y = - 0..15) - 8 - 1 - - - OT7 - Port x configuration bits (y = - 0..15) - 7 - 1 - - - OT6 - Port x configuration bits (y = - 0..15) - 6 - 1 - - - OT5 - Port x configuration bits (y = - 0..15) - 5 - 1 - - - OT4 - Port x configuration bits (y = - 0..15) - 4 - 1 - - - OT3 - Port x configuration bits (y = - 0..15) - 3 - 1 - - - OT2 - Port x configuration bits (y = - 0..15) - 2 - 1 - - - OT1 - Port x configuration bits (y = - 0..15) - 1 - 1 - - - OT0 - Port x configuration bits (y = - 0..15) - 0 - 1 - - - - - OSPEEDR - OSPEEDR - GPIO port output speed - register - 0x8 - 0x20 - read-write - 0x0C000000 - - - OSPEED15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - OSPEED14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - OSPEED13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - OSPEED12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - OSPEED11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - OSPEED10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - OSPEED9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - OSPEED8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - OSPEED7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - OSPEED6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - OSPEED5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - OSPEED4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - OSPEED3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - OSPEED2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - OSPEED1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - OSPEED0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - PUPDR - PUPDR - GPIO port pull-up/pull-down - register - 0xC - 0x20 - read-write - 0x24000000 - - - PUPD15 - Port x configuration bits (y = - 0..15) - 30 - 2 - - - PUPD14 - Port x configuration bits (y = - 0..15) - 28 - 2 - - - PUPD13 - Port x configuration bits (y = - 0..15) - 26 - 2 - - - PUPD12 - Port x configuration bits (y = - 0..15) - 24 - 2 - - - PUPD11 - Port x configuration bits (y = - 0..15) - 22 - 2 - - - PUPD10 - Port x configuration bits (y = - 0..15) - 20 - 2 - - - PUPD9 - Port x configuration bits (y = - 0..15) - 18 - 2 - - - PUPD8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - PUPD7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - PUPD6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - PUPD5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - PUPD4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - PUPD3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - PUPD2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - PUPD1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - PUPD0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - IDR - IDR - GPIO port input data register - 0x10 - 0x20 - read-only - 0x00000000 - - - ID15 - Port input data (y = - 0..15) - 15 - 1 - - - ID14 - Port input data (y = - 0..15) - 14 - 1 - - - ID13 - Port input data (y = - 0..15) - 13 - 1 - - - ID12 - Port input data (y = - 0..15) - 12 - 1 - - - ID11 - Port input data (y = - 0..15) - 11 - 1 - - - ID10 - Port input data (y = - 0..15) - 10 - 1 - - - ID9 - Port input data (y = - 0..15) - 9 - 1 - - - ID8 - Port input data (y = - 0..15) - 8 - 1 - - - ID7 - Port input data (y = - 0..15) - 7 - 1 - - - ID6 - Port input data (y = - 0..15) - 6 - 1 - - - ID5 - Port input data (y = - 0..15) - 5 - 1 - - - ID4 - Port input data (y = - 0..15) - 4 - 1 - - - ID3 - Port input data (y = - 0..15) - 3 - 1 - - - ID2 - Port input data (y = - 0..15) - 2 - 1 - - - ID1 - Port input data (y = - 0..15) - 1 - 1 - - - ID0 - Port input data (y = - 0..15) - 0 - 1 - - - - - ODR - ODR - GPIO port output data register - 0x14 - 0x20 - read-write - 0x00000000 - - - OD15 - Port output data (y = - 0..15) - 15 - 1 - - - OD14 - Port output data (y = - 0..15) - 14 - 1 - - - OD13 - Port output data (y = - 0..15) - 13 - 1 - - - OD12 - Port output data (y = - 0..15) - 12 - 1 - - - OD11 - Port output data (y = - 0..15) - 11 - 1 - - - OD10 - Port output data (y = - 0..15) - 10 - 1 - - - OD9 - Port output data (y = - 0..15) - 9 - 1 - - - OD8 - Port output data (y = - 0..15) - 8 - 1 - - - OD7 - Port output data (y = - 0..15) - 7 - 1 - - - OD6 - Port output data (y = - 0..15) - 6 - 1 - - - OD5 - Port output data (y = - 0..15) - 5 - 1 - - - OD4 - Port output data (y = - 0..15) - 4 - 1 - - - OD3 - Port output data (y = - 0..15) - 3 - 1 - - - OD2 - Port output data (y = - 0..15) - 2 - 1 - - - OD1 - Port output data (y = - 0..15) - 1 - 1 - - - OD0 - Port output data (y = - 0..15) - 0 - 1 - - - - - BSRR - BSRR - GPIO port bit set/reset - register - 0x18 - 0x20 - write-only - 0x00000000 - - - BR15 - Port x reset bit y (y = - 0..15) - 31 - 1 - - - BR14 - Port x reset bit y (y = - 0..15) - 30 - 1 - - - BR13 - Port x reset bit y (y = - 0..15) - 29 - 1 - - - BR12 - Port x reset bit y (y = - 0..15) - 28 - 1 - - - BR11 - Port x reset bit y (y = - 0..15) - 27 - 1 - - - BR10 - Port x reset bit y (y = - 0..15) - 26 - 1 - - - BR9 - Port x reset bit y (y = - 0..15) - 25 - 1 - - - BR8 - Port x reset bit y (y = - 0..15) - 24 - 1 - - - BR7 - Port x reset bit y (y = - 0..15) - 23 - 1 - - - BR6 - Port x reset bit y (y = - 0..15) - 22 - 1 - - - BR5 - Port x reset bit y (y = - 0..15) - 21 - 1 - - - BR4 - Port x reset bit y (y = - 0..15) - 20 - 1 - - - BR3 - Port x reset bit y (y = - 0..15) - 19 - 1 - - - BR2 - Port x reset bit y (y = - 0..15) - 18 - 1 - - - BR1 - Port x reset bit y (y = - 0..15) - 17 - 1 - - - BR0 - Port x set bit y (y= - 0..15) - 16 - 1 - - - BS15 - Port x set bit y (y= - 0..15) - 15 - 1 - - - BS14 - Port x set bit y (y= - 0..15) - 14 - 1 - - - BS13 - Port x set bit y (y= - 0..15) - 13 - 1 - - - BS12 - Port x set bit y (y= - 0..15) - 12 - 1 - - - BS11 - Port x set bit y (y= - 0..15) - 11 - 1 - - - BS10 - Port x set bit y (y= - 0..15) - 10 - 1 - - - BS9 - Port x set bit y (y= - 0..15) - 9 - 1 - - - BS8 - Port x set bit y (y= - 0..15) - 8 - 1 - - - BS7 - Port x set bit y (y= - 0..15) - 7 - 1 - - - BS6 - Port x set bit y (y= - 0..15) - 6 - 1 - - - BS5 - Port x set bit y (y= - 0..15) - 5 - 1 - - - BS4 - Port x set bit y (y= - 0..15) - 4 - 1 - - - BS3 - Port x set bit y (y= - 0..15) - 3 - 1 - - - BS2 - Port x set bit y (y= - 0..15) - 2 - 1 - - - BS1 - Port x set bit y (y= - 0..15) - 1 - 1 - - - BS0 - Port x set bit y (y= - 0..15) - 0 - 1 - - - - - LCKR - LCKR - GPIO port configuration lock - register - 0x1C - 0x20 - read-write - 0x00000000 - - - LCKK - Port x lock bit y (y= - 0..15) - 16 - 1 - - - LCK15 - Port x lock bit y (y= - 0..15) - 15 - 1 - - - LCK14 - Port x lock bit y (y= - 0..15) - 14 - 1 - - - LCK13 - Port x lock bit y (y= - 0..15) - 13 - 1 - - - LCK12 - Port x lock bit y (y= - 0..15) - 12 - 1 - - - LCK11 - Port x lock bit y (y= - 0..15) - 11 - 1 - - - LCK10 - Port x lock bit y (y= - 0..15) - 10 - 1 - - - LCK9 - Port x lock bit y (y= - 0..15) - 9 - 1 - - - LCK8 - Port x lock bit y (y= - 0..15) - 8 - 1 - - - LCK7 - Port x lock bit y (y= - 0..15) - 7 - 1 - - - LCK6 - Port x lock bit y (y= - 0..15) - 6 - 1 - - - LCK5 - Port x lock bit y (y= - 0..15) - 5 - 1 - - - LCK4 - Port x lock bit y (y= - 0..15) - 4 - 1 - - - LCK3 - Port x lock bit y (y= - 0..15) - 3 - 1 - - - LCK2 - Port x lock bit y (y= - 0..15) - 2 - 1 - - - LCK1 - Port x lock bit y (y= - 0..15) - 1 - 1 - - - LCK0 - Port x lock bit y (y= - 0..15) - 0 - 1 - - - - - AFRL - AFRL - GPIO alternate function low - register - 0x20 - 0x20 - read-write - 0x00000000 - - - AFSEL7 - Alternate function selection for port x - bit y (y = 0..7) - 28 - 4 - - - AFSEL6 - Alternate function selection for port x - bit y (y = 0..7) - 24 - 4 - - - AFSEL5 - Alternate function selection for port x - bit y (y = 0..7) - 20 - 4 - - - AFSEL4 - Alternate function selection for port x - bit y (y = 0..7) - 16 - 4 - - - AFSEL3 - Alternate function selection for port x - bit y (y = 0..7) - 12 - 4 - - - AFSEL2 - Alternate function selection for port x - bit y (y = 0..7) - 8 - 4 - - - AFSEL1 - Alternate function selection for port x - bit y (y = 0..7) - 4 - 4 - - - AFSEL0 - Alternate function selection for port x - bit y (y = 0..7) - 0 - 4 - - - - - AFRH - AFRH - GPIO alternate function high - register - 0x24 - 0x20 - read-write - 0x00000000 - - - AFSEL15 - Alternate function selection for port x - bit y (y = 8..15) - 28 - 4 - - - AFSEL14 - Alternate function selection for port x - bit y (y = 8..15) - 24 - 4 - - - AFSEL13 - Alternate function selection for port x - bit y (y = 8..15) - 20 - 4 - - - AFSEL12 - Alternate function selection for port x - bit y (y = 8..15) - 16 - 4 - - - AFSEL11 - Alternate function selection for port x - bit y (y = 8..15) - 12 - 4 - - - AFSEL10 - Alternate function selection for port x - bit y (y = 8..15) - 8 - 4 - - - AFSEL9 - Alternate function selection for port x - bit y (y = 8..15) - 4 - 4 - - - AFSEL8 - Alternate function selection for port x - bit y (y = 8..15) - 0 - 4 - - - - - BRR - BRR - port bit reset register - 0x28 - 0x20 - write-only - 0x00000000 - - - BR15 - Port Reset bit - 15 - 1 - - - BR14 - Port Reset bit - 14 - 1 - - - BR13 - Port Reset bit - 13 - 1 - - - BR12 - Port Reset bit - 12 - 1 - - - BR11 - Port Reset bit - 11 - 1 - - - BR10 - Port Reset bit - 10 - 1 - - - BR9 - Port Reset bit - 9 - 1 - - - BR8 - Port Reset bit - 8 - 1 - - - BR7 - Port Reset bit - 7 - 1 - - - BR6 - Port Reset bit - 6 - 1 - - - BR5 - Port Reset bit - 5 - 1 - - - BR4 - Port Reset bit - 4 - 1 - - - BR3 - Port Reset bit - 3 - 1 - - - BR2 - Port Reset bit - 2 - 1 - - - BR1 - Port Reset bit - 1 - 1 - - - BR0 - Port Reset bit - 0 - 1 - - - - - - - GPIOB - General-purpose I/Os - GPIO - 0x50000400 - - 0x0 - 0x400 - registers - - - - MODER - MODER - GPIO port mode register - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - MODE8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - MODE7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - MODE6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - MODE5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - MODE4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - MODE3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - MODE2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - MODE1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - MODE0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - OTYPER - OTYPER - GPIO port output type register - 0x4 - 0x20 - read-write - 0x00000000 - - - OT8 - Port x configuration bits (y = - 0..15) - 8 - 1 - - - OT7 - Port x configuration bits (y = - 0..15) - 7 - 1 - - - OT6 - Port x configuration bits (y = - 0..15) - 6 - 1 - - - OT5 - Port x configuration bits (y = - 0..15) - 5 - 1 - - - OT4 - Port x configuration bits (y = - 0..15) - 4 - 1 - - - OT3 - Port x configuration bits (y = - 0..15) - 3 - 1 - - - OT2 - Port x configuration bits (y = - 0..15) - 2 - 1 - - - OT1 - Port x configuration bits (y = - 0..15) - 1 - 1 - - - OT0 - Port x configuration bits (y = - 0..15) - 0 - 1 - - - - - OSPEEDR - OSPEEDR - GPIO port output speed - register - 0x8 - 0x20 - read-write - 0x00000000 - - - OSPEED8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - OSPEED7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - OSPEED6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - OSPEED5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - OSPEED4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - OSPEED3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - OSPEED2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - OSPEED1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - OSPEED0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - PUPDR - PUPDR - GPIO port pull-up/pull-down - register - 0xC - 0x20 - read-write - 0x00000000 - - - PUPD8 - Port x configuration bits (y = - 0..15) - 16 - 2 - - - PUPD7 - Port x configuration bits (y = - 0..15) - 14 - 2 - - - PUPD6 - Port x configuration bits (y = - 0..15) - 12 - 2 - - - PUPD5 - Port x configuration bits (y = - 0..15) - 10 - 2 - - - PUPD4 - Port x configuration bits (y = - 0..15) - 8 - 2 - - - PUPD3 - Port x configuration bits (y = - 0..15) - 6 - 2 - - - PUPD2 - Port x configuration bits (y = - 0..15) - 4 - 2 - - - PUPD1 - Port x configuration bits (y = - 0..15) - 2 - 2 - - - PUPD0 - Port x configuration bits (y = - 0..15) - 0 - 2 - - - - - IDR - IDR - GPIO port input data register - 0x10 - 0x20 - read-only - 0x00000000 - - - ID8 - Port input data (y = - 0..15) - 8 - 1 - - - ID7 - Port input data (y = - 0..15) - 7 - 1 - - - ID6 - Port input data (y = - 0..15) - 6 - 1 - - - ID5 - Port input data (y = - 0..15) - 5 - 1 - - - ID4 - Port input data (y = - 0..15) - 4 - 1 - - - ID3 - Port input data (y = - 0..15) - 3 - 1 - - - ID2 - Port input data (y = - 0..15) - 2 - 1 - - - ID1 - Port input data (y = - 0..15) - 1 - 1 - - - ID0 - Port input data (y = - 0..15) - 0 - 1 - - - - - ODR - ODR - GPIO port output data register - 0x14 - 0x20 - read-write - 0x00000000 - - - OD8 - Port output data (y = - 0..15) - 8 - 1 - - - OD7 - Port output data (y = - 0..15) - 7 - 1 - - - OD6 - Port output data (y = - 0..15) - 6 - 1 - - - OD5 - Port output data (y = - 0..15) - 5 - 1 - - - OD4 - Port output data (y = - 0..15) - 4 - 1 - - - OD3 - Port output data (y = - 0..15) - 3 - 1 - - - OD2 - Port output data (y = - 0..15) - 2 - 1 - - - OD1 - Port output data (y = - 0..15) - 1 - 1 - - - OD0 - Port output data (y = - 0..15) - 0 - 1 - - - - - BSRR - BSRR - GPIO port bit set/reset - register - 0x18 - 0x20 - write-only - 0x00000000 - - - BR8 - Port x reset bit y (y = - 0..15) - 24 - 1 - - - BR7 - Port x reset bit y (y = - 0..15) - 23 - 1 - - - BR6 - Port x reset bit y (y = - 0..15) - 22 - 1 - - - BR5 - Port x reset bit y (y = - 0..15) - 21 - 1 - - - BR4 - Port x reset bit y (y = - 0..15) - 20 - 1 - - - BR3 - Port x reset bit y (y = - 0..15) - 19 - 1 - - - BR2 - Port x reset bit y (y = - 0..15) - 18 - 1 - - - BR1 - Port x reset bit y (y = - 0..15) - 17 - 1 - - - BR0 - Port x set bit y (y= - 0..15) - 16 - 1 - - - BS8 - Port x set bit y (y= - 0..15) - 8 - 1 - - - BS7 - Port x set bit y (y= - 0..15) - 7 - 1 - - - BS6 - Port x set bit y (y= - 0..15) - 6 - 1 - - - BS5 - Port x set bit y (y= - 0..15) - 5 - 1 - - - BS4 - Port x set bit y (y= - 0..15) - 4 - 1 - - - BS3 - Port x set bit y (y= - 0..15) - 3 - 1 - - - BS2 - Port x set bit y (y= - 0..15) - 2 - 1 - - - BS1 - Port x set bit y (y= - 0..15) - 1 - 1 - - - BS0 - Port x set bit y (y= - 0..15) - 0 - 1 - - - - - LCKR - LCKR - GPIO port configuration lock - register - 0x1C - 0x20 - read-write - 0x00000000 - - - LCKK - Port x lock bit y (y= - 0..15) - 16 - 1 - - - LCK8 - Port x lock bit y (y= - 0..15) - 8 - 1 - - - LCK7 - Port x lock bit y (y= - 0..15) - 7 - 1 - - - LCK6 - Port x lock bit y (y= - 0..15) - 6 - 1 - - - LCK5 - Port x lock bit y (y= - 0..15) - 5 - 1 - - - LCK4 - Port x lock bit y (y= - 0..15) - 4 - 1 - - - LCK3 - Port x lock bit y (y= - 0..15) - 3 - 1 - - - LCK2 - Port x lock bit y (y= - 0..15) - 2 - 1 - - - LCK1 - Port x lock bit y (y= - 0..15) - 1 - 1 - - - LCK0 - Port x lock bit y (y= - 0..15) - 0 - 1 - - - - - AFRL - AFRL - GPIO alternate function low - register - 0x20 - 0x20 - read-write - 0x00000000 - - - AFSEL7 - Alternate function selection for port x - bit y (y = 0..7) - 28 - 4 - - - AFSEL6 - Alternate function selection for port x - bit y (y = 0..7) - 24 - 4 - - - AFSEL5 - Alternate function selection for port x - bit y (y = 0..7) - 20 - 4 - - - AFSEL4 - Alternate function selection for port x - bit y (y = 0..7) - 16 - 4 - - - AFSEL3 - Alternate function selection for port x - bit y (y = 0..7) - 12 - 4 - - - AFSEL2 - Alternate function selection for port x - bit y (y = 0..7) - 8 - 4 - - - AFSEL1 - Alternate function selection for port x - bit y (y = 0..7) - 4 - 4 - - - AFSEL0 - Alternate function selection for port x - bit y (y = 0..7) - 0 - 4 - - - - - AFRH - AFRH - GPIO alternate function high - register - 0x24 - 0x20 - read-write - 0x00000000 - - - AFSEL15 - Alternate function selection for port x - bit y (y = 8..15) - 28 - 4 - - - AFSEL14 - Alternate function selection for port x - bit y (y = 8..15) - 24 - 4 - - - AFSEL13 - Alternate function selection for port x - bit y (y = 8..15) - 20 - 4 - - - AFSEL12 - Alternate function selection for port x - bit y (y = 8..15) - 16 - 4 - - - AFSEL11 - Alternate function selection for port x - bit y (y = 8..15) - 12 - 4 - - - AFSEL10 - Alternate function selection for port x - bit y (y = 8..15) - 8 - 4 - - - AFSEL9 - Alternate function selection for port x - bit y (y = 8..15) - 4 - 4 - - - AFSEL8 - Alternate function selection for port x - bit y (y = 8..15) - 0 - 4 - - - - - BRR - BRR - port bit reset register - 0x28 - 0x20 - write-only - 0x00000000 - - - BR8 - Port Reset bit - 8 - 1 - - - BR7 - Port Reset bit - 7 - 1 - - - BR6 - Port Reset bit - 6 - 1 - - - BR5 - Port Reset bit - 5 - 1 - - - BR4 - Port Reset bit - 4 - 1 - - - BR3 - Port Reset bit - 3 - 1 - - - BR2 - Port Reset bit - 2 - 1 - - - BR1 - Port Reset bit - 1 - 1 - - - BR0 - Port Reset bit - 0 - 1 - - - - - - - GPIOF - 0x50001400 - - - EXTI - External interrupt/event - controller - EXTI - 0x40021800 - - 0x0 - 0x400 - registers - - - PVD - PVD Interrupt through EXTI Lines 16 - 1 - - - EXTI0_1 - EXTI Line 0 and 1 Interrupt - 5 - - - EXTI2_3 - EXTI Line 2 and 3 Interrupt - 6 - - - EXTI4_15 - EXTI Line 4 to 15 Interrupt - 7 - - - - RTSR - RTSR - EXTI rising trigger selection - register - 0x0 - 0x20 - read-write - 0x00000000 - - - RT18 - Rising trigger event configuration bit - of Configurable Event input - 18 - 1 - - - RT17 - Rising trigger event configuration bit - of Configurable Event input - 17 - 1 - - - RT16 - Rising trigger event configuration bit - of Configurable Event input - 16 - 1 - - - RT15 - Rising trigger event configuration bit - of Configurable Event input - 15 - 1 - - - RT14 - Rising trigger event configuration bit - of Configurable Event input - 14 - 1 - - - RT13 - Rising trigger event configuration bit - of Configurable Event input - 13 - 1 - - - RT12 - Rising trigger event configuration bit - of Configurable Event input - 12 - 1 - - - RT11 - Rising trigger event configuration bit - of Configurable Event input - 11 - 1 - - - RT10 - Rising trigger event configuration bit - of Configurable Event input - 10 - 1 - - - RT9 - Rising trigger event configuration bit - of Configurable Event input - 9 - 1 - - - RT8 - Rising trigger event configuration bit - of Configurable Event input - 8 - 1 - - - RT7 - Rising trigger event configuration bit - of Configurable Event input - 7 - 1 - - - RT6 - Rising trigger event configuration bit - of Configurable Event input - 6 - 1 - - - RT5 - Rising trigger event configuration bit - of Configurable Event input - 5 - 1 - - - RT4 - Rising trigger event configuration bit - of Configurable Event input - 4 - 1 - - - RT3 - Rising trigger event configuration bit - of Configurable Event input - 3 - 1 - - - RT2 - Rising trigger event configuration bit - of Configurable Event input - 2 - 1 - - - RT1 - Rising trigger event configuration bit - of Configurable Event input - 1 - 1 - - - RT0 - Rising trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - FTSR - FTSR - EXTI falling trigger selection - register - 0x4 - 0x20 - read-write - 0x00000000 - - - FT18 - Falling trigger event configuration bit - of Configurable Event input - 18 - 1 - - - FT17 - Falling trigger event configuration bit - of Configurable Event input - 17 - 1 - - - FT16 - Falling trigger event configuration bit - of Configurable Event input - 16 - 1 - - - FT15 - Falling trigger event configuration bit - of Configurable Event input - 15 - 1 - - - FT14 - Falling trigger event configuration bit - of Configurable Event input - 14 - 1 - - - FT13 - Falling trigger event configuration bit - of Configurable Event input - 13 - 1 - - - FT12 - Falling trigger event configuration bit - of Configurable Event input - 12 - 1 - - - FT11 - Falling trigger event configuration bit - of Configurable Event input - 11 - 1 - - - FT10 - Falling trigger event configuration bit - of Configurable Event input - 10 - 1 - - - FT9 - Falling trigger event configuration bit - of Configurable Event input - 9 - 1 - - - FT8 - Falling trigger event configuration bit - of Configurable Event input - 8 - 1 - - - FT7 - Falling trigger event configuration bit - of Configurable Event input - 7 - 1 - - - FT6 - Falling trigger event configuration bit - of Configurable Event input - 6 - 1 - - - FT5 - Falling trigger event configuration bit - of Configurable Event input - 5 - 1 - - - FT4 - Falling trigger event configuration bit - of Configurable Event input - 4 - 1 - - - FT3 - Falling trigger event configuration bit - of Configurable Event input - 3 - 1 - - - FT2 - Falling trigger event configuration bit - of Configurable Event input - 2 - 1 - - - FT1 - Falling trigger event configuration bit - of Configurable Event input - 1 - 1 - - - FT0 - Falling trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - SWIER - SWIER - EXTI software interrupt event - register - 0x8 - 0x20 - read-write - 0x00000000 - - - SWI18 - Rising trigger event configuration bit - of Configurable Event input - 18 - 1 - - - SWI17 - Rising trigger event configuration bit - of Configurable Event input - 17 - 1 - - - SWI16 - Rising trigger event configuration bit - of Configurable Event input - 16 - 1 - - - SWI15 - Rising trigger event configuration bit - of Configurable Event input - 15 - 1 - - - SWI14 - Rising trigger event configuration bit - of Configurable Event input - 14 - 1 - - - SWI13 - Rising trigger event configuration bit - of Configurable Event input - 13 - 1 - - - SWI12 - Rising trigger event configuration bit - of Configurable Event input - 12 - 1 - - - SWI11 - Rising trigger event configuration bit - of Configurable Event input - 11 - 1 - - - SWI10 - Rising trigger event configuration bit - of Configurable Event input - 10 - 1 - - - SWI9 - Rising trigger event configuration bit - of Configurable Event input - 9 - 1 - - - SWI8 - Rising trigger event configuration bit - of Configurable Event input - 8 - 1 - - - SWI7 - Rising trigger event configuration bit - of Configurable Event input - 7 - 1 - - - SWI6 - Rising trigger event configuration bit - of Configurable Event input - 6 - 1 - - - SWI5 - Rising trigger event configuration bit - of Configurable Event input - 5 - 1 - - - SWI4 - Rising trigger event configuration bit - of Configurable Event input - 4 - 1 - - - SWI3 - Rising trigger event configuration bit - of Configurable Event input - 3 - 1 - - - SWI2 - Rising trigger event configuration bit - of Configurable Event input - 2 - 1 - - - SWI1 - Rising trigger event configuration bit - of Configurable Event input - 1 - 1 - - - SWI0 - Rising trigger event configuration bit - of Configurable Event input - 0 - 1 - - - - - PR - PR - EXTI pending - register - 0xC - 0x20 - read-write - 0x00000000 - - - PR18 - configurable event inputs x rising edge - Pending bit. - 18 - 1 - - - PR17 - configurable event inputs x rising edge - Pending bit. - 17 - 1 - - - PR16 - configurable event inputs x rising edge - Pending bit. - 16 - 1 - - - PR15 - configurable event inputs x rising edge - Pending bit. - 15 - 1 - - - PR14 - configurable event inputs x rising edge - Pending bit. - 14 - 1 - - - PR13 - configurable event inputs x rising edge - Pending bit - 13 - 1 - - - PR12 - configurable event inputs x rising edge - Pending bit. - 12 - 1 - - - PR11 - configurable event inputs x rising edge - Pending bit. - 11 - 1 - - - PR10 - configurable event inputs x rising edge - Pending bit. - 10 - 1 - - - PR9 - configurable event inputs x rising edge - Pending bit. - 9 - 1 - - - PR8 - configurable event inputs x rising edge - Pending bit. - 8 - 1 - - - PR7 - configurable event inputs x rising edge - Pending bit. - 7 - 1 - - - PR6 - configurable event inputs x rising edge - Pending bit. - 6 - 1 - - - PR5 - configurable event inputs x rising edge - Pending bit. - 5 - 1 - - - PR4 - configurable event inputs x rising edge - Pending bit. - 4 - 1 - - - PR3 - configurable event inputs x rising edge - Pending bit. - 3 - 1 - - - PR2 - configurable event inputs x rising edge - Pending bit. - 2 - 1 - - - PR1 - configurable event inputs x rising edge - Pending bit. - 1 - 1 - - - PR0 - configurable event inputs x rising edge - Pending bit. - 0 - 1 - - - - - EXTICR1 - EXTICR1 - EXTI external interrupt selection - register - 0x60 - 0x20 - read-write - 0x00000000 - - - EXTI3 - GPIO port selection - 24 - 2 - - - EXTI2 - GPIO port selection - 16 - 2 - - - EXTI1 - GPIO port selection - 8 - 2 - - - EXTI0 - GPIO port selection - 0 - 2 - - - - - EXTICR2 - EXTICR2 - EXTI external interrupt selection - register - 0x64 - 0x20 - read-write - 0x00000000 - - - EXTI7 - GPIO port selection - 24 - 1 - - - EXTI6 - GPIO port selection - 16 - 1 - - - EXTI5 - GPIO port selection - 8 - 1 - - - EXTI4 - GPIO port selection - 0 - 2 - - - - - EXTICR3 - EXTICR3 - EXTI external interrupt selection - register - 0x68 - 0x20 - read-write - 0x00000000 - - - EXTI8 - GPIO port selection - 0 - 1 - - - - - IMR - IMR - EXTI CPU wakeup with interrupt mask - register - 0x80 - 0x20 - read-write - 0xFFF80000 - - - IM29 - CPU wakeup with interrupt mask on event - input - 29 - 1 - - - IM19 - CPU wakeup with interrupt mask on event - input - 19 - 1 - - - IM18 - CPU wakeup with interrupt mask on event - input - 18 - 1 - - - IM17 - CPU wakeup with interrupt mask on event - input - 17 - 1 - - - IM16 - CPU wakeup with interrupt mask on event - input - 16 - 1 - - - IM15 - CPU wakeup with interrupt mask on event - input - 15 - 1 - - - IM14 - CPU wakeup with interrupt mask on event - input - 14 - 1 - - - IM13 - CPU wakeup with interrupt mask on event - input - 13 - 1 - - - IM12 - CPU wakeup with interrupt mask on event - input - 12 - 1 - - - IM11 - CPU wakeup with interrupt mask on event - input - 11 - 1 - - - IM10 - CPU wakeup with interrupt mask on event - input - 10 - 1 - - - IM9 - CPU wakeup with interrupt mask on event - input - 9 - 1 - - - IM8 - CPU wakeup with interrupt mask on event - input - 8 - 1 - - - IM7 - CPU wakeup with interrupt mask on event - input - 7 - 1 - - - IM6 - CPU wakeup with interrupt mask on event - input - 6 - 1 - - - IM5 - CPU wakeup with interrupt mask on event - input - 5 - 1 - - - IM4 - CPU wakeup with interrupt mask on event - input - 4 - 1 - - - IM3 - CPU wakeup with interrupt mask on event - input - 3 - 1 - - - IM2 - CPU wakeup with interrupt mask on event - input - 2 - 1 - - - IM1 - CPU wakeup with interrupt mask on event - input - 1 - 1 - - - IM0 - CPU wakeup with interrupt mask on event - input - 0 - 1 - - - - - EMR - EMR - EXTI CPU wakeup with event mask - register - 0x84 - 0x20 - read-write - 0x00000000 - - - EM29 - CPU wakeup with event mask on event - input - 29 - 1 - - - EM19 - CPU wakeup with event mask on event - input - 19 - 1 - - - EM18 - CPU wakeup with event mask on event - input - 18 - 1 - - - EM17 - CPU wakeup with event mask on event - input - 17 - 1 - - - EM16 - CPU wakeup with event mask on event - input - 16 - 1 - - - EM15 - CPU wakeup with event mask on event - input - 15 - 1 - - - EM14 - CPU wakeup with event mask on event - input - 14 - 1 - - - EM13 - CPU wakeup with event mask on event - input - 13 - 1 - - - EM12 - CPU wakeup with event mask on event - input - 12 - 1 - - - EM11 - CPU wakeup with event mask on event - input - 11 - 1 - - - EM10 - CPU wakeup with event mask on event - input - 10 - 1 - - - EM9 - CPU wakeup with event mask on event - input - 9 - 1 - - - EM8 - CPU wakeup with event mask on event - input - 8 - 1 - - - EM7 - CPU wakeup with event mask on event - input - 7 - 1 - - - EM6 - CPU wakeup with event mask on event - input - 6 - 1 - - - EM5 - CPU wakeup with event mask on event - input - 5 - 1 - - - EM4 - CPU wakeup with event mask on event - input - 4 - 1 - - - EM3 - CPU wakeup with event mask on event - input - 3 - 1 - - - EM2 - CPU wakeup with event mask on event - input - 2 - 1 - - - EM1 - CPU wakeup with event mask on event - input - 1 - 1 - - - EM0 - CPU wakeup with event mask on event - input - 0 - 1 - - - - - - - LPTIM - Low power timer - LPTIM - 0x40007C00 - - 0x0 - 0x400 - registers - - - - ISR - ISR - Interrupt and Status Register - 0x0 - 0x20 - read-only - 0x00000000 - - - ARRM - Autoreload match - 1 - 1 - - - - - ICR - ICR - Interrupt Clear Register - 0x4 - 0x20 - write-only - 0x00000000 - - - ARRMCF - Autoreload match Clear - Flag - 1 - 1 - - - - - IER - IER - Interrupt Enable Register - 0x8 - 0x20 - read-write - 0x00000000 - - - ARRMIE - Autoreload match Interrupt - Enable - 1 - 1 - - - - - CFGR - CFGR - Configuration Register - 0xC - 0x20 - read-write - 0x00000000 - - - PRELOAD - Registers update mode - 22 - 1 - - - PRESC - Clock prescaler - 9 - 3 - - - - - CR - CR - Control Register - 0x10 - 0x20 - read-write - 0x00000000 - - - RSTARE - Reset after read enable - 4 - 1 - - - SNGSTRT - LPTIM start in single mode - 1 - 1 - - - ENABLE - LPTIM Enable - 0 - 1 - - - - - ARR - ARR - Autoreload Register - 0x18 - 0x20 - read-write - 0x00000001 - - - ARR - Auto reload value - 0 - 16 - - - - - CNT - CNT - Counter Register - 0x1C - 0x20 - read-only - 0x00000000 - - - CNT - Counter value - 0 - 16 - - - - - - - USART1 - Universal synchronous asynchronous receiver - transmitter - USART - 0x40013800 - - 0x0 - 0x400 - registers - - - USART1 - USART1 global Interrupt - 27 - - - - SR - SR - Status register - 0x0 - 0x20 - 0x00C0 - - - ABRRQ - Automate baudrate detection requeset - 12 - 1 - write-only - - - ABRE - Automate baudrate detection error flag - 11 - 1 - read-only - - - ABRF - Automate baudrate detection flag - 10 - 1 - read-only - - - CTS - CTS flag - 9 - 1 - read-write - - - TXE - Transmit data register - empty - 7 - 1 - read-only - - - TC - Transmission complete - 6 - 1 - read-write - - - RXNE - Read data register not - empty - 5 - 1 - read-write - - - IDLE - IDLE line detected - 4 - 1 - read-only - - - ORE - Overrun error - 3 - 1 - read-only - - - NE - Noise error flag - 2 - 1 - read-only - - - FE - Framing error - 1 - 1 - read-only - - - PE - Parity error - 0 - 1 - read-only - - - - - DR - DR - Data register - 0x4 - 0x20 - read-write - 0x00000000 - - - DR - Data value - 0 - 9 - - - - - BRR - BRR - Baud rate register - 0x8 - 0x20 - read-write - 0x0000 - - - DIV_Mantissa - mantissa of USARTDIV - 4 - 12 - - - DIV_Fraction - fraction of USARTDIV - 0 - 4 - - - - - CR1 - CR1 - Control register 1 - 0xC - 0x20 - read-write - 0x0000 - - - UE - USART enable - 13 - 1 - - - M - Word length - 12 - 1 - - - WAKE - Wakeup method - 11 - 1 - - - PCE - Parity control enable - 10 - 1 - - - PS - Parity selection - 9 - 1 - - - PEIE - PE interrupt enable - 8 - 1 - - - TXEIE - TXE interrupt enable - 7 - 1 - - - TCIE - Transmission complete interrupt - enable - 6 - 1 - - - RXNEIE - RXNE interrupt enable - 5 - 1 - - - IDLEIE - IDLE interrupt enable - 4 - 1 - - - TE - Transmitter enable - 3 - 1 - - - RE - Receiver enable - 2 - 1 - - - RWU - Receiver wakeup - 1 - 1 - - - SBK - Send break - 0 - 1 - - - - - CR2 - CR2 - Control register 2 - 0x10 - 0x20 - read-write - 0x0000 - - - STOP - STOP bits - 12 - 2 - - - CLKEN - Clock enable - 11 - 1 - - - CPOL - Clock polarity - 10 - 1 - - - CPHA - Clock phase - 9 - 1 - - - LBCL - Last bit clock pulse - 8 - 1 - - - ADD - Address of the USART node - 0 - 4 - - - - - CR3 - CR3 - Control register 3 - 0x14 - 0x20 - read-write - 0x0000 - - - ABRMOD - Auto baudrate mode - 13 - 2 - - - ABREN - Auto baudrate enable - 12 - 1 - - - OVER8 - Oversampling mode - 11 - 1 - - - CTSIE - CTS interrupt enable - 10 - 1 - - - CTSE - CTS enable - 9 - 1 - - - RTSE - RTS enable - 8 - 1 - - - DMAT - DMA enable transmitter - 7 - 1 - - - DMAR - DMA enable receiver - 6 - 1 - - - HDSEL - Half-duplex selection - 3 - 1 - - - IRLP - IrDA low-power - 2 - 1 - - - IREN - IrDA mode enable - 1 - 1 - - - EIE - Error interrupt enable - 0 - 1 - - - - - - - USART2 - 0x40004400 - - USART2 - USART2 global Interrupt - 28 - - - - RTC - Real time clock - RTC - 0x40002800 - - 0x0 - 0x400 - registers - - - RTC - RTC Interrupt through EXTI Lines 19 - 2 - - - - CRH - CRH - RTC Control Register High - 0x0 - 0x20 - read-write - 0x00000000 - - - OWIE - Overflow interrupt Enable - 2 - 1 - - - ALRIE - Alarm interrupt Enable - 1 - 1 - - - SECIE - Second interrupt Enable - 0 - 1 - - - - - CRL - CRL - RTC Control Register Low - 0x4 - 0x20 - 0x00000020 - - - RTOFF - RTC operation OFF - 5 - 1 - read-only - - - CNF - Configuration Flag - 4 - 1 - read-write - - - RSF - Registers Synchronized - Flag - 3 - 1 - read-write - - - OWF - Overflow Flag - 2 - 1 - read-write - - - ALRF - Alarm Flag - 1 - 1 - read-write - - - SECF - Second Flag - 0 - 1 - read-write - - - - - PRLH - PRLH - RTC Prescaler Load Register - High - 0x8 - 0x20 - write-only - 0x00000000 - - - PRLH - RTC Prescaler Load Register - High - 0 - 4 - - - - - PRLL - PRLL - RTC Prescaler Load Register - Low - 0xC - 0x20 - write-only - 0x8000 - - - PRLL - RTC Prescaler Divider Register - Low - 0 - 16 - - - - - DIVH - DIVH - RTC Prescaler Divider Register - High - 0x10 - 0x20 - read-only - 0x00000000 - - - DIVH - RTC prescaler divider register - high - 0 - 4 - - - - - DIVL - DIVL - RTC Prescaler Divider Register - Low - 0x14 - 0x20 - read-only - 0x8000 - - - DIVL - RTC prescaler divider register - Low - 0 - 16 - - - - - CNTH - CNTH - RTC Counter Register High - 0x18 - 0x20 - read-write - 0x00000000 - - - CNTH - RTC counter register high - 0 - 16 - - - - - CNTL - CNTL - RTC Counter Register Low - 0x1C - 0x20 - read-write - 0x00000000 - - - CNTL - RTC counter register Low - 0 - 16 - - - - - ALRH - ALRH - RTC Alarm Register High - 0x20 - 0x20 - write-only - 0xFFFF - - - ALRH - RTC alarm register high - 0 - 16 - - - - - ALRL - ALRL - RTC Alarm Register Low - 0x24 - 0x20 - write-only - 0xFFFF - - - ALRL - RTC alarm register low - 0 - 16 - - - - - RTCCR - RTCCR - RTC clock calibration - 0x2C - 0x20 - read-write - 0x0000 - - - ASOS - Alarm or second output selection - 9 - 1 - - - ASOE - Alarm or second output enable - 8 - 1 - - - CCO - Calibration clock output - 7 - 1 - - - CAL - Calibration value - 0 - 7 - - - - - - - IWDG - Independent watchdog - IWDG - 0x40003000 - - 0x0 - 0x400 - registers - - - - KR - KR - Key register (IWDG_KR) - 0x0 - 0x20 - write-only - 0x00000000 - - - KEY - Key value - 0 - 16 - - - - - PR - PR - Prescaler register (IWDG_PR) - 0x4 - 0x20 - read-write - 0x00000000 - - - PR - Prescaler divider - 0 - 3 - - - - - RLR - RLR - Reload register (IWDG_RLR) - 0x8 - 0x20 - read-write - 0x00000FFF - - - RL - Watchdog counter reload - value - 0 - 12 - - - - - SR - SR - Status register (IWDG_SR) - 0xC - 0x20 - read-only - 0x00000000 - - - WVU - Watchdog counter window value update - 2 - 1 - - - RVU - Watchdog counter reload value - update - 1 - 1 - - - PVU - Watchdog prescaler value - update - 0 - 1 - - - - - WINR - WINR - Window register (IWDG_SR) - 0x10 - 0x20 - read-only - 0x00000000 - - - WIN - window counter - 0 - 12 - - - - - - - WWDG - Window watchdog - WWDG - 0x40002C00 - - 0x0 - 0x400 - registers - - - WWDG - Window WatchDog Interrupt - 0 - - - - CR - CR - Control register (WWDG_CR) - 0x0 - 0x20 - read-write - 0x0000007F - - - WDGA - Activation bit - 7 - 1 - - - T - 7-bit counter (MSB to LSB) - 0 - 7 - - - - - CFR - CFR - Configuration register - (WWDG_CFR) - 0x4 - 0x20 - read-write - 0x0000007F - - - EWI - Early Wakeup Interrupt - 9 - 1 - - - WDGTB - Timer Base - 7 - 2 - - - W - 7-bit window value - 0 - 7 - - - - - SR - SR - Status register (WWDG_SR) - 0x8 - 0x20 - read-write - 0x00000000 - - - EWIF - Early Wakeup Interrupt flag - 0 - 1 - - - - - - - TIM1 - Advanced timer - TIM - 0x40012C00 - - 0x0 - 0x400 - registers - - - TIM1_BRK_UP_TRG_COM - TIM1 Break, Update, Trigger and Commutation Interrupt - 13 - - - TIM1_CC - TIM1 Capture Compare Interrupt - 14 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Clock division - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - CMS - Center-aligned mode - selection - 5 - 2 - - - DIR - Direction - 4 - 1 - - - OPM - One-pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - OIS4 - Output Idle state 4 - 14 - 1 - - - OIS3N - Output Idle state 3 - 13 - 1 - - - OIS3 - Output Idle state 3 - 12 - 1 - - - OIS2N - Output Idle state 2 - 11 - 1 - - - OIS2 - Output Idle state 2 - 10 - 1 - - - OIS1N - Output Idle state 1 - 9 - 1 - - - OIS1 - Output Idle state 1 - 8 - 1 - - - TI1S - TI1 selection - 7 - 1 - - - MMS - Master mode selection - 4 - 3 - - - CCDS - Capture/compare DMA - selection - 3 - 1 - - - CCUS - Capture/compare control update - selection - 2 - 1 - - - CCPC - Capture/compare preloaded - control - 0 - 1 - - - - - SMCR - SMCR - slave mode control register - 0x8 - 0x20 - read-write - 0x0000 - - - ETP - External trigger polarity - 15 - 1 - - - ECE - External clock enable - 14 - 1 - - - ETPS - External trigger prescaler - 12 - 2 - - - ETF - External trigger filter - 8 - 4 - - - MSM - Master/Slave mode - 7 - 1 - - - TS - Trigger selection - 4 - 3 - - - OCCS - OCREF clear selection bit - 3 - 1 - - - SMS - Slave mode selection - 0 - 3 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - TDE - Trigger DMA request enable - 14 - 1 - - - COMDE - COM DMA request enable - 13 - 1 - - - CC4DE - Capture/Compare 4 DMA request - enable - 12 - 1 - - - CC3DE - Capture/Compare 3 DMA request - enable - 11 - 1 - - - CC2DE - Capture/Compare 2 DMA request - enable - 10 - 1 - - - CC1DE - Capture/Compare 1 DMA request - enable - 9 - 1 - - - UDE - Update DMA request enable - 8 - 1 - - - BIE - Break interrupt enable - 7 - 1 - - - TIE - Trigger interrupt enable - 6 - 1 - - - COMIE - COM interrupt enable - 5 - 1 - - - CC4IE - Capture/Compare 4 interrupt - enable - 4 - 1 - - - CC3IE - Capture/Compare 3 interrupt - enable - 3 - 1 - - - CC2IE - Capture/Compare 2 interrupt - enable - 2 - 1 - - - CC1IE - Capture/Compare 1 interrupt - enable - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC4OF - Capture/Compare 4 overcapture - flag - 12 - 1 - - - CC3OF - Capture/Compare 3 overcapture - flag - 11 - 1 - - - CC2OF - Capture/compare 2 overcapture - flag - 10 - 1 - - - CC1OF - Capture/Compare 1 overcapture - flag - 9 - 1 - - - BIF - Break interrupt flag - 7 - 1 - - - TIF - Trigger interrupt flag - 6 - 1 - - - COMIF - COM interrupt flag - 5 - 1 - - - CC4IF - Capture/Compare 4 interrupt - flag - 4 - 1 - - - CC3IF - Capture/Compare 3 interrupt - flag - 3 - 1 - - - CC2IF - Capture/Compare 2 interrupt - flag - 2 - 1 - - - CC1IF - Capture/compare 1 interrupt - flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - BG - Break generation - 7 - 1 - - - TG - Trigger generation - 6 - 1 - - - COMG - Capture/Compare control update - generation - 5 - 1 - - - CC4G - Capture/compare 4 - generation - 4 - 1 - - - CC3G - Capture/compare 3 - generation - 3 - 1 - - - CC2G - Capture/compare 2 - generation - 2 - 1 - - - CC1G - Capture/compare 1 - generation - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC2CE - Output Compare 2 clear - enable - 15 - 1 - - - OC2M - Output Compare 2 mode - 12 - 3 - - - OC2PE - Output Compare 2 preload - enable - 11 - 1 - - - OC2FE - Output Compare 2 fast - enable - 10 - 1 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - OC1CE - Output Compare 1 clear - enable - 7 - 1 - - - OC1M - Output Compare 1 mode - 4 - 3 - - - OC1PE - Output Compare 1 preload - enable - 3 - 1 - - - OC1FE - Output Compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC2F - Input capture 2 filter - 12 - 4 - - - IC2PSC - Input capture 2 prescaler - 10 - 2 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - IC1F - Input capture 1 filter - 4 - 4 - - - ICPSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR2_Output - CCMR2_Output - capture/compare mode register (output - mode) - 0x1C - 0x20 - read-write - 0x00000000 - - - OC4CE - Output compare 4 clear - enable - 15 - 1 - - - OC4M - Output compare 4 mode - 12 - 3 - - - OC4PE - Output compare 4 preload - enable - 11 - 1 - - - OC4FE - Output compare 4 fast - enable - 10 - 1 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - OC3CE - Output compare 3 clear - enable - 7 - 1 - - - OC3M - Output compare 3 mode - 4 - 3 - - - OC3PE - Output compare 3 preload - enable - 3 - 1 - - - OC3FE - Output compare 3 fast - enable - 2 - 1 - - - CC3S - Capture/Compare 3 - selection - 0 - 2 - - - - - CCMR2_Input - CCMR2_Input - capture/compare mode register 2 (input - mode) - CCMR2_Output - 0x1C - 0x20 - read-write - 0x00000000 - - - IC4F - Input capture 4 filter - 12 - 4 - - - IC4PSC - Input capture 4 prescaler - 10 - 2 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - IC3F - Input capture 3 filter - 4 - 4 - - - IC3PSC - Input capture 3 prescaler - 2 - 2 - - - CC3S - Capture/compare 3 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC4P - Capture/Compare 3 output - Polarity - 13 - 1 - - - CC4E - Capture/Compare 4 output - enable - 12 - 1 - - - CC3NP - Capture/Compare 3 output - Polarity - 11 - 1 - - - CC3NE - Capture/Compare 3 complementary output - enable - 10 - 1 - - - CC3P - Capture/Compare 3 output - Polarity - 9 - 1 - - - CC3E - Capture/Compare 3 output - enable - 8 - 1 - - - CC2NP - Capture/Compare 2 output - Polarity - 7 - 1 - - - CC2NE - Capture/Compare 2 complementary output - enable - 6 - 1 - - - CC2P - Capture/Compare 2 output - Polarity - 5 - 1 - - - CC2E - Capture/Compare 2 output - enable - 4 - 1 - - - CC1NP - Capture/Compare 1 output - Polarity - 3 - 1 - - - CC1NE - Capture/Compare 1 complementary output - enable - 2 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - RCR - RCR - repetition counter register - 0x30 - 0x20 - read-write - 0x0000 - - - REP - Repetition counter value - 0 - 8 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - CCR2 - CCR2 - capture/compare register 2 - 0x38 - 0x20 - read-write - 0x00000000 - - - CCR2 - Capture/Compare 2 value - 0 - 16 - - - - - CCR3 - CCR3 - capture/compare register 3 - 0x3C - 0x20 - read-write - 0x00000000 - - - CCR3 - Capture/Compare value - 0 - 16 - - - - - CCR4 - CCR4 - capture/compare register 4 - 0x40 - 0x20 - read-write - 0x00000000 - - - CCR4 - Capture/Compare value - 0 - 16 - - - - - BDTR - BDTR - break and dead-time register - 0x44 - 0x20 - read-write - 0x0000 - - - MOE - Main output enable - 15 - 1 - - - AOE - Automatic output enable - 14 - 1 - - - BKP - Break polarity - 13 - 1 - - - BKE - Break enable - 12 - 1 - - - OSSR - Off-state selection for Run - mode - 11 - 1 - - - OSSI - Off-state selection for Idle - mode - 10 - 1 - - - LOCK - Lock configuration - 8 - 2 - - - DTG - Dead-time generator setup - 0 - 8 - - - - - DCR - DCR - DMA control register - 0x48 - 0x20 - read-write - 0x0000 - - - DBL - DMA burst length - 8 - 5 - - - DBA - DMA base address - 0 - 5 - - - - - DMAR - DMAR - DMA address for full transfer - 0x4C - 0x20 - read-write - 0x0000 - - - DMAB - DMA register for burst - accesses - 0 - 16 - - - - - - - TIM3 - General purpose timer - TIM - 0x40000400 - - 0x00 - 0x400 - registers - - - TIM3 - TIM3 global Interrupt - 16 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Clock division - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - CMS - Center-aligned mode - selection - 5 - 2 - - - DIR - Direction - 4 - 1 - - - OPM - One-pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - TI1S - TI1 selection - 7 - 1 - - - MMS - Master mode selection - 4 - 3 - - - CCDS - Capture/compare DMA - selection - 3 - 1 - - - - - SMCR - SMCR - slave mode control register - 0x8 - 0x20 - read-write - 0x0000 - - - MSM - Master/Slave mode - 7 - 1 - - - TS - Trigger selection - 4 - 3 - - - OCCS - OCREF Clear Selection - 3 - 1 - - - SMS - Slave mode selection - 0 - 3 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - TDE - Trigger DMA request enable - 14 - 1 - - - CC4DE - Capture/Compare 4 DMA request - enable - 12 - 1 - - - CC3DE - Capture/Compare 3 DMA request - enable - 11 - 1 - - - CC2DE - Capture/Compare 2 DMA request - enable - 10 - 1 - - - CC1DE - Capture/Compare 1 DMA request - enable - 9 - 1 - - - UDE - Update DMA request enable - 8 - 1 - - - TIE - Trigger interrupt enable - 6 - 1 - - - CC4IE - Capture/Compare 4 interrupt - enable - 4 - 1 - - - CC3IE - Capture/Compare 3 interrupt - enable - 3 - 1 - - - CC2IE - Capture/Compare 2 interrupt - enable - 2 - 1 - - - CC1IE - Capture/Compare 1 interrupt - enable - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC4OF - Capture/Compare 4 overcapture - flag - 12 - 1 - - - CC3OF - Capture/Compare 3 overcapture - flag - 11 - 1 - - - CC2OF - Capture/compare 2 overcapture - flag - 10 - 1 - - - CC1OF - Capture/Compare 1 overcapture - flag - 9 - 1 - - - TIF - Trigger interrupt flag - 6 - 1 - - - CC4IF - Capture/Compare 4 interrupt - flag - 4 - 1 - - - CC3IF - Capture/Compare 3 interrupt - flag - 3 - 1 - - - CC2IF - Capture/Compare 2 interrupt - flag - 2 - 1 - - - CC1IF - Capture/compare 1 interrupt - flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - TG - Trigger generation - 6 - 1 - - - CC4G - Capture/compare 4 - generation - 4 - 1 - - - CC3G - Capture/compare 3 - generation - 3 - 1 - - - CC2G - Capture/compare 2 - generation - 2 - 1 - - - CC1G - Capture/compare 1 - generation - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register 1 (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC2CE - Output compare 2 clear - enable - 15 - 1 - - - OC2M - Output compare 2 mode - 12 - 3 - - - OC2PE - Output compare 2 preload - enable - 11 - 1 - - - OC2FE - Output compare 2 fast - enable - 10 - 1 - - - CC2S - Capture/Compare 2 - selection - 8 - 2 - - - OC1CE - Output compare 1 clear - enable - 7 - 1 - - - OC1M - Output compare 1 mode - 4 - 3 - - - OC1PE - Output compare 1 preload - enable - 3 - 1 - - - OC1FE - Output compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC2F - Input capture 2 filter - 12 - 4 - - - IC2PSC - Input capture 2 prescaler - 10 - 2 - - - CC2S - Capture/compare 2 - selection - 8 - 2 - - - IC1F - Input capture 1 filter - 4 - 4 - - - IC1PSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR2_Output - CCMR2_Output - capture/compare mode register 2 (output - mode) - 0x1C - 0x20 - read-write - 0x00000000 - - - OC4CE - Output compare 4 clear - enable - 15 - 1 - - - OC4M - Output compare 4 mode - 12 - 3 - - - OC4PE - Output compare 4 preload - enable - 11 - 1 - - - OC4FE - Output compare 4 fast - enable - 10 - 1 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - OC3CE - Output compare 3 clear - enable - 7 - 1 - - - OC3M - Output compare 3 mode - 4 - 3 - - - OC3PE - Output compare 3 preload - enable - 3 - 1 - - - OC3FE - Output compare 3 fast - enable - 2 - 1 - - - CC3S - Capture/Compare 3 - selection - 0 - 2 - - - - - CCMR2_Input - CCMR2_Input - capture/compare mode register 2 (input - mode) - CCMR2_Output - 0x1C - 0x20 - read-write - 0x00000000 - - - IC4F - Input capture 4 filter - 12 - 4 - - - IC4PSC - Input capture 4 prescaler - 10 - 2 - - - CC4S - Capture/Compare 4 - selection - 8 - 2 - - - IC3F - Input capture 3 filter - 4 - 4 - - - IC3PSC - Input capture 3 prescaler - 2 - 2 - - - CC3S - Capture/Compare 3 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC4NP - - Capture/Compare 4 output - Polarity - - 15 - 1 - - - CC4P - - Capture/Compare 4 output - Polarity - - 13 - 1 - - - CC4E - - Capture/Compare 4 output - enable - - 12 - 1 - - - CC3NP - - Capture/Compare 3 output - Polarity - - 11 - 1 - - - CC3P - - Capture/Compare 3 output - Polarity - - 9 - 1 - - - CC3E - - Capture/Compare 3 output - enable - - 8 - 1 - - - CC2NP - - Capture/Compare 2 output - Polarity - - 7 - 1 - - - CC2P - - Capture/Compare 2 output - Polarity - - 5 - 1 - - - CC2E - - Capture/Compare 2 output - enable - - 4 - 1 - - - CC1NP - - Capture/Compare 1 output - Polarity - - 3 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - CCR2 - CCR2 - capture/compare register 2 - 0x38 - 0x20 - read-write - 0x00000000 - - - CCR2 - Capture/Compare 2 value - 0 - 16 - - - - - CCR3 - CCR3 - capture/compare register 3 - 0x3C - 0x20 - read-write - 0x00000000 - - - CCR3 - Capture/Compare value - 0 - 16 - - - - - CCR4 - CCR4 - capture/compare register 4 - 0x40 - 0x20 - read-write - 0x00000000 - - - CCR4 - Capture/Compare value - 0 - 16 - - - - - DCR - DCR - DMA control register - 0x48 - 0x20 - read-write - 0x0000 - - - DBL - DMA burst length - 8 - 5 - - - DBA - DMA base address - 0 - 5 - - - - - DMAR - DMAR - DMA address for full transfer - 0x4C - 0x20 - read-write - 0x0000 - - - DMAB - DMA register for burst - accesses - 0 - 32 - - - - - - - TIM14 - General purpose timer - TIM - 0x40002000 - - 0x00 - 0x400 - registers - - - TIM14 - TIM14 global Interrupt - 19 - - - - CR1 - CR1 - TIM14 control register1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Prescaler factor - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - CC1IE - Compare/ - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC1OF - Compare/capture 1 flag - 9 - 1 - - - CC1IF - Compare/capture 1 interrupt flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - CC1G - Compare/capture1 event - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC1M - Output Compare 1 mode - 4 - 3 - - - OC1PE - Output Compare 1 preload - enable - 3 - 1 - - - OC1FE - Output Compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC1F - Input capture 1 filter - 4 - 4 - - - IC1PSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC1NP - Capture/Compare 1 output - Polarity - 3 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - OR - OR - Option register - 0x50 - 0x20 - read-write - 0x00000000 - - - TI1_RMP - TIM14 channel1 input remap - 0 - 2 - - - - - - - TIM16 - General purpose timer - TIM - 0x40014400 - - 0x00 - 0x400 - registers - - - TIM16 - TIM16 global Interrupt - 21 - - - - CR1 - CR1 - TIM16 control register1 - 0x0 - 0x20 - read-write - 0x0000 - - - CKD - Prescaler factor - 8 - 2 - - - ARPE - Auto-reload preload enable - 7 - 1 - - - OPM - One pulse mode - 3 - 1 - - - URS - Update request source - 2 - 1 - - - UDIS - Update disable - 1 - 1 - - - CEN - Counter enable - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - OIS1N - Output Idle state 1 - 9 - 1 - - - OIS1 - Output Idle state 1 - 8 - 1 - - - CCDS - Capture/compare DMA - selection - 3 - 1 - - - CCPC - Capture/compare preloaded - control - 0 - 1 - - - - - DIER - DIER - DMA/Interrupt enable register - 0xC - 0x20 - read-write - 0x0000 - - - CC1DE - Compare/capture DMA requeset enable - 9 - 1 - - - UDE - Update DMA request enable - 8 - 1 - - - BIE - Break interrupt enable - 7 - 1 - - - COMIE - Com interrupt enable - 5 - 1 - - - CC1IE - Capture/Compare 1 interrupt enable - 1 - 1 - - - UIE - Update interrupt enable - 0 - 1 - - - - - SR - SR - status register - 0x10 - 0x20 - read-write - 0x0000 - - - CC1OF - Update interrupt flag - 9 - 1 - - - BIF - Break interrupt flag - 7 - 1 - - - COMIF - Com interrupt flag - 5 - 1 - - - CC1IF - Capture/Compare 1 interrupt flag - 1 - 1 - - - UIF - Update interrupt flag - 0 - 1 - - - - - EGR - EGR - event generation register - 0x14 - 0x20 - write-only - 0x0000 - - - BG - Break event generation - 7 - 1 - - - COMG - COM evnet generation - 5 - 1 - - - CC1G - Capture/Compare 1 generation - 1 - 1 - - - UG - Update generation - 0 - 1 - - - - - CCMR1_Output - CCMR1_Output - capture/compare mode register (output - mode) - 0x18 - 0x20 - read-write - 0x00000000 - - - OC1M - Output Compare 1 mode - 4 - 3 - - - OC1PE - Output Compare 1 preload - enable - 3 - 1 - - - OC1FE - Output Compare 1 fast - enable - 2 - 1 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCMR1_Input - CCMR1_Input - capture/compare mode register 1 (input - mode) - CCMR1_Output - 0x18 - 0x20 - read-write - 0x00000000 - - - IC1F - Input capture 1 filter - 4 - 4 - - - IC1PSC - Input capture 1 prescaler - 2 - 2 - - - CC1S - Capture/Compare 1 - selection - 0 - 2 - - - - - CCER - CCER - capture/compare enable - register - 0x20 - 0x20 - read-write - 0x0000 - - - CC1NP - Capture/Compare 1 output - Polarity - 3 - 1 - - - CC1NE - Capture/Compare 1 complementary output - enable - 2 - 1 - - - CC1P - Capture/Compare 1 output - Polarity - 1 - 1 - - - CC1E - Capture/Compare 1 output - enable - 0 - 1 - - - - - CNT - CNT - counter - 0x24 - 0x20 - read-write - 0x00000000 - - - CNT - counter value - 0 - 16 - - - - - PSC - PSC - prescaler - 0x28 - 0x20 - read-write - 0x0000 - - - PSC - Prescaler value - 0 - 16 - - - - - ARR - ARR - auto-reload register - 0x2C - 0x20 - read-write - 0x00000000 - - - ARR - Auto-reload value - 0 - 16 - - - - - RCR - RCR - repetition counter register - 0x30 - 0x20 - read-write - 0x0000 - - - REP - Repetition counter value - 0 - 8 - - - - - CCR1 - CCR1 - capture/compare register 1 - 0x34 - 0x20 - read-write - 0x00000000 - - - CCR1 - Capture/Compare 1 value - 0 - 16 - - - - - BDTR - BDTR - break and dead-time register - 0x44 - 0x20 - read-write - 0x0000 - - - MOE - Main output enable - 15 - 1 - - - AOE - Automatic output enable - 14 - 1 - - - BKP - Break polarity - 13 - 1 - - - BKE - Break enable - 12 - 1 - - - OSSR - Off-state selection for Run - mode - 11 - 1 - - - OSSI - Off-state selection for Idle - mode - 10 - 1 - - - LOCK - Lock configuration - 8 - 2 - - - DTG - Dead-time generator setup - 0 - 8 - - - - - DCR - DCR - DMA control register - 0x48 - 0x20 - read-write - 0x0000 - - - DBL - DMA burst length - 8 - 5 - - - DBA - DMA base address - 0 - 5 - - - - - DMAR - DMAR - DMA address for full transfer - 0x4C - 0x20 - read-write - 0x0000 - - - DMAB - DMA register for burst - accesses - 0 - 32 - - - - - - - TIM17 - 0x40014800 - - TIM17 - TIM17 global Interrupt - 22 - - - - SYSCFG - System configuration controller - SYSCFG - 0x40010000 - - 0x0 - 0x30 - registers - - - - CFGR1 - CFGR1 - SYSCFG configuration register - 1 - 0x0 - 0x20 - read-write - 0x00000000 - - - I2C_PF1_ANF - Analog filter enable control driving capability - activation bits PF1 - 30 - 1 - - - I2C_PF0_ANF - Analog filter enable control driving capability - activation bits PF0 - 29 - 1 - - - I2C_PB8_ANF - Analog filter enable control driving capability - activation bits PB8 - 28 - 1 - - - I2C_PB7_ANF - Analog filter enable control driving capability - activation bits PB7 - 27 - 1 - - I2C_PB6_ANF - Analog filter enable control driving capability - activation bits PB6 - 26 - 1 - - - I2C_PA12_ANF - Analog filter enable control driving capability - activation bits PA12 - 25 - 1 - - - I2C_PA11_ANF - Analog filter enable control driving capability - activation bits PA11 - 24 - 1 - - - I2C_PA10_ANF - Analog filter enable control driving capability - activation bits PA10 - 23 - 1 - - - I2C_PA9_ANF - Analog filter enable control driving capability - activation bits PA9 - 22 - 1 - - - I2C_PA8_ANF - Analog filter enable control driving capability - activation bits PA8 - 21 - 1 - - - I2C_PA7_ANF - Analog filter enable control driving capability - activation bits PA7 - 20 - 1 - - - I2C_PA3_ANF - Analog filter enable control driving capability - activation bits PA3 - 19 - 1 - - - I2C_PA2_ANF - Analog filter enable control driving capability - activation bits PA2 - 18 - 1 - - - MEM_MODE - Memory mapping selection - bits - 0 - 2 - - - - - CFGR2 - CFGR2 - SYSCFG configuration register - 2 - 0x18 - 0x20 - read-write - 0x00000000 - - - ETR_SRC_TIM1 - TIM1 ETR source selection - 9 - 2 - - - COMP2_BRK_TIM17 - COMP2 is enable to input of TIM17 break - 8 - 1 - - - COMP1_BRK_TIM17 - COMP1 is enable to input of TIM17 break - 7 - 1 - - - COMP2_BRK_TIM16 - COMP2 is enable to input of TIM16 break - 6 - 1 - - - COMP1_BRK_TIM16 - COMP1 is enable to input of TIM16 break - 5 - 1 - - - COMP2_BRK_TIM1 - COMP2 is enable to input of TIM1 break - 4 - 1 - - - COMP1_BRK_TIM1 - COMP1 is enable to input of TIM1 break - 3 - 1 - - - PVD_LOCK - PVD lock enable bit - 2 - 1 - - - LOCKUP_LOCK - Cortex-M0+ LOCKUP bit enable - bit - 0 - 1 - - - - - CFGR3 - CFGR3 - SYSCFG configuration register - 3 - 0x1C - 0x20 - read-write - 0x00000000 - - - DMA3_MAP - DMA channel3 requeset selection - 16 - 5 - - - DMA2_MAP - DMA channel2 requeset selection - 8 - 5 - - - DMA1_MAP - DMA channel1 requeset selection - 0 - 5 - - - - - - - DMA - Direct memory access - DMA - 0x40020000 - - 0x0 - 0x400 - registers - - - DMA_Channel1 - DMA Channel 1 Interrupt - 9 - - - DMA_Channel2_3 - DMA Channel 2 and Channel 3 Interrupt - 10 - - - - ISR - ISR - DMA interrupt status register - (DMA_ISR) - 0x0 - 0x20 - read-only - 0x00000000 - - - TEIF3 - Channel 3 Transfer Error - flag - 11 - 1 - - - HTIF3 - Channel 3 Half Transfer Complete - flag - 10 - 1 - - - TCIF3 - Channel 3 Transfer Complete - flag - 9 - 1 - - - GIF3 - Channel 3 Global interrupt - flag - 8 - 1 - - - TEIF2 - Channel 2 Transfer Error - flag - 7 - 1 - - - HTIF2 - Channel 2 Half Transfer Complete - flag - 6 - 1 - - - TCIF2 - Channel 2 Transfer Complete - flag - 5 - 1 - - - GIF2 - Channel 2 Global interrupt - flag - 4 - 1 - - - TEIF1 - Channel 1 Transfer Error - flag - 3 - 1 - - - HTIF1 - Channel 1 Half Transfer Complete - flag - 2 - 1 - - - TCIF1 - Channel 1 Transfer Complete - flag - 1 - 1 - - - GIF1 - Channel 1 Global interrupt - flag - 0 - 1 - - - - - IFCR - IFCR - DMA interrupt flag clear register - (DMA_IFCR) - 0x4 - 0x20 - write-only - 0x00000000 - - - CTEIF3 - Channel 3 Transfer Error - clear - 11 - 1 - - - CHTIF3 - Channel 3 Half Transfer - clear - 10 - 1 - - - CTCIF3 - Channel 3 Transfer Complete - clear - 9 - 1 - - - CGIF3 - Channel 3 Global interrupt - clear - 8 - 1 - - - CTEIF2 - Channel 2 Transfer Error - clear - 7 - 1 - - - CHTIF2 - Channel 2 Half Transfer - clear - 6 - 1 - - - CTCIF2 - Channel 2 Transfer Complete - clear - 5 - 1 - - - CGIF2 - Channel 2 Global interrupt - clear - 4 - 1 - - - CTEIF1 - Channel 1 Transfer Error - clear - 3 - 1 - - - CHTIF1 - Channel 1 Half Transfer - clear - 2 - 1 - - - CTCIF1 - Channel 1 Transfer Complete - clear - 1 - 1 - - - CGIF1 - Channel 1 Global interrupt - clear - 0 - 1 - - - - - CCR1 - CCR1 - DMA channel configuration register - (DMA_CCR) - 0x8 - 0x20 - read-write - 0x00000000 - - - MEM2MEM - Memory to memory mode - 14 - 1 - - - PL - Channel Priority level - 12 - 2 - - - MSIZE - Memory size - 10 - 2 - - - PSIZE - Peripheral size - 8 - 2 - - - MINC - Memory increment mode - 7 - 1 - - - PINC - Peripheral increment mode - 6 - 1 - - - CIRC - Circular mode - 5 - 1 - - - DIR - Data transfer direction - 4 - 1 - - - TEIE - Transfer error interrupt - enable - 3 - 1 - - - HTIE - Half Transfer interrupt - enable - 2 - 1 - - - TCIE - Transfer complete interrupt - enable - 1 - 1 - - - EN - Channel enable - 0 - 1 - - - - - CNDTR1 - CNDTR1 - DMA channel 1 number of data - register - 0xC - 0x20 - read-write - 0x00000000 - - - NDT - Number of data to transfer - 0 - 16 - - - - - CPAR1 - CPAR1 - DMA channel 1 peripheral address - register - 0x10 - 0x20 - read-write - 0x00000000 - - - PA - Peripheral address - 0 - 32 - - - - - CMAR1 - CMAR1 - DMA channel 1 memory address - register - 0x14 - 0x20 - read-write - 0x00000000 - - - MA - Memory address - 0 - 32 - - - - - CCR2 - CCR2 - DMA channel configuration register - (DMA_CCR) - 0x1C - 0x20 - read-write - 0x00000000 - - - MEM2MEM - Memory to memory mode - 14 - 1 - - - PL - Channel Priority level - 12 - 2 - - - MSIZE - Memory size - 10 - 2 - - - PSIZE - Peripheral size - 8 - 2 - - - MINC - Memory increment mode - 7 - 1 - - - PINC - Peripheral increment mode - 6 - 1 - - - CIRC - Circular mode - 5 - 1 - - - DIR - Data transfer direction - 4 - 1 - - - TEIE - Transfer error interrupt - enable - 3 - 1 - - - HTIE - Half Transfer interrupt - enable - 2 - 1 - - - TCIE - Transfer complete interrupt - enable - 1 - 1 - - - EN - Channel enable - 0 - 1 - - - - - CNDTR2 - CNDTR2 - DMA channel 2 number of data - register - 0x20 - 0x20 - read-write - 0x00000000 - - - NDT - Number of data to transfer - 0 - 16 - - - - - CPAR2 - CPAR2 - DMA channel 2 peripheral address - register - 0x24 - 0x20 - read-write - 0x00000000 - - - PA - Peripheral address - 0 - 32 - - - - - CMAR2 - CMAR2 - DMA channel 2 memory address - register - 0x28 - 0x20 - read-write - 0x00000000 - - - MA - Memory address - 0 - 32 - - - - - CCR3 - CCR3 - DMA channel configuration register - (DMA_CCR) - 0x30 - 0x20 - read-write - 0x00000000 - - - MEM2MEM - Memory to memory mode - 14 - 1 - - - PL - Channel Priority level - 12 - 2 - - - MSIZE - Memory size - 10 - 2 - - - PSIZE - Peripheral size - 8 - 2 - - - MINC - Memory increment mode - 7 - 1 - - - PINC - Peripheral increment mode - 6 - 1 - - - CIRC - Circular mode - 5 - 1 - - - DIR - Data transfer direction - 4 - 1 - - - TEIE - Transfer error interrupt - enable - 3 - 1 - - - HTIE - Half Transfer interrupt - enable - 2 - 1 - - - TCIE - Transfer complete interrupt - enable - 1 - 1 - - - EN - Channel enable - 0 - 1 - - - - - CNDTR3 - CNDTR3 - DMA channel 3 number of data - register - 0x34 - 0x20 - read-write - 0x00000000 - - - NDT - Number of data to transfer - 0 - 16 - - - - - CPAR3 - CPAR3 - DMA channel 3 peripheral address - register - 0x38 - 0x20 - read-write - 0x00000000 - - - PA - Peripheral address - 0 - 32 - - - - - CMAR3 - CMAR3 - DMA channel 3 memory address - register - 0x3C - 0x20 - read-write - 0x00000000 - - - MA - Memory address - 0 - 32 - - - - - - - FLASH - Flash - Flash - 0x40022000 - - 0x0 - 0x400 - registers - - - FLASH - FLASH global Interrupt - 3 - - - - ACR - ACR - Access control register - 0x0 - 0x20 - read-write - 0x00000600 - - - LATENCY - Latency - 0 - 1 - - - - - KEYR - KEYR - Flash key register - 0x8 - 0x20 - write-only - 0x00000000 - - - KEY - Flash key - 0 - 32 - - - - - OPTKEYR - OPTKEYR - Option byte key register - 0xC - 0x20 - write-only - 0x00000000 - - - OPTKEY - Option byte key - 0 - 32 - - - - - SR - SR - Status register - 0x10 - 0x20 - read-write - 0x00000000 - - - BSY - Busy - 16 - 1 - - - OPTVERR - Option and Engineering bits loading - validity error - 15 - 1 - - - WRPERR - Write protected error - 4 - 1 - - - EOP - End of operation - 0 - 1 - - - - - CR - CR - Flash control register - 0x14 - 0x20 - read-write - 0xC0000000 - - - LOCK - FLASH_CR Lock - 31 - 1 - - - OPTLOCK - Options Lock - 30 - 1 - - - OBL_LAUNCH - Force the option byte - loading - 27 - 1 - - - ERRIE - Error interrupt enable - 25 - 1 - - - EOPIE - End of operation interrupt - enable - 24 - 1 - - - PGTSTRT - Flash main memory program start - 19 - 1 - - - OPTSTRT - Option byte program start - 17 - 1 - - - SER - Sector erase - 11 - 1 - - - MER - Mass erase - 2 - 1 - - - PER - Page erase - 1 - 1 - - - PG - Programming - 0 - 1 - - - - - OPTR - OPTR - Flash option register - 0x20 - 0x20 - read-write - 0x4F55B0AA - - - nBOOT1 - Boot configuration - 15 - 1 - - - NRST_MODE - NRST_MODE - 14 - 1 - - - WWDG_SW - Window watchdog selection - 13 - 1 - - - IDWG_SW - Independent watchdog - selection - 12 - 1 - - - BORF_LEV - These bits contain the VDD supply level - threshold that activates the reset - 9 - 3 - - - BOREN - BOR reset Level - 8 - 1 - - - RDP - Read Protection - 0 - 8 - - - - - SDKR - SDKR - Flash SDK address - register - 0x24 - 0x20 - read-write - 0xFFE0001F - - - SDK_END - SDK area end address - 8 - 5 - - - SDK_STRT - SDK area start address - 0 - 5 - - - - - WRPR - WRPR - Flash WRP address - register - 0x2C - 0x20 - read-write - 0x0000FFFF - - - WRP - WRP address - 0 - 16 - - - - - STCR - STCR - Flash sleep time config - register - 0x90 - 0x20 - read-write - 0x00006400 - - - SLEEP_TIME - FLash sleep time configuration(counter based on HSI_10M) - 8 - 8 - - - SLEEP_EN - FLash sleep enable - 0 - 1 - - - - - TS0 - TS0 - Flash TS0 - register - 0x100 - 0x20 - read-write - 0x000000B4 - - - TS0 - FLash TS0 register - 0 - 8 - - - - - TS1 - TS1 - Flash TS1 - register - 0x104 - 0x20 - read-write - 0x000001B0 - - - TS1 - FLash TS1 register - 0 - 9 - - - - - TS2P - TS2P - Flash TS2P - register - 0x108 - 0x20 - read-write - 0x000000B4 - - - TS2P - FLash TS2P register - 0 - 8 - - - - - TPS3 - TPS3 - Flash TPS3 - register - 0x10C - 0x20 - read-write - 0x000006C0 - - - TPS3 - FLash TPS3 register - 0 - 11 - - - - - TS3 - TS3 - Flash TS3 - register - 0x110 - 0x20 - read-write - 0x000000B4 - - - TS3 - FLash TS3 register - 0 - 8 - - - - - PERTPE - PERTPE - Flash PERTPE - register - 0x114 - 0x20 - read-write - 0x0000EA60 - - - PERTPE - FLash PERTPE register - 0 - 17 - - - - - SMERTPE - SMERTPE - Flash SMERTPE - register - 0x118 - 0x20 - read-write - 0x0000FD20 - - - SMERTPE - FLash SMERTPE register - 0 - 17 - - - - - PRGTPE - PRGTPE - Flash PRGTPE - register - 0x11C - 0x20 - read-write - 0x00008CA0 - - - PRGTPE - FLash PRGTPE register - 0 - 16 - - - - - PRETPE - PRETPE - Flash PRETPE - register - 0x120 - 0x20 - read-write - 0x000012C0 - - - PRETPE - FLash PRETPE register - 0 - 13 - - - - - - - CRC - CRC calculation unit - CRC - 0x40023000 - - 0x0 - 0x400 - registers - - - - DR - DR - Data register - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - DR - Data Register - 0 - 32 - - - - - IDR - IDR - Independent Data register - 0x4 - 0x20 - read-write - 0x00000000 - - - IDR - Independent Data register - 0 - 8 - - - - - CR - CR - Control register - 0x8 - 0x20 - write-only - 0x00000000 - - - RESET - Reset bit - 0 - 1 - - - - - - - SPI1 - Serial peripheral interface - SPI - 0x40013000 - - 0x0 - 0x400 - registers - - - SPI1 - SPI1 global Interrupt - 25 - - - - CR1 - CR1 - control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - BIDIMODE - Bidirectional data mode - enable - 15 - 1 - - - BIDIOE - Output enable in bidirectional - mode - 14 - 1 - - - RXONLY - Receive only - 10 - 1 - - - SSM - Software slave management - 9 - 1 - - - SSI - Internal slave selection - 8 - 1 - - - LSBFIRST - Frame format - 7 - 1 - - - SPE - SPI enable - 6 - 1 - - - BR - Baud rate control - 3 - 3 - - - MSTR - Master selection - 2 - 1 - - - CPOL - Clock polarity - 1 - 1 - - - CPHA - Clock phase - 0 - 1 - - - - - CR2 - CR2 - control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - SLVFM - Slave fast mode enable - 15 - 1 - - - LDMA_TX - Last DAM Transmit(TX) - 14 - 1 - - - LDMA_RX - Last DAM Transmit(RX) - 13 - 1 - - - FRXTH - FIFO reception threshold - 12 - 1 - - - DS - Data length - - 11 - 1 - - - TXEIE - Tx buffer empty interrupt - enable - 7 - 1 - - - RXNEIE - RX buffer not empty interrupt - enable - 6 - 1 - - - ERRIE - Error interrupt enable - 5 - 1 - - - SSOE - SS output enable - 2 - 1 - - - TXDMAEN - Tx buffer DMA enable - 1 - 1 - - - RXDMAEN - Rx buffer DMA enable - 0 - 1 - - - - - SR - SR - status register - 0x8 - 0x20 - 0x0002 - - - FTLVL - FIFO transmission level - 11 - 2 - read-only - - - FRLVL - FIFO reception level - 9 - 2 - read-only - - - BSY - Busy flag - 7 - 1 - read-only - - - OVR - Overrun flag - 6 - 1 - read-only - - - MODF - Mode fault - 5 - 1 - read-only - - - TXE - Transmit buffer empty - 1 - 1 - read-only - - - RXNE - Receive buffer not empty - 0 - 1 - read-only - - - - - DR - DR - data register - 0xC - 0x20 - read-write - 0x0000 - - - DR - Data register - 0 - 16 - - - - - - - SPI2 - 0x40003800 - - SPI2 - SPI2 global Interrupt - 26 - - - - I2C - Inter integrated circuit - I2C - 0x40005400 - - 0x0 - 0x400 - registers - - - I2C1 - I2C1 global Interrupt - 23 - - - - CR1 - CR1 - Control register 1 - 0x0 - 0x20 - read-write - 0x0000 - - - SWRST - Software reset - 15 - 1 - - - PEC - Packet error checking - 12 - 1 - - - POS - Acknowledge/PEC Position (for data - reception) - 11 - 1 - - - ACK - Acknowledge enable - 10 - 1 - - - STOP - Stop generation - 9 - 1 - - - START - Start generation - 8 - 1 - - - NOSTRETCH - Clock stretching disable (Slave - mode) - 7 - 1 - - - ENGC - General call enable - 6 - 1 - - - ENPEC - PEC enable - 5 - 1 - - - PE - Peripheral enable - 0 - 1 - - - - - CR2 - CR2 - Control register 2 - 0x4 - 0x20 - read-write - 0x0000 - - - LAST - DMA last transfer - 12 - 1 - - - DMAEN - DMA requests enable - 11 - 1 - - - ITBUFEN - Buffer interrupt enable - 10 - 1 - - - ITEVTEN - Event interrupt enable - 9 - 1 - - - ITERREN - Error interrupt enable - 8 - 1 - - - FREQ - Peripheral clock frequency - 0 - 6 - - - - - OAR1 - OAR1 - Own address register 1 - 0x8 - 0x20 - read-write - 0x0000 - - - ADD - Interface address - 1 - 7 - - - - - DR - DR - Data register - 0x10 - 0x20 - read-write - 0x0000 - - - DR - 8-bit data register - 0 - 8 - - - - - SR1 - SR1 - Status register 1 - 0x14 - 0x20 - 0x0000 - - - PECERR - PEC Error in reception - 12 - 1 - read-write - - - OVR - Overrun/Underrun - 11 - 1 - read-write - - - AF - Acknowledge failure - 10 - 1 - read-write - - - ARLO - Arbitration lost (master - mode) - 9 - 1 - read-write - - - BERR - Bus error - 8 - 1 - read-write - - - TxE - Data register empty - (transmitters) - 7 - 1 - read-only - - - RxNE - Data register not empty - (receivers) - 6 - 1 - read-only - - - STOPF - Stop detection (slave - mode) - 4 - 1 - read-only - - - BTF - Byte transfer finished - 2 - 1 - read-only - - - ADDR - Address sent (master mode)/matched - (slave mode) - 1 - 1 - read-only - - - SB - Start bit (Master mode) - 0 - 1 - read-only - - - - - SR2 - SR2 - Status register 2 - 0x18 - 0x20 - read-only - 0x0000 - - - PEC - acket error checking - register - 8 - 8 - - - DUALF - Dual flag (Slave mode) - 7 - 1 - - - GENCALL - General call address (Slave - mode) - 4 - 1 - - - TRA - Transmitter/receiver - 2 - 1 - - - BUSY - Bus busy - 1 - 1 - - - MSL - Master/slave - 0 - 1 - - - - - CCR - CCR - Clock control register - 0x1C - 0x20 - read-write - 0x0000 - - - F_S - I2C master mode selection - 15 - 1 - - - DUTY - Fast mode duty cycle - 14 - 1 - - - CCR - Clock control register in Fast/Standard - mode (Master mode) - 0 - 12 - - - - - TRISE - TRISE - TRISE register - 0x20 - 0x20 - read-write - 0x0002 - - - TRISE - Maximum rise time in Fast/Standard mode - (Master mode) - 0 - 6 - - - - - - - LED - LED CONTROLLER - LED - 0x40002400 - - 0x0 - 0x400 - registers - - - LED - LED global Interrupt - 30 - - - - CR - LED_CR - Control register - 0x0 - 0x20 - read-write - 0x0000 - - - EHS - Light control - 12 - 2 - - - IE - LED interrupt enable - 3 - 1 - - - LED_COM_SEL - LED COM Selection - 1 - 2 - - - LEDON - LED enable - 0 - 1 - - - - - PR - LED_PR - Prescaler register - 0x4 - 0x20 - read-write - 0x0000 - - - PR - Prescaler control - 0 - 8 - - - - - TR - LED_TR - Time register - 0x8 - 0x20 - read-write - 0x0000 - - - T2 - Switch time - 8 - 8 - - - T1 - Light on time - 0 - 8 - - - - - DR0 - LED_DR0 - Data0 register - 0x0C - 0x20 - read-write - 0x0000 - - - DATA0_DP - 8-bit data register - 7 - 1 - - - DATA0_G - 8-bit data register - 6 - 1 - - - DATA0_F - 8-bit data register - 5 - 1 - - - DATA0_E - 8-bit data register - 4 - 1 - - - DATA0_D - 8-bit data register - 3 - 1 - - - DATA0_C - 8-bit data register - 2 - 1 - - - DATA0_B - 8-bit data register - 1 - 1 - - - DATA0_A - 8-bit data register - 0 - 1 - - - - - DR1 - LED_DR1 - Data1 register - 0x10 - 0x20 - read-write - 0x0000 - - - DATA1_DP - 8-bit data register - 7 - 1 - - - DATA1_G - 8-bit data register - 6 - 1 - - - DATA1_F - 8-bit data register - 5 - 1 - - - DATA1_E - 8-bit data register - 4 - 1 - - - DATA1_D - 8-bit data register - 3 - 1 - - - DATA1_C - 8-bit data register - 2 - 1 - - - DATA1_B - 8-bit data register - 1 - 1 - - - DATA1_A - 8-bit data register - 0 - 1 - - - - - DR2 - LED_DR2 - Data2 register - 0x14 - 0x20 - read-write - 0x0000 - - - DATA2_DP - 8-bit data register - 7 - 1 - - - DATA2_G - 8-bit data register - 6 - 1 - - - DATA2_F - 8-bit data register - 5 - 1 - - - DATA2_E - 8-bit data register - 4 - 1 - - - DATA2_D - 8-bit data register - 3 - 1 - - - DATA2_C - 8-bit data register - 2 - 1 - - - DATA2_B - 8-bit data register - 1 - 1 - - - DATA2_A - 8-bit data register - 0 - 1 - - - - - DR3 - LED_DR3 - Data3 register - 0x18 - 0x20 - read-write - 0x0000 - - - DATA3_DP - 8-bit data register - 7 - 1 - - - DATA3_G - 8-bit data register - 6 - 1 - - - DATA3_F - 8-bit data register - 5 - 1 - - - DATA3_E - 8-bit data register - 4 - 1 - - - DATA3_D - 8-bit data register - 3 - 1 - - - DATA3_C - 8-bit data register - 2 - 1 - - - DATA3_B - 8-bit data register - 1 - 1 - - - DATA3_A - 8-bit data register - 0 - 1 - - - - - IR - LED_IR - Interrupt register 1 - 0x1C - 0x20 - 0x0000 - - - FLAG - interrupt flag - 0 - 1 - read-write - - - - - - - DBGMCU - Debug support - DBGMCU - 0x40015800 - - 0x0 - 0x400 - registers - - - - IDCODE - IDCODE - MCU Device ID Code Register - 0x0 - 0x20 - read-only - 0x0 - - - - - - CR - CR - Debug MCU Configuration - Register - 0x4 - 0x20 - read-write - 0x0 - - - DBG_STOP - Debug Stop Mode - 1 - 1 - - - - - APB_FZ1 - APB_FZ1 - APB Freeze Register1 - 0x8 - 0x20 - read-write - 0x0 - - - DBG_TIMER3_STOP - Debug Timer 3 stopped when Core is - halted - 1 - 1 - - - DBG_RTC_STOP - Debug RTC stopped when Core is - halted - 10 - 1 - - - DBG_WWDG_STOP - Debug Window Wachdog stopped when Core - is halted - 11 - 1 - - - DBG_IWDG_STOP - Debug Independent Wachdog stopped when - Core is halted - 12 - 1 - - - DBG_LPTIM_STOP - Debug LPTIM stopped when Core is - halted - 31 - 1 - - - - - APB_FZ2 - APB_FZ2 - APB Freeze Register2 - 0xC - 0x20 - read-write - 0x0 - - - DBG_TIMER1_STOP - Debug Timer 1 stopped when Core is - halted - 11 - 1 - - - DBG_TIMER14_STOP - Debug Timer 14 stopped when Core is - halted - 15 - 1 - - - DBG_TIMER16_STOP - Debug Timer 16 stopped when Core is - halted - 17 - 1 - - - DBG_TIMER17_STOP - Debug Timer 17 stopped when Core is - halted - 18 - 1 - - - - - - - + + + + Puya + Puya + PY32F0xx_DFP + + PY32F0 + 1.0.0 + Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. + + + + CM0+ + r0p1 + little + false + false + 4 + false + + + + 8 + 32 + 32 + read-write + 0x00000000 + 0xFFFFFFFF + + + ADC + Analog to Digital Converter + ADC + 0x40012400 + + 0x0 + 0x400 + registers + + + ADC_COMP + ADC and COMP Interrupt through EXTI Lines 17 and 18 + 12 + + + + ISR + ISR + ADC interrupt and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + AWD + ADC analog watchdog flag + 7 + 1 + + + OVR + ADC group regular overrun + flag + 4 + 1 + + + EOSEQ + ADC group regular end of sequence + conversions flag + 3 + 1 + + + EOC + ADC group regular end of unitary + conversion flag + 2 + 1 + + + EOSMP + ADC group regular end of sampling + flag + 1 + 1 + + + + + IER + IER + ADC interrupt enable register + 0x4 + 0x20 + read-write + 0x00000000 + + + AWDIE + ADC analog watchdog + interrupt + 7 + 1 + + + OVRIE + ADC group regular overrun + interrupt + 4 + 1 + + + EOSEQIE + ADC group regular end of sequence + conversions interrupt + 3 + 1 + + + EOCIE + ADC group regular end of unitary + conversion interrupt + 2 + 1 + + + EOSMPIE + ADC group regular end of sampling + interrupt + 1 + 1 + + + + + CR + CR + ADC control register + 0x8 + 0x20 + read-write + 0x00000000 + + + ADCAL + ADC group regular conversion + calibration + 31 + 1 + + + ADSTP + ADC group regular conversion + stop + 4 + 1 + + + ADSTART + ADC group regular conversion + start + 2 + 1 + + + ADEN + ADC enable + 0 + 1 + + + + + CFGR1 + CFGR1 + ADC configuration register 1 + 0xC + 0x20 + read-write + 0x00000000 + + + AWDCH + ADC analog watchdog monitored channel + selection + 26 + 4 + + + AWDEN + ADC analog watchdog enable on scope + ADC group regular + 23 + 1 + + + AWDSGL + ADC analog watchdog monitoring a + single channel or all channels + 22 + 1 + + + DISCEN + ADC group regular sequencer + discontinuous mode + 16 + 1 + + + WAIT + Wait conversion mode + 14 + 1 + + + CONT + ADC group regular continuous conversion + mode + 13 + 1 + + + OVRMOD + ADC group regular overrun + configuration + 12 + 1 + + + EXTEN + ADC group regular external trigger + polarity + 10 + 2 + + + EXTSEL + ADC group regular external trigger + source + 6 + 3 + + + ALIGN + ADC data alignement + 5 + 1 + + + RESSEL + ADC data resolution + 3 + 2 + + + SCANDIR + Scan sequence direction + 2 + 1 + + + DMACFG + ADC DMA transfer + configuration + 1 + 1 + + + DMAEN + ADC DMA transfer enable + 0 + 1 + + + + + CFGR2 + CFGR2 + ADC configuration register 2 + 0x10 + 0x20 + read-write + 0x00000000 + + + CKMODE + ADC clock mode + 28 + 4 + + + + + SMPR + SMPR + ADC sampling time register + 0x14 + 0x20 + read-write + 0x00000000 + + + SMP + Sampling time selection + 0 + 3 + + + + + TR + TR + ADC analog watchdog 1 threshold register + 0x20 + 0x20 + read-write + 0x0FFF0000 + + + HT + ADC analog watchdog threshold + high + 16 + 12 + + + LT + ADC analog watchdog threshold + low + 0 + 12 + + + + + CHSELR + CHSELR + ADC group regular sequencer register + 0x28 + 0x20 + read-write + 0x0FFF0000 + + + CHSEL12 + Channel-12 selection + 12 + 1 + + + CHSEL11 + Channel-11 selection + 11 + 1 + + + CHSEL9 + Channel-9 selection + 9 + 1 + + + CHSEL8 + Channel-8 selection + 8 + 1 + + + CHSEL7 + Channel-7 selection + 7 + 1 + + + CHSEL6 + Channel-6 selection + 6 + 1 + + + CHSEL5 + Channel-5 selection + 5 + 1 + + + CHSEL4 + Channel-4 selection + 4 + 1 + + + CHSEL3 + Channel-3 selection + 3 + 1 + + + CHSEL2 + Channel-2 selection + 2 + 1 + + + CHSEL1 + Channel-1 selection + 1 + 1 + + + CHSEL0 + Channel-0 selection + 0 + 1 + + + + + DR + DR + ADC group regular data register + 0x40 + 0x20 + read-only + 0x00000000 + + + DATA + ADC group regular conversion + data + 0 + 16 + + + + + CCSR + CCSR + ADC calibration configuration and status register + 0x44 + 0x20 + read-write + 0x00000000 + + + CALON + Calibration flag + 31 + 1 + read-only + + + CALFAIL + Calibration fail flag + 30 + 1 + + + CALSET + Calibration factor selection + 15 + 1 + + + CALSMP + Calibration sample time selection + 12 + 2 + + + CALSEL + Calibration contents selection + 11 + 1 + + + + + CALRR1 + CALRR1 + ADC calibration result register 1 + 0x48 + 0x20 + read-only + 0x00000000 + + + CALBOUT + offset result + 16 + 7 + + + CALC5OUT + C5 result + 8 + 8 + + + CALC4OUT + C4 result + 0 + 8 + + + + + CALRR2 + CALRR2 + ADC calibration result register 2 + 0x4C + 0x20 + read-only + 0x00000000 + + + CALC3OUT + C3 result + 24 + 8 + + + CALC2OUT + C2 result + 16 + 8 + + + CALC1OUT + C1 result + 8 + 8 + + + CALC0OUT + C0 result + 0 + 8 + + + + + CALFIR1 + CALFIR1 + ADC calibration factor input register 1 + 0x50 + 0x20 + read-write + 0x00000000 + + + CALBIO + Calibration offset factor input + 16 + 7 + + + CALC5IO + Calibration C5 factor input + 8 + 8 + + + CALC4IO + Calibration C4 factor input + 0 + 8 + + + + + CALFIR2 + CALFIR2 + ADC calibration factor input register 2 + 0x54 + 0x20 + read-write + 0x00000000 + + + CALC3IO + Calibration C3 factor input + 24 + 8 + + + CALC2IO + Calibration C2 factor input + 16 + 8 + + + CALC1IO + Calibration C1 factor input + 8 + 8 + + + CALC0IO + Calibration C0 factor input + 0 + 8 + + + + + CCR + CCR + ADC common configuration register + 0x308 + 0x20 + read-write + 0x00000000 + + + TSEN + Temperature sensor enable + 23 + 1 + + + VREFEN + VREFINT enable + 22 + 1 + + + + + + + COMP1 + Comparator + COMP + 0x40010200 + + 0x0 + 0x10 + registers + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + LOCK + CSR register lock + 31 + 1 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + Comparator power mode + selector + 18 + 2 + + + HYST + Comparator hysteresis enable + selector + 16 + 1 + + + POLARITY + Comparator polarity + selector + 15 + 1 + + + WINMODE + Comparator non-inverting input + selector for window mode + 11 + 1 + + + INPSEL + Comparator signal selector for + non-inverting input + 8 + 2 + + + INMSEL + Comparator signal selector for + inverting input INM + 4 + 4 + + + SCALER_EN + SCALER enable bit + 1 + 1 + + + COMP_EN + COMP enable bit + 0 + 1 + + + + + FR + FR + Comparator Filter + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT + Comparator filter and counter + 16 + 16 + + + FLTEN + Filter enable bit + 0 + 1 + + + + + + + COMP2 + Comparator + COMP + 0x40010210 + + 0x0 + 0x10 + registers + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + LOCK + CSR register lock + 31 + 1 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + Comparator power mode + selector + 18 + 2 + + + POLARITY + Comparator polarity + selector + 15 + 1 + + + WINMODE + Comparator non-inverting input + selector for window mode + 11 + 1 + + + INPSEL + Comparator signal selector for + non-inverting input + 8 + 2 + + + INMSEL + Comparator signal selector for + inverting input INM + 4 + 4 + + + COMP_EN + COMP enable bit + 0 + 1 + + + + + FR + FR + Comparator Filter + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT + Comparator filter and counter + 16 + 16 + + + FLTEN + Filter enable bit + 0 + 1 + + + + + + + RCC + Reset and clock control + RCC + 0x40021000 + + 0x0 + 0x400 + registers + + + RCC + RCC global Interrupt + 4 + + + + CR + CR + Clock control register + 0x0 + 0x20 + read-write + 0x00000100 + + + PLLRDY + PLL clock ready flag + 25 + 1 + + + PLLON + PLL enable + 24 + 1 + + + CSSON + Clock security system + enable + 19 + 1 + + + HSEBYP + HSE crystal oscillator + bypass + 18 + 1 + + + HSERDY + HSE clock ready flag + 17 + 1 + + + HSEON + HSE clock enable + 16 + 1 + + + HSIDIV + HSI16 clock division + factor + 11 + 3 + + + HSIRDY + HSI16 clock ready flag + 10 + 1 + + + HSIKERON + HSI16 always enable for peripheral + kernels + 9 + 1 + + + HSION + HSI16 clock enable + 8 + 1 + + + + + ICSCR + ICSCR + Internal clock sources calibration + register + 0x4 + 0x20 + 0x10000000 + + + LSI_STARTUP + LSI startup time + 26 + 2 + read-write + + + LSI_TRIM + LSI clock trimming + 16 + 9 + read-write + + + HSI_FS + HSI frequency selection + 13 + 3 + read-write + + + HSI_TRIM + HSI clock trimming + 0 + 13 + read-write + + + + + CFGR + CFGR + Clock configuration register + 0x8 + 0x20 + 0x00000000 + + + MCOPRE + Microcontroller clock output + prescaler + 28 + 3 + read-write + + + MCOSEL + Microcontroller clock + output + 24 + 3 + read-write + + + PPRE + APB prescaler + 12 + 3 + read-write + + + HPRE + AHB prescaler + 8 + 4 + read-write + + + SWS + System clock switch status + 3 + 3 + read-only + + + SW + System clock switch + 0 + 3 + read-write + + + + + PLLCFGR + PLLCFGR + PLL configuration register + 0xC + 0x20 + 0x00000000 + + + PLLSRC + PLL clock source selection + 0 + 1 + read-write + + + + + ECSCR + ECSCR + External clock source control register + 0x10 + 0x20 + 0x00000000 + + + LSE_DRIVER + LSE clock driver selection + 16 + 2 + read-write + + + HSE_FREQ + HSE clock freqency selection + 2 + 2 + read-write + + + + + CIER + CIER + Clock interrupt enable + register + 0x18 + 0x20 + read-write + 0x00000000 + + + PLLRDYIE + PLL ready interrupt enable + 5 + 1 + + + HSERDYIE + HSE ready interrupt enable + 4 + 1 + + + HSIRDYIE + HSI ready interrupt enable + 3 + 1 + + + LSERDYIE + LSE ready interrupt enable + 1 + 1 + + + LSIRDYIE + LSI ready interrupt enable + 0 + 1 + + + + + CIFR + CIFR + Clock interrupt flag register + 0x1C + 0x20 + read-only + 0x00000000 + + + LSECSSF + LSE clock secure system interrupt flag + 9 + 1 + + + CSSF + HSE clock secure system interrupt flag + 8 + 1 + + + PLLRDYF + PLL ready interrupt flag + 5 + 1 + + + HSERDYF + HSE ready interrupt flag + 4 + 1 + + + HSIRDYF + HSI ready interrupt flag + 3 + 1 + + + LSERDYF + LSE ready interrupt flag + 1 + 1 + + + LSIRDYF + LSI ready interrupt flag + 0 + 1 + + + + + CICR + CICR + Clock interrupt clear register + 0x20 + 0x20 + write-only + 0x00000000 + + + LSECSSC + LSE clock secure system interrupt flag clear + 9 + 1 + + + CSSC + clock secure system interrupt flag clear + 8 + 1 + + + PLLRDYC + PLL ready interrupt clear + 5 + 1 + + + HSERDYC + HSE ready interrupt clear + 4 + 1 + + + HSIRDYC + HSI ready interrupt clear + 3 + 1 + + + LSERDYC + LSE ready interrupt clear + 1 + 1 + + + LSIRDYC + LSI ready interrupt clear + 0 + 1 + + + + + IOPRSTR + IOPRSTR + GPIO reset register + 0x24 + 0x20 + read-write + 0x00000000 + + + GPIOFRST + I/O port F reset + 5 + 1 + + + GPIOBRST + I/O port B reset + 1 + 1 + + + GPIOARST + I/O port A reset + 0 + 1 + + + + + AHBRSTR + AHBRSTR + AHB peripheral reset register + 0x28 + 0x20 + read-write + 0x00000000 + + + CRCRST + CRC reset + 12 + 1 + + + DMARST + DMA reset + 0 + 1 + + + + + APBRSTR1 + APBRSTR1 + APB peripheral reset register + 1 + 0x2C + 0x20 + read-write + 0x00000000 + + + LPTIMRST + Low Power Timer reset + 31 + 1 + + + PWRRST + Power interface reset + 28 + 1 + + + DBGRST + Debug support reset + 27 + 1 + + + I2CRST + I2C reset + 21 + 1 + + + USART2RST + USART2 reset + 17 + 1 + + + SPI2RST + SPI2 reset + 14 + 1 + + + TIM3RST + TIM3 timer reset + 1 + 1 + + + + + APBRSTR2 + APBRSTR2 + APB peripheral reset register + 2 + 0x30 + 0x20 + read-write + 0x00000000 + + + LEDRST + LED reset + 23 + 1 + + + COMP2RST + COMP2 reset + 22 + 1 + + + COMP1RST + COMP1 reset + 21 + 1 + + + ADCRST + ADC reset + 20 + 1 + + + TIM17RST + TIM17 timer reset + 18 + 1 + + + TIM16RST + TIM16 timer reset + 17 + 1 + + + TIM14RST + TIM14 timer reset + 15 + 1 + + + USART1RST + USART1 reset + 14 + 1 + + + SPI1RST + SPI1 reset + 12 + 1 + + + TIM1RST + TIM1 timer reset + 11 + 1 + + + SYSCFGRST + SYSCFG and COMP + reset + 0 + 1 + + + + + IOPENR + IOPENR + GPIO clock enable register + 0x34 + 0x20 + read-write + 0x00000000 + + + GPIOFEN + I/O port F clock enable + 5 + 1 + + + GPIOBEN + I/O port B clock enable + 1 + 1 + + + GPIOAEN + I/O port A clock enable + 0 + 1 + + + + + AHBENR + AHBENR + AHB peripheral clock enable + register + 0x38 + 0x20 + read-write + 0x00000000 + + + CRCEN + CRC clock enable + 12 + 1 + + + SRAMEN + SRAM memory interface clock + enable + 9 + 1 + + + FLASHEN + Flash memory interface clock + enable + 8 + 1 + + + DMAEN + DMA clock enable + 0 + 1 + + + + + APBENR1 + APBENR1 + APB peripheral clock enable register + 1 + 0x3C + 0x20 + read-write + 0x00000000 + + + LPTIMEN + LPTIM clock enable + 31 + 1 + + + PWREN + Power interface clock + enable + 28 + 1 + + + DBGEN + Debug support clock enable + 27 + 1 + + + I2CEN + I2C clock enable + 21 + 1 + + + USART2EN + USART2 clock enable + 17 + 1 + + + SPI2EN + SPI2 clock enable + 14 + 1 + + + WWDGEN + WWDG clock enable + 11 + 1 + + + RTCAPBEN + RTC APB clock enable + 10 + 1 + + + TIM3EN + TIM3 timer clock enable + 1 + 1 + + + + + APBENR2 + APBENR2 + APB peripheral clock enable register + 2 + 0x40 + 0x20 + read-write + 0x00000000 + + + LEDEN + LED clock enable + 23 + 1 + + + COMP2EN + COMP2 clock enable + 22 + 1 + + + COMP1EN + COMP1 clock enable + 21 + 1 + + + ADCEN + ADC clock enable + 20 + 1 + + + TIM17EN + TIM16 timer clock enable + 18 + 1 + + + TIM16EN + TIM16 timer clock enable + 17 + 1 + + + TIM14EN + TIM14 timer clock enable + 15 + 1 + + + USART1EN + USART1 clock enable + 14 + 1 + + + SPI1EN + SPI1 clock enable + 12 + 1 + + + TIM1EN + TIM1 timer clock enable + 11 + 1 + + + SYSCFGEN + SYSCFG, COMP and VREFBUF clock + enable + 0 + 1 + + + + + CCIPR + CCIPR + Peripherals independent clock configuration + register + 0x54 + 0x20 + read-write + 0x00000000 + + + LPTIM1SEL + LPTIM1 clock source + selection + 18 + 2 + + + COMP2SEL + COMP2 clock source + selection + 9 + 1 + + + COMP1SEL + COMP1 clock source + selection + 8 + 1 + + + PVDSEL + PVD detect clock source + selection + 7 + 1 + + + + + BDCR + BDCR + RTC domain control register + 0x5C + 0x20 + read-write + 0x00000000 + + + LSCOSEL + Low-speed clock output + selection + 25 + 1 + + + LSCOEN + Low-speed clock output (LSCO) + enable + 24 + 1 + + + BDRST + RTC domain software reset + 16 + 1 + + + RTCEN + RTC clock source enable + 15 + 1 + + + RTCSEL + RTC clock source selection + 8 + 2 + + + LSECSSD + LSE CSS detect + 6 + 1 + + + LSECSSON + LSE CSS enable + 5 + 1 + + + LSEBYP + LSE oscillator bypass + 2 + 1 + + + LSERDY + LSE oscillator ready + 1 + 1 + + + LSEON + LSE oscillator enable + 0 + 1 + + + + + CSR + CSR + Control/status register + 0x60 + 0x20 + read-write + 0x00000000 + + + WWDGRSTF + Window watchdog reset flag + 30 + 1 + + + IWDGRSTF + Independent window watchdog reset + flag + 29 + 1 + + + SFTRSTF + Software reset flag + 28 + 1 + + + PWRRSTF + BOR or POR/PDR flag + 27 + 1 + + + PINRSTF + Pin reset flag + 26 + 1 + + + OBLRSTF + Option byte loader reset + flag + 25 + 1 + + + RMVF + Remove reset flags + 23 + 1 + + + LSIRDY + LSI oscillator ready + 1 + 1 + + + LSION + LSI oscillator enable + 0 + 1 + + + + + + + PWR + Power control + PWR + 0x40007000 + + 0x0 + 0x400 + registers + + + + CR1 + CR1 + Power control register 1 + 0x0 + 0x20 + read-write + 0x00030000 + + + HSION_CTRL + HSI open time control + 19 + 1 + + + SRAM_RETV + SRAM retention voltage control + 16 + 3 + + + LPR + Low-power run + 14 + 1 + + + FLS_SLPTIME + Flash wait time after wakeup from the stop mode + 12 + 2 + + + MRRDY_TIME + Time selection wakeup from LP to VR + 10 + 2 + + + VOS + Voltage scaling range + selection + 9 + 1 + + + DBP + Disable backup domain write + protection + 8 + 1 + + + BIAS_CR_SEL + MR Bias current selection + 4 + 1 + + + BIAS_CR + MR Bias current + 0 + 4 + + + + + CR2 + CR2 + Power control register 2 + 0x4 + 0x20 + read-write + 0x00000500 + + + FLT_TIME + Digital filter time configuration + 9 + 3 + + + FLTEN + Digital filter enable + 8 + 1 + + + PVDT + Power voltage detector threshold + selection + 4 + 3 + + + SRCSEL + Power voltage detector volatage + selection + 2 + 1 + + + PVDE + Power voltage detector + enable + 0 + 1 + + + + + SR + SR + Power status register + 0x14 + 0x20 + read-only + 0x00000000 + + + PVDO + PVD output + 11 + 1 + + + + + + + GPIOA + General-purpose I/Os + GPIO + 0x50000000 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xEBFFFFFF + + + MODE15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + MODE14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + MODE13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + MODE12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + MODE11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + MODE10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + MODE9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT15 + Port x configuration bits (y = + 0..15) + 15 + 1 + + + OT14 + Port x configuration bits (y = + 0..15) + 14 + 1 + + + OT13 + Port x configuration bits (y = + 0..15) + 13 + 1 + + + OT12 + Port x configuration bits (y = + 0..15) + 12 + 1 + + + OT11 + Port x configuration bits (y = + 0..15) + 11 + 1 + + + OT10 + Port x configuration bits (y = + 0..15) + 10 + 1 + + + OT9 + Port x configuration bits (y = + 0..15) + 9 + 1 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x0C000000 + + + OSPEED15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + OSPEED14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + OSPEED13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + OSPEED12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + OSPEED11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + OSPEED10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + OSPEED9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x24000000 + + + PUPD15 + Port x configuration bits (y = + 0..15) + 30 + 2 + + + PUPD14 + Port x configuration bits (y = + 0..15) + 28 + 2 + + + PUPD13 + Port x configuration bits (y = + 0..15) + 26 + 2 + + + PUPD12 + Port x configuration bits (y = + 0..15) + 24 + 2 + + + PUPD11 + Port x configuration bits (y = + 0..15) + 22 + 2 + + + PUPD10 + Port x configuration bits (y = + 0..15) + 20 + 2 + + + PUPD9 + Port x configuration bits (y = + 0..15) + 18 + 2 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID15 + Port input data (y = + 0..15) + 15 + 1 + + + ID14 + Port input data (y = + 0..15) + 14 + 1 + + + ID13 + Port input data (y = + 0..15) + 13 + 1 + + + ID12 + Port input data (y = + 0..15) + 12 + 1 + + + ID11 + Port input data (y = + 0..15) + 11 + 1 + + + ID10 + Port input data (y = + 0..15) + 10 + 1 + + + ID9 + Port input data (y = + 0..15) + 9 + 1 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD15 + Port output data (y = + 0..15) + 15 + 1 + + + OD14 + Port output data (y = + 0..15) + 14 + 1 + + + OD13 + Port output data (y = + 0..15) + 13 + 1 + + + OD12 + Port output data (y = + 0..15) + 12 + 1 + + + OD11 + Port output data (y = + 0..15) + 11 + 1 + + + OD10 + Port output data (y = + 0..15) + 10 + 1 + + + OD9 + Port output data (y = + 0..15) + 9 + 1 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR15 + Port x reset bit y (y = + 0..15) + 31 + 1 + + + BR14 + Port x reset bit y (y = + 0..15) + 30 + 1 + + + BR13 + Port x reset bit y (y = + 0..15) + 29 + 1 + + + BR12 + Port x reset bit y (y = + 0..15) + 28 + 1 + + + BR11 + Port x reset bit y (y = + 0..15) + 27 + 1 + + + BR10 + Port x reset bit y (y = + 0..15) + 26 + 1 + + + BR9 + Port x reset bit y (y = + 0..15) + 25 + 1 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS15 + Port x set bit y (y= + 0..15) + 15 + 1 + + + BS14 + Port x set bit y (y= + 0..15) + 14 + 1 + + + BS13 + Port x set bit y (y= + 0..15) + 13 + 1 + + + BS12 + Port x set bit y (y= + 0..15) + 12 + 1 + + + BS11 + Port x set bit y (y= + 0..15) + 11 + 1 + + + BS10 + Port x set bit y (y= + 0..15) + 10 + 1 + + + BS9 + Port x set bit y (y= + 0..15) + 9 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK15 + Port x lock bit y (y= + 0..15) + 15 + 1 + + + LCK14 + Port x lock bit y (y= + 0..15) + 14 + 1 + + + LCK13 + Port x lock bit y (y= + 0..15) + 13 + 1 + + + LCK12 + Port x lock bit y (y= + 0..15) + 12 + 1 + + + LCK11 + Port x lock bit y (y= + 0..15) + 11 + 1 + + + LCK10 + Port x lock bit y (y= + 0..15) + 10 + 1 + + + LCK9 + Port x lock bit y (y= + 0..15) + 9 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR15 + Port Reset bit + 15 + 1 + + + BR14 + Port Reset bit + 14 + 1 + + + BR13 + Port Reset bit + 13 + 1 + + + BR12 + Port Reset bit + 12 + 1 + + + BR11 + Port Reset bit + 11 + 1 + + + BR10 + Port Reset bit + 10 + 1 + + + BR9 + Port Reset bit + 9 + 1 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOB + General-purpose I/Os + GPIO + 0x50000400 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + MODE8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + MODE7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + MODE6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + MODE5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + MODE4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + MODE3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + MODE2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + MODE1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + MODE0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT8 + Port x configuration bits (y = + 0..15) + 8 + 1 + + + OT7 + Port x configuration bits (y = + 0..15) + 7 + 1 + + + OT6 + Port x configuration bits (y = + 0..15) + 6 + 1 + + + OT5 + Port x configuration bits (y = + 0..15) + 5 + 1 + + + OT4 + Port x configuration bits (y = + 0..15) + 4 + 1 + + + OT3 + Port x configuration bits (y = + 0..15) + 3 + 1 + + + OT2 + Port x configuration bits (y = + 0..15) + 2 + 1 + + + OT1 + Port x configuration bits (y = + 0..15) + 1 + 1 + + + OT0 + Port x configuration bits (y = + 0..15) + 0 + 1 + + + + + OSPEEDR + OSPEEDR + GPIO port output speed + register + 0x8 + 0x20 + read-write + 0x00000000 + + + OSPEED8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + OSPEED7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + OSPEED6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + OSPEED5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + OSPEED4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + OSPEED3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + OSPEED2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + OSPEED1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + OSPEED0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + PUPDR + PUPDR + GPIO port pull-up/pull-down + register + 0xC + 0x20 + read-write + 0x00000000 + + + PUPD8 + Port x configuration bits (y = + 0..15) + 16 + 2 + + + PUPD7 + Port x configuration bits (y = + 0..15) + 14 + 2 + + + PUPD6 + Port x configuration bits (y = + 0..15) + 12 + 2 + + + PUPD5 + Port x configuration bits (y = + 0..15) + 10 + 2 + + + PUPD4 + Port x configuration bits (y = + 0..15) + 8 + 2 + + + PUPD3 + Port x configuration bits (y = + 0..15) + 6 + 2 + + + PUPD2 + Port x configuration bits (y = + 0..15) + 4 + 2 + + + PUPD1 + Port x configuration bits (y = + 0..15) + 2 + 2 + + + PUPD0 + Port x configuration bits (y = + 0..15) + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID8 + Port input data (y = + 0..15) + 8 + 1 + + + ID7 + Port input data (y = + 0..15) + 7 + 1 + + + ID6 + Port input data (y = + 0..15) + 6 + 1 + + + ID5 + Port input data (y = + 0..15) + 5 + 1 + + + ID4 + Port input data (y = + 0..15) + 4 + 1 + + + ID3 + Port input data (y = + 0..15) + 3 + 1 + + + ID2 + Port input data (y = + 0..15) + 2 + 1 + + + ID1 + Port input data (y = + 0..15) + 1 + 1 + + + ID0 + Port input data (y = + 0..15) + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD8 + Port output data (y = + 0..15) + 8 + 1 + + + OD7 + Port output data (y = + 0..15) + 7 + 1 + + + OD6 + Port output data (y = + 0..15) + 6 + 1 + + + OD5 + Port output data (y = + 0..15) + 5 + 1 + + + OD4 + Port output data (y = + 0..15) + 4 + 1 + + + OD3 + Port output data (y = + 0..15) + 3 + 1 + + + OD2 + Port output data (y = + 0..15) + 2 + 1 + + + OD1 + Port output data (y = + 0..15) + 1 + 1 + + + OD0 + Port output data (y = + 0..15) + 0 + 1 + + + + + BSRR + BSRR + GPIO port bit set/reset + register + 0x18 + 0x20 + write-only + 0x00000000 + + + BR8 + Port x reset bit y (y = + 0..15) + 24 + 1 + + + BR7 + Port x reset bit y (y = + 0..15) + 23 + 1 + + + BR6 + Port x reset bit y (y = + 0..15) + 22 + 1 + + + BR5 + Port x reset bit y (y = + 0..15) + 21 + 1 + + + BR4 + Port x reset bit y (y = + 0..15) + 20 + 1 + + + BR3 + Port x reset bit y (y = + 0..15) + 19 + 1 + + + BR2 + Port x reset bit y (y = + 0..15) + 18 + 1 + + + BR1 + Port x reset bit y (y = + 0..15) + 17 + 1 + + + BR0 + Port x set bit y (y= + 0..15) + 16 + 1 + + + BS8 + Port x set bit y (y= + 0..15) + 8 + 1 + + + BS7 + Port x set bit y (y= + 0..15) + 7 + 1 + + + BS6 + Port x set bit y (y= + 0..15) + 6 + 1 + + + BS5 + Port x set bit y (y= + 0..15) + 5 + 1 + + + BS4 + Port x set bit y (y= + 0..15) + 4 + 1 + + + BS3 + Port x set bit y (y= + 0..15) + 3 + 1 + + + BS2 + Port x set bit y (y= + 0..15) + 2 + 1 + + + BS1 + Port x set bit y (y= + 0..15) + 1 + 1 + + + BS0 + Port x set bit y (y= + 0..15) + 0 + 1 + + + + + LCKR + LCKR + GPIO port configuration lock + register + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + Port x lock bit y (y= + 0..15) + 16 + 1 + + + LCK8 + Port x lock bit y (y= + 0..15) + 8 + 1 + + + LCK7 + Port x lock bit y (y= + 0..15) + 7 + 1 + + + LCK6 + Port x lock bit y (y= + 0..15) + 6 + 1 + + + LCK5 + Port x lock bit y (y= + 0..15) + 5 + 1 + + + LCK4 + Port x lock bit y (y= + 0..15) + 4 + 1 + + + LCK3 + Port x lock bit y (y= + 0..15) + 3 + 1 + + + LCK2 + Port x lock bit y (y= + 0..15) + 2 + 1 + + + LCK1 + Port x lock bit y (y= + 0..15) + 1 + 1 + + + LCK0 + Port x lock bit y (y= + 0..15) + 0 + 1 + + + + + AFRL + AFRL + GPIO alternate function low + register + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + Alternate function selection for port x + bit y (y = 0..7) + 28 + 4 + + + AFSEL6 + Alternate function selection for port x + bit y (y = 0..7) + 24 + 4 + + + AFSEL5 + Alternate function selection for port x + bit y (y = 0..7) + 20 + 4 + + + AFSEL4 + Alternate function selection for port x + bit y (y = 0..7) + 16 + 4 + + + AFSEL3 + Alternate function selection for port x + bit y (y = 0..7) + 12 + 4 + + + AFSEL2 + Alternate function selection for port x + bit y (y = 0..7) + 8 + 4 + + + AFSEL1 + Alternate function selection for port x + bit y (y = 0..7) + 4 + 4 + + + AFSEL0 + Alternate function selection for port x + bit y (y = 0..7) + 0 + 4 + + + + + AFRH + AFRH + GPIO alternate function high + register + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + Alternate function selection for port x + bit y (y = 8..15) + 28 + 4 + + + AFSEL14 + Alternate function selection for port x + bit y (y = 8..15) + 24 + 4 + + + AFSEL13 + Alternate function selection for port x + bit y (y = 8..15) + 20 + 4 + + + AFSEL12 + Alternate function selection for port x + bit y (y = 8..15) + 16 + 4 + + + AFSEL11 + Alternate function selection for port x + bit y (y = 8..15) + 12 + 4 + + + AFSEL10 + Alternate function selection for port x + bit y (y = 8..15) + 8 + 4 + + + AFSEL9 + Alternate function selection for port x + bit y (y = 8..15) + 4 + 4 + + + AFSEL8 + Alternate function selection for port x + bit y (y = 8..15) + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOF + 0x50001400 + + + EXTI + External interrupt/event + controller + EXTI + 0x40021800 + + 0x0 + 0x400 + registers + + + PVD + PVD Interrupt through EXTI Lines 16 + 1 + + + EXTI0_1 + EXTI Line 0 and 1 Interrupt + 5 + + + EXTI2_3 + EXTI Line 2 and 3 Interrupt + 6 + + + EXTI4_15 + EXTI Line 4 to 15 Interrupt + 7 + + + + RTSR + RTSR + EXTI rising trigger selection + register + 0x0 + 0x20 + read-write + 0x00000000 + + + RT18 + Rising trigger event configuration bit + of Configurable Event input + 18 + 1 + + + RT17 + Rising trigger event configuration bit + of Configurable Event input + 17 + 1 + + + RT16 + Rising trigger event configuration bit + of Configurable Event input + 16 + 1 + + + RT15 + Rising trigger event configuration bit + of Configurable Event input + 15 + 1 + + + RT14 + Rising trigger event configuration bit + of Configurable Event input + 14 + 1 + + + RT13 + Rising trigger event configuration bit + of Configurable Event input + 13 + 1 + + + RT12 + Rising trigger event configuration bit + of Configurable Event input + 12 + 1 + + + RT11 + Rising trigger event configuration bit + of Configurable Event input + 11 + 1 + + + RT10 + Rising trigger event configuration bit + of Configurable Event input + 10 + 1 + + + RT9 + Rising trigger event configuration bit + of Configurable Event input + 9 + 1 + + + RT8 + Rising trigger event configuration bit + of Configurable Event input + 8 + 1 + + + RT7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + RT6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + RT5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + RT4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + RT3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + RT2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + RT1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + RT0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + FTSR + FTSR + EXTI falling trigger selection + register + 0x4 + 0x20 + read-write + 0x00000000 + + + FT18 + Falling trigger event configuration bit + of Configurable Event input + 18 + 1 + + + FT17 + Falling trigger event configuration bit + of Configurable Event input + 17 + 1 + + + FT16 + Falling trigger event configuration bit + of Configurable Event input + 16 + 1 + + + FT15 + Falling trigger event configuration bit + of Configurable Event input + 15 + 1 + + + FT14 + Falling trigger event configuration bit + of Configurable Event input + 14 + 1 + + + FT13 + Falling trigger event configuration bit + of Configurable Event input + 13 + 1 + + + FT12 + Falling trigger event configuration bit + of Configurable Event input + 12 + 1 + + + FT11 + Falling trigger event configuration bit + of Configurable Event input + 11 + 1 + + + FT10 + Falling trigger event configuration bit + of Configurable Event input + 10 + 1 + + + FT9 + Falling trigger event configuration bit + of Configurable Event input + 9 + 1 + + + FT8 + Falling trigger event configuration bit + of Configurable Event input + 8 + 1 + + + FT7 + Falling trigger event configuration bit + of Configurable Event input + 7 + 1 + + + FT6 + Falling trigger event configuration bit + of Configurable Event input + 6 + 1 + + + FT5 + Falling trigger event configuration bit + of Configurable Event input + 5 + 1 + + + FT4 + Falling trigger event configuration bit + of Configurable Event input + 4 + 1 + + + FT3 + Falling trigger event configuration bit + of Configurable Event input + 3 + 1 + + + FT2 + Falling trigger event configuration bit + of Configurable Event input + 2 + 1 + + + FT1 + Falling trigger event configuration bit + of Configurable Event input + 1 + 1 + + + FT0 + Falling trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + SWIER + SWIER + EXTI software interrupt event + register + 0x8 + 0x20 + read-write + 0x00000000 + + + SWI18 + Rising trigger event configuration bit + of Configurable Event input + 18 + 1 + + + SWI17 + Rising trigger event configuration bit + of Configurable Event input + 17 + 1 + + + SWI16 + Rising trigger event configuration bit + of Configurable Event input + 16 + 1 + + + SWI15 + Rising trigger event configuration bit + of Configurable Event input + 15 + 1 + + + SWI14 + Rising trigger event configuration bit + of Configurable Event input + 14 + 1 + + + SWI13 + Rising trigger event configuration bit + of Configurable Event input + 13 + 1 + + + SWI12 + Rising trigger event configuration bit + of Configurable Event input + 12 + 1 + + + SWI11 + Rising trigger event configuration bit + of Configurable Event input + 11 + 1 + + + SWI10 + Rising trigger event configuration bit + of Configurable Event input + 10 + 1 + + + SWI9 + Rising trigger event configuration bit + of Configurable Event input + 9 + 1 + + + SWI8 + Rising trigger event configuration bit + of Configurable Event input + 8 + 1 + + + SWI7 + Rising trigger event configuration bit + of Configurable Event input + 7 + 1 + + + SWI6 + Rising trigger event configuration bit + of Configurable Event input + 6 + 1 + + + SWI5 + Rising trigger event configuration bit + of Configurable Event input + 5 + 1 + + + SWI4 + Rising trigger event configuration bit + of Configurable Event input + 4 + 1 + + + SWI3 + Rising trigger event configuration bit + of Configurable Event input + 3 + 1 + + + SWI2 + Rising trigger event configuration bit + of Configurable Event input + 2 + 1 + + + SWI1 + Rising trigger event configuration bit + of Configurable Event input + 1 + 1 + + + SWI0 + Rising trigger event configuration bit + of Configurable Event input + 0 + 1 + + + + + PR + PR + EXTI pending + register + 0xC + 0x20 + read-write + 0x00000000 + + + PR18 + configurable event inputs x rising edge + Pending bit. + 18 + 1 + + + PR17 + configurable event inputs x rising edge + Pending bit. + 17 + 1 + + + PR16 + configurable event inputs x rising edge + Pending bit. + 16 + 1 + + + PR15 + configurable event inputs x rising edge + Pending bit. + 15 + 1 + + + PR14 + configurable event inputs x rising edge + Pending bit. + 14 + 1 + + + PR13 + configurable event inputs x rising edge + Pending bit + 13 + 1 + + + PR12 + configurable event inputs x rising edge + Pending bit. + 12 + 1 + + + PR11 + configurable event inputs x rising edge + Pending bit. + 11 + 1 + + + PR10 + configurable event inputs x rising edge + Pending bit. + 10 + 1 + + + PR9 + configurable event inputs x rising edge + Pending bit. + 9 + 1 + + + PR8 + configurable event inputs x rising edge + Pending bit. + 8 + 1 + + + PR7 + configurable event inputs x rising edge + Pending bit. + 7 + 1 + + + PR6 + configurable event inputs x rising edge + Pending bit. + 6 + 1 + + + PR5 + configurable event inputs x rising edge + Pending bit. + 5 + 1 + + + PR4 + configurable event inputs x rising edge + Pending bit. + 4 + 1 + + + PR3 + configurable event inputs x rising edge + Pending bit. + 3 + 1 + + + PR2 + configurable event inputs x rising edge + Pending bit. + 2 + 1 + + + PR1 + configurable event inputs x rising edge + Pending bit. + 1 + 1 + + + PR0 + configurable event inputs x rising edge + Pending bit. + 0 + 1 + + + + + EXTICR1 + EXTICR1 + EXTI external interrupt selection + register + 0x60 + 0x20 + read-write + 0x00000000 + + + EXTI3 + GPIO port selection + 24 + 2 + + + EXTI2 + GPIO port selection + 16 + 2 + + + EXTI1 + GPIO port selection + 8 + 2 + + + EXTI0 + GPIO port selection + 0 + 2 + + + + + EXTICR2 + EXTICR2 + EXTI external interrupt selection + register + 0x64 + 0x20 + read-write + 0x00000000 + + + EXTI7 + GPIO port selection + 24 + 1 + + + EXTI6 + GPIO port selection + 16 + 1 + + + EXTI5 + GPIO port selection + 8 + 1 + + + EXTI4 + GPIO port selection + 0 + 2 + + + + + EXTICR3 + EXTICR3 + EXTI external interrupt selection + register + 0x68 + 0x20 + read-write + 0x00000000 + + + EXTI8 + GPIO port selection + 0 + 1 + + + + + IMR + IMR + EXTI CPU wakeup with interrupt mask + register + 0x80 + 0x20 + read-write + 0xFFF80000 + + + IM29 + CPU wakeup with interrupt mask on event + input + 29 + 1 + + + IM19 + CPU wakeup with interrupt mask on event + input + 19 + 1 + + + IM18 + CPU wakeup with interrupt mask on event + input + 18 + 1 + + + IM17 + CPU wakeup with interrupt mask on event + input + 17 + 1 + + + IM16 + CPU wakeup with interrupt mask on event + input + 16 + 1 + + + IM15 + CPU wakeup with interrupt mask on event + input + 15 + 1 + + + IM14 + CPU wakeup with interrupt mask on event + input + 14 + 1 + + + IM13 + CPU wakeup with interrupt mask on event + input + 13 + 1 + + + IM12 + CPU wakeup with interrupt mask on event + input + 12 + 1 + + + IM11 + CPU wakeup with interrupt mask on event + input + 11 + 1 + + + IM10 + CPU wakeup with interrupt mask on event + input + 10 + 1 + + + IM9 + CPU wakeup with interrupt mask on event + input + 9 + 1 + + + IM8 + CPU wakeup with interrupt mask on event + input + 8 + 1 + + + IM7 + CPU wakeup with interrupt mask on event + input + 7 + 1 + + + IM6 + CPU wakeup with interrupt mask on event + input + 6 + 1 + + + IM5 + CPU wakeup with interrupt mask on event + input + 5 + 1 + + + IM4 + CPU wakeup with interrupt mask on event + input + 4 + 1 + + + IM3 + CPU wakeup with interrupt mask on event + input + 3 + 1 + + + IM2 + CPU wakeup with interrupt mask on event + input + 2 + 1 + + + IM1 + CPU wakeup with interrupt mask on event + input + 1 + 1 + + + IM0 + CPU wakeup with interrupt mask on event + input + 0 + 1 + + + + + EMR + EMR + EXTI CPU wakeup with event mask + register + 0x84 + 0x20 + read-write + 0x00000000 + + + EM29 + CPU wakeup with event mask on event + input + 29 + 1 + + + EM19 + CPU wakeup with event mask on event + input + 19 + 1 + + + EM18 + CPU wakeup with event mask on event + input + 18 + 1 + + + EM17 + CPU wakeup with event mask on event + input + 17 + 1 + + + EM16 + CPU wakeup with event mask on event + input + 16 + 1 + + + EM15 + CPU wakeup with event mask on event + input + 15 + 1 + + + EM14 + CPU wakeup with event mask on event + input + 14 + 1 + + + EM13 + CPU wakeup with event mask on event + input + 13 + 1 + + + EM12 + CPU wakeup with event mask on event + input + 12 + 1 + + + EM11 + CPU wakeup with event mask on event + input + 11 + 1 + + + EM10 + CPU wakeup with event mask on event + input + 10 + 1 + + + EM9 + CPU wakeup with event mask on event + input + 9 + 1 + + + EM8 + CPU wakeup with event mask on event + input + 8 + 1 + + + EM7 + CPU wakeup with event mask on event + input + 7 + 1 + + + EM6 + CPU wakeup with event mask on event + input + 6 + 1 + + + EM5 + CPU wakeup with event mask on event + input + 5 + 1 + + + EM4 + CPU wakeup with event mask on event + input + 4 + 1 + + + EM3 + CPU wakeup with event mask on event + input + 3 + 1 + + + EM2 + CPU wakeup with event mask on event + input + 2 + 1 + + + EM1 + CPU wakeup with event mask on event + input + 1 + 1 + + + EM0 + CPU wakeup with event mask on event + input + 0 + 1 + + + + + + + LPTIM + Low power timer + LPTIM + 0x40007C00 + + 0x0 + 0x400 + registers + + + + ISR + ISR + Interrupt and Status Register + 0x0 + 0x20 + read-only + 0x00000000 + + + ARRM + Autoreload match + 1 + 1 + + + + + ICR + ICR + Interrupt Clear Register + 0x4 + 0x20 + write-only + 0x00000000 + + + ARRMCF + Autoreload match Clear + Flag + 1 + 1 + + + + + IER + IER + Interrupt Enable Register + 0x8 + 0x20 + read-write + 0x00000000 + + + ARRMIE + Autoreload match Interrupt + Enable + 1 + 1 + + + + + CFGR + CFGR + Configuration Register + 0xC + 0x20 + read-write + 0x00000000 + + + PRELOAD + Registers update mode + 22 + 1 + + + PRESC + Clock prescaler + 9 + 3 + + + + + CR + CR + Control Register + 0x10 + 0x20 + read-write + 0x00000000 + + + RSTARE + Reset after read enable + 4 + 1 + + + SNGSTRT + LPTIM start in single mode + 1 + 1 + + + ENABLE + LPTIM Enable + 0 + 1 + + + + + ARR + ARR + Autoreload Register + 0x18 + 0x20 + read-write + 0x00000001 + + + ARR + Auto reload value + 0 + 16 + + + + + CNT + CNT + Counter Register + 0x1C + 0x20 + read-only + 0x00000000 + + + CNT + Counter value + 0 + 16 + + + + + + + USART1 + Universal synchronous asynchronous receiver + transmitter + USART + 0x40013800 + + 0x0 + 0x400 + registers + + + USART1 + USART1 global Interrupt + 27 + + + + SR + SR + Status register + 0x0 + 0x20 + 0x00C0 + + + ABRRQ + Automate baudrate detection requeset + 12 + 1 + write-only + + + ABRE + Automate baudrate detection error flag + 11 + 1 + read-only + + + ABRF + Automate baudrate detection flag + 10 + 1 + read-only + + + CTS + CTS flag + 9 + 1 + read-write + + + TXE + Transmit data register + empty + 7 + 1 + read-only + + + TC + Transmission complete + 6 + 1 + read-write + + + RXNE + Read data register not + empty + 5 + 1 + read-write + + + IDLE + IDLE line detected + 4 + 1 + read-only + + + ORE + Overrun error + 3 + 1 + read-only + + + NE + Noise error flag + 2 + 1 + read-only + + + FE + Framing error + 1 + 1 + read-only + + + PE + Parity error + 0 + 1 + read-only + + + + + DR + DR + Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + DR + Data value + 0 + 9 + + + + + BRR + BRR + Baud rate register + 0x8 + 0x20 + read-write + 0x0000 + + + DIV_Mantissa + mantissa of USARTDIV + 4 + 12 + + + DIV_Fraction + fraction of USARTDIV + 0 + 4 + + + + + CR1 + CR1 + Control register 1 + 0xC + 0x20 + read-write + 0x0000 + + + UE + USART enable + 13 + 1 + + + M + Word length + 12 + 1 + + + WAKE + Wakeup method + 11 + 1 + + + PCE + Parity control enable + 10 + 1 + + + PS + Parity selection + 9 + 1 + + + PEIE + PE interrupt enable + 8 + 1 + + + TXEIE + TXE interrupt enable + 7 + 1 + + + TCIE + Transmission complete interrupt + enable + 6 + 1 + + + RXNEIE + RXNE interrupt enable + 5 + 1 + + + IDLEIE + IDLE interrupt enable + 4 + 1 + + + TE + Transmitter enable + 3 + 1 + + + RE + Receiver enable + 2 + 1 + + + RWU + Receiver wakeup + 1 + 1 + + + SBK + Send break + 0 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x10 + 0x20 + read-write + 0x0000 + + + STOP + STOP bits + 12 + 2 + + + CLKEN + Clock enable + 11 + 1 + + + CPOL + Clock polarity + 10 + 1 + + + CPHA + Clock phase + 9 + 1 + + + LBCL + Last bit clock pulse + 8 + 1 + + + ADD + Address of the USART node + 0 + 4 + + + + + CR3 + CR3 + Control register 3 + 0x14 + 0x20 + read-write + 0x0000 + + + ABRMOD + Auto baudrate mode + 13 + 2 + + + ABREN + Auto baudrate enable + 12 + 1 + + + OVER8 + Oversampling mode + 11 + 1 + + + CTSIE + CTS interrupt enable + 10 + 1 + + + CTSE + CTS enable + 9 + 1 + + + RTSE + RTS enable + 8 + 1 + + + DMAT + DMA enable transmitter + 7 + 1 + + + DMAR + DMA enable receiver + 6 + 1 + + + HDSEL + Half-duplex selection + 3 + 1 + + + IRLP + IrDA low-power + 2 + 1 + + + IREN + IrDA mode enable + 1 + 1 + + + EIE + Error interrupt enable + 0 + 1 + + + + + + + USART2 + 0x40004400 + + USART2 + USART2 global Interrupt + 28 + + + + RTC + Real time clock + RTC + 0x40002800 + + 0x0 + 0x400 + registers + + + RTC + RTC Interrupt through EXTI Lines 19 + 2 + + + + CRH + CRH + RTC Control Register High + 0x0 + 0x20 + read-write + 0x00000000 + + + OWIE + Overflow interrupt Enable + 2 + 1 + + + ALRIE + Alarm interrupt Enable + 1 + 1 + + + SECIE + Second interrupt Enable + 0 + 1 + + + + + CRL + CRL + RTC Control Register Low + 0x4 + 0x20 + 0x00000020 + + + RTOFF + RTC operation OFF + 5 + 1 + read-only + + + CNF + Configuration Flag + 4 + 1 + read-write + + + RSF + Registers Synchronized + Flag + 3 + 1 + read-write + + + OWF + Overflow Flag + 2 + 1 + read-write + + + ALRF + Alarm Flag + 1 + 1 + read-write + + + SECF + Second Flag + 0 + 1 + read-write + + + + + PRLH + PRLH + RTC Prescaler Load Register + High + 0x8 + 0x20 + write-only + 0x00000000 + + + PRLH + RTC Prescaler Load Register + High + 0 + 4 + + + + + PRLL + PRLL + RTC Prescaler Load Register + Low + 0xC + 0x20 + write-only + 0x8000 + + + PRLL + RTC Prescaler Divider Register + Low + 0 + 16 + + + + + DIVH + DIVH + RTC Prescaler Divider Register + High + 0x10 + 0x20 + read-only + 0x00000000 + + + DIVH + RTC prescaler divider register + high + 0 + 4 + + + + + DIVL + DIVL + RTC Prescaler Divider Register + Low + 0x14 + 0x20 + read-only + 0x8000 + + + DIVL + RTC prescaler divider register + Low + 0 + 16 + + + + + CNTH + CNTH + RTC Counter Register High + 0x18 + 0x20 + read-write + 0x00000000 + + + CNTH + RTC counter register high + 0 + 16 + + + + + CNTL + CNTL + RTC Counter Register Low + 0x1C + 0x20 + read-write + 0x00000000 + + + CNTL + RTC counter register Low + 0 + 16 + + + + + ALRH + ALRH + RTC Alarm Register High + 0x20 + 0x20 + write-only + 0xFFFF + + + ALRH + RTC alarm register high + 0 + 16 + + + + + ALRL + ALRL + RTC Alarm Register Low + 0x24 + 0x20 + write-only + 0xFFFF + + + ALRL + RTC alarm register low + 0 + 16 + + + + + RTCCR + RTCCR + RTC clock calibration + 0x2C + 0x20 + read-write + 0x0000 + + + ASOS + Alarm or second output selection + 9 + 1 + + + ASOE + Alarm or second output enable + 8 + 1 + + + CCO + Calibration clock output + 7 + 1 + + + CAL + Calibration value + 0 + 7 + + + + + + + IWDG + Independent watchdog + IWDG + 0x40003000 + + 0x0 + 0x400 + registers + + + + KR + KR + Key register (IWDG_KR) + 0x0 + 0x20 + write-only + 0x00000000 + + + KEY + Key value + 0 + 16 + + + + + PR + PR + Prescaler register (IWDG_PR) + 0x4 + 0x20 + read-write + 0x00000000 + + + PR + Prescaler divider + 0 + 3 + + + + + RLR + RLR + Reload register (IWDG_RLR) + 0x8 + 0x20 + read-write + 0x00000FFF + + + RL + Watchdog counter reload + value + 0 + 12 + + + + + SR + SR + Status register (IWDG_SR) + 0xC + 0x20 + read-only + 0x00000000 + + + WVU + Watchdog counter window value update + 2 + 1 + + + RVU + Watchdog counter reload value + update + 1 + 1 + + + PVU + Watchdog prescaler value + update + 0 + 1 + + + + + WINR + WINR + Window register (IWDG_SR) + 0x10 + 0x20 + read-only + 0x00000000 + + + WIN + window counter + 0 + 12 + + + + + + + WWDG + Window watchdog + WWDG + 0x40002C00 + + 0x0 + 0x400 + registers + + + WWDG + Window WatchDog Interrupt + 0 + + + + CR + CR + Control register (WWDG_CR) + 0x0 + 0x20 + read-write + 0x0000007F + + + WDGA + Activation bit + 7 + 1 + + + T + 7-bit counter (MSB to LSB) + 0 + 7 + + + + + CFR + CFR + Configuration register + (WWDG_CFR) + 0x4 + 0x20 + read-write + 0x0000007F + + + EWI + Early Wakeup Interrupt + 9 + 1 + + + WDGTB + Timer Base + 7 + 2 + + + W + 7-bit window value + 0 + 7 + + + + + SR + SR + Status register (WWDG_SR) + 0x8 + 0x20 + read-write + 0x00000000 + + + EWIF + Early Wakeup Interrupt flag + 0 + 1 + + + + + + + TIM1 + Advanced timer + TIM + 0x40012C00 + + 0x0 + 0x400 + registers + + + TIM1_BRK_UP_TRG_COM + TIM1 Break, Update, Trigger and Commutation Interrupt + 13 + + + TIM1_CC + TIM1 Capture Compare Interrupt + 14 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Clock division + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + CMS + Center-aligned mode + selection + 5 + 2 + + + DIR + Direction + 4 + 1 + + + OPM + One-pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + OIS4 + Output Idle state 4 + 14 + 1 + + + OIS3N + Output Idle state 3 + 13 + 1 + + + OIS3 + Output Idle state 3 + 12 + 1 + + + OIS2N + Output Idle state 2 + 11 + 1 + + + OIS2 + Output Idle state 2 + 10 + 1 + + + OIS1N + Output Idle state 1 + 9 + 1 + + + OIS1 + Output Idle state 1 + 8 + 1 + + + TI1S + TI1 selection + 7 + 1 + + + MMS + Master mode selection + 4 + 3 + + + CCDS + Capture/compare DMA + selection + 3 + 1 + + + CCUS + Capture/compare control update + selection + 2 + 1 + + + CCPC + Capture/compare preloaded + control + 0 + 1 + + + + + SMCR + SMCR + slave mode control register + 0x8 + 0x20 + read-write + 0x0000 + + + ETP + External trigger polarity + 15 + 1 + + + ECE + External clock enable + 14 + 1 + + + ETPS + External trigger prescaler + 12 + 2 + + + ETF + External trigger filter + 8 + 4 + + + MSM + Master/Slave mode + 7 + 1 + + + TS + Trigger selection + 4 + 3 + + + OCCS + OCREF clear selection bit + 3 + 1 + + + SMS + Slave mode selection + 0 + 3 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + TDE + Trigger DMA request enable + 14 + 1 + + + COMDE + COM DMA request enable + 13 + 1 + + + CC4DE + Capture/Compare 4 DMA request + enable + 12 + 1 + + + CC3DE + Capture/Compare 3 DMA request + enable + 11 + 1 + + + CC2DE + Capture/Compare 2 DMA request + enable + 10 + 1 + + + CC1DE + Capture/Compare 1 DMA request + enable + 9 + 1 + + + UDE + Update DMA request enable + 8 + 1 + + + BIE + Break interrupt enable + 7 + 1 + + + TIE + Trigger interrupt enable + 6 + 1 + + + COMIE + COM interrupt enable + 5 + 1 + + + CC4IE + Capture/Compare 4 interrupt + enable + 4 + 1 + + + CC3IE + Capture/Compare 3 interrupt + enable + 3 + 1 + + + CC2IE + Capture/Compare 2 interrupt + enable + 2 + 1 + + + CC1IE + Capture/Compare 1 interrupt + enable + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC4OF + Capture/Compare 4 overcapture + flag + 12 + 1 + + + CC3OF + Capture/Compare 3 overcapture + flag + 11 + 1 + + + CC2OF + Capture/compare 2 overcapture + flag + 10 + 1 + + + CC1OF + Capture/Compare 1 overcapture + flag + 9 + 1 + + + BIF + Break interrupt flag + 7 + 1 + + + TIF + Trigger interrupt flag + 6 + 1 + + + COMIF + COM interrupt flag + 5 + 1 + + + CC4IF + Capture/Compare 4 interrupt + flag + 4 + 1 + + + CC3IF + Capture/Compare 3 interrupt + flag + 3 + 1 + + + CC2IF + Capture/Compare 2 interrupt + flag + 2 + 1 + + + CC1IF + Capture/compare 1 interrupt + flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + BG + Break generation + 7 + 1 + + + TG + Trigger generation + 6 + 1 + + + COMG + Capture/Compare control update + generation + 5 + 1 + + + CC4G + Capture/compare 4 + generation + 4 + 1 + + + CC3G + Capture/compare 3 + generation + 3 + 1 + + + CC2G + Capture/compare 2 + generation + 2 + 1 + + + CC1G + Capture/compare 1 + generation + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC2CE + Output Compare 2 clear + enable + 15 + 1 + + + OC2M + Output Compare 2 mode + 12 + 3 + + + OC2PE + Output Compare 2 preload + enable + 11 + 1 + + + OC2FE + Output Compare 2 fast + enable + 10 + 1 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + OC1CE + Output Compare 1 clear + enable + 7 + 1 + + + OC1M + Output Compare 1 mode + 4 + 3 + + + OC1PE + Output Compare 1 preload + enable + 3 + 1 + + + OC1FE + Output Compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC2F + Input capture 2 filter + 12 + 4 + + + IC2PSC + Input capture 2 prescaler + 10 + 2 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + IC1F + Input capture 1 filter + 4 + 4 + + + ICPSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR2_Output + CCMR2_Output + capture/compare mode register (output + mode) + 0x1C + 0x20 + read-write + 0x00000000 + + + OC4CE + Output compare 4 clear + enable + 15 + 1 + + + OC4M + Output compare 4 mode + 12 + 3 + + + OC4PE + Output compare 4 preload + enable + 11 + 1 + + + OC4FE + Output compare 4 fast + enable + 10 + 1 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + OC3CE + Output compare 3 clear + enable + 7 + 1 + + + OC3M + Output compare 3 mode + 4 + 3 + + + OC3PE + Output compare 3 preload + enable + 3 + 1 + + + OC3FE + Output compare 3 fast + enable + 2 + 1 + + + CC3S + Capture/Compare 3 + selection + 0 + 2 + + + + + CCMR2_Input + CCMR2_Input + capture/compare mode register 2 (input + mode) + CCMR2_Output + 0x1C + 0x20 + read-write + 0x00000000 + + + IC4F + Input capture 4 filter + 12 + 4 + + + IC4PSC + Input capture 4 prescaler + 10 + 2 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + IC3F + Input capture 3 filter + 4 + 4 + + + IC3PSC + Input capture 3 prescaler + 2 + 2 + + + CC3S + Capture/compare 3 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC4P + Capture/Compare 3 output + Polarity + 13 + 1 + + + CC4E + Capture/Compare 4 output + enable + 12 + 1 + + + CC3NP + Capture/Compare 3 output + Polarity + 11 + 1 + + + CC3NE + Capture/Compare 3 complementary output + enable + 10 + 1 + + + CC3P + Capture/Compare 3 output + Polarity + 9 + 1 + + + CC3E + Capture/Compare 3 output + enable + 8 + 1 + + + CC2NP + Capture/Compare 2 output + Polarity + 7 + 1 + + + CC2NE + Capture/Compare 2 complementary output + enable + 6 + 1 + + + CC2P + Capture/Compare 2 output + Polarity + 5 + 1 + + + CC2E + Capture/Compare 2 output + enable + 4 + 1 + + + CC1NP + Capture/Compare 1 output + Polarity + 3 + 1 + + + CC1NE + Capture/Compare 1 complementary output + enable + 2 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + RCR + RCR + repetition counter register + 0x30 + 0x20 + read-write + 0x0000 + + + REP + Repetition counter value + 0 + 8 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + CCR2 + CCR2 + capture/compare register 2 + 0x38 + 0x20 + read-write + 0x00000000 + + + CCR2 + Capture/Compare 2 value + 0 + 16 + + + + + CCR3 + CCR3 + capture/compare register 3 + 0x3C + 0x20 + read-write + 0x00000000 + + + CCR3 + Capture/Compare value + 0 + 16 + + + + + CCR4 + CCR4 + capture/compare register 4 + 0x40 + 0x20 + read-write + 0x00000000 + + + CCR4 + Capture/Compare value + 0 + 16 + + + + + BDTR + BDTR + break and dead-time register + 0x44 + 0x20 + read-write + 0x0000 + + + MOE + Main output enable + 15 + 1 + + + AOE + Automatic output enable + 14 + 1 + + + BKP + Break polarity + 13 + 1 + + + BKE + Break enable + 12 + 1 + + + OSSR + Off-state selection for Run + mode + 11 + 1 + + + OSSI + Off-state selection for Idle + mode + 10 + 1 + + + LOCK + Lock configuration + 8 + 2 + + + DTG + Dead-time generator setup + 0 + 8 + + + + + DCR + DCR + DMA control register + 0x48 + 0x20 + read-write + 0x0000 + + + DBL + DMA burst length + 8 + 5 + + + DBA + DMA base address + 0 + 5 + + + + + DMAR + DMAR + DMA address for full transfer + 0x4C + 0x20 + read-write + 0x0000 + + + DMAB + DMA register for burst + accesses + 0 + 16 + + + + + + + TIM3 + General purpose timer + TIM + 0x40000400 + + 0x00 + 0x400 + registers + + + TIM3 + TIM3 global Interrupt + 16 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Clock division + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + CMS + Center-aligned mode + selection + 5 + 2 + + + DIR + Direction + 4 + 1 + + + OPM + One-pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + TI1S + TI1 selection + 7 + 1 + + + MMS + Master mode selection + 4 + 3 + + + CCDS + Capture/compare DMA + selection + 3 + 1 + + + + + SMCR + SMCR + slave mode control register + 0x8 + 0x20 + read-write + 0x0000 + + + MSM + Master/Slave mode + 7 + 1 + + + TS + Trigger selection + 4 + 3 + + + OCCS + OCREF Clear Selection + 3 + 1 + + + SMS + Slave mode selection + 0 + 3 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + TDE + Trigger DMA request enable + 14 + 1 + + + CC4DE + Capture/Compare 4 DMA request + enable + 12 + 1 + + + CC3DE + Capture/Compare 3 DMA request + enable + 11 + 1 + + + CC2DE + Capture/Compare 2 DMA request + enable + 10 + 1 + + + CC1DE + Capture/Compare 1 DMA request + enable + 9 + 1 + + + UDE + Update DMA request enable + 8 + 1 + + + TIE + Trigger interrupt enable + 6 + 1 + + + CC4IE + Capture/Compare 4 interrupt + enable + 4 + 1 + + + CC3IE + Capture/Compare 3 interrupt + enable + 3 + 1 + + + CC2IE + Capture/Compare 2 interrupt + enable + 2 + 1 + + + CC1IE + Capture/Compare 1 interrupt + enable + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC4OF + Capture/Compare 4 overcapture + flag + 12 + 1 + + + CC3OF + Capture/Compare 3 overcapture + flag + 11 + 1 + + + CC2OF + Capture/compare 2 overcapture + flag + 10 + 1 + + + CC1OF + Capture/Compare 1 overcapture + flag + 9 + 1 + + + TIF + Trigger interrupt flag + 6 + 1 + + + CC4IF + Capture/Compare 4 interrupt + flag + 4 + 1 + + + CC3IF + Capture/Compare 3 interrupt + flag + 3 + 1 + + + CC2IF + Capture/Compare 2 interrupt + flag + 2 + 1 + + + CC1IF + Capture/compare 1 interrupt + flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + TG + Trigger generation + 6 + 1 + + + CC4G + Capture/compare 4 + generation + 4 + 1 + + + CC3G + Capture/compare 3 + generation + 3 + 1 + + + CC2G + Capture/compare 2 + generation + 2 + 1 + + + CC1G + Capture/compare 1 + generation + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register 1 (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC2CE + Output compare 2 clear + enable + 15 + 1 + + + OC2M + Output compare 2 mode + 12 + 3 + + + OC2PE + Output compare 2 preload + enable + 11 + 1 + + + OC2FE + Output compare 2 fast + enable + 10 + 1 + + + CC2S + Capture/Compare 2 + selection + 8 + 2 + + + OC1CE + Output compare 1 clear + enable + 7 + 1 + + + OC1M + Output compare 1 mode + 4 + 3 + + + OC1PE + Output compare 1 preload + enable + 3 + 1 + + + OC1FE + Output compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC2F + Input capture 2 filter + 12 + 4 + + + IC2PSC + Input capture 2 prescaler + 10 + 2 + + + CC2S + Capture/compare 2 + selection + 8 + 2 + + + IC1F + Input capture 1 filter + 4 + 4 + + + IC1PSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR2_Output + CCMR2_Output + capture/compare mode register 2 (output + mode) + 0x1C + 0x20 + read-write + 0x00000000 + + + OC4CE + Output compare 4 clear + enable + 15 + 1 + + + OC4M + Output compare 4 mode + 12 + 3 + + + OC4PE + Output compare 4 preload + enable + 11 + 1 + + + OC4FE + Output compare 4 fast + enable + 10 + 1 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + OC3CE + Output compare 3 clear + enable + 7 + 1 + + + OC3M + Output compare 3 mode + 4 + 3 + + + OC3PE + Output compare 3 preload + enable + 3 + 1 + + + OC3FE + Output compare 3 fast + enable + 2 + 1 + + + CC3S + Capture/Compare 3 + selection + 0 + 2 + + + + + CCMR2_Input + CCMR2_Input + capture/compare mode register 2 (input + mode) + CCMR2_Output + 0x1C + 0x20 + read-write + 0x00000000 + + + IC4F + Input capture 4 filter + 12 + 4 + + + IC4PSC + Input capture 4 prescaler + 10 + 2 + + + CC4S + Capture/Compare 4 + selection + 8 + 2 + + + IC3F + Input capture 3 filter + 4 + 4 + + + IC3PSC + Input capture 3 prescaler + 2 + 2 + + + CC3S + Capture/Compare 3 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC4NP + + Capture/Compare 4 output + Polarity + + 15 + 1 + + + CC4P + + Capture/Compare 4 output + Polarity + + 13 + 1 + + + CC4E + + Capture/Compare 4 output + enable + + 12 + 1 + + + CC3NP + + Capture/Compare 3 output + Polarity + + 11 + 1 + + + CC3P + + Capture/Compare 3 output + Polarity + + 9 + 1 + + + CC3E + + Capture/Compare 3 output + enable + + 8 + 1 + + + CC2NP + + Capture/Compare 2 output + Polarity + + 7 + 1 + + + CC2P + + Capture/Compare 2 output + Polarity + + 5 + 1 + + + CC2E + + Capture/Compare 2 output + enable + + 4 + 1 + + + CC1NP + + Capture/Compare 1 output + Polarity + + 3 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + CCR2 + CCR2 + capture/compare register 2 + 0x38 + 0x20 + read-write + 0x00000000 + + + CCR2 + Capture/Compare 2 value + 0 + 16 + + + + + CCR3 + CCR3 + capture/compare register 3 + 0x3C + 0x20 + read-write + 0x00000000 + + + CCR3 + Capture/Compare value + 0 + 16 + + + + + CCR4 + CCR4 + capture/compare register 4 + 0x40 + 0x20 + read-write + 0x00000000 + + + CCR4 + Capture/Compare value + 0 + 16 + + + + + DCR + DCR + DMA control register + 0x48 + 0x20 + read-write + 0x0000 + + + DBL + DMA burst length + 8 + 5 + + + DBA + DMA base address + 0 + 5 + + + + + DMAR + DMAR + DMA address for full transfer + 0x4C + 0x20 + read-write + 0x0000 + + + DMAB + DMA register for burst + accesses + 0 + 32 + + + + + + + TIM14 + General purpose timer + TIM + 0x40002000 + + 0x00 + 0x400 + registers + + + TIM14 + TIM14 global Interrupt + 19 + + + + CR1 + CR1 + TIM14 control register1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Prescaler factor + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + CC1IE + Compare/ + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC1OF + Compare/capture 1 flag + 9 + 1 + + + CC1IF + Compare/capture 1 interrupt flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + CC1G + Compare/capture1 event + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC1M + Output Compare 1 mode + 4 + 3 + + + OC1PE + Output Compare 1 preload + enable + 3 + 1 + + + OC1FE + Output Compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC1F + Input capture 1 filter + 4 + 4 + + + IC1PSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC1NP + Capture/Compare 1 output + Polarity + 3 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + OR + OR + Option register + 0x50 + 0x20 + read-write + 0x00000000 + + + TI1_RMP + TIM14 channel1 input remap + 0 + 2 + + + + + + + TIM16 + General purpose timer + TIM + 0x40014400 + + 0x00 + 0x400 + registers + + + TIM16 + TIM16 global Interrupt + 21 + + + + CR1 + CR1 + TIM16 control register1 + 0x0 + 0x20 + read-write + 0x0000 + + + CKD + Prescaler factor + 8 + 2 + + + ARPE + Auto-reload preload enable + 7 + 1 + + + OPM + One pulse mode + 3 + 1 + + + URS + Update request source + 2 + 1 + + + UDIS + Update disable + 1 + 1 + + + CEN + Counter enable + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + OIS1N + Output Idle state 1 + 9 + 1 + + + OIS1 + Output Idle state 1 + 8 + 1 + + + CCDS + Capture/compare DMA + selection + 3 + 1 + + + CCPC + Capture/compare preloaded + control + 0 + 1 + + + + + DIER + DIER + DMA/Interrupt enable register + 0xC + 0x20 + read-write + 0x0000 + + + CC1DE + Compare/capture DMA requeset enable + 9 + 1 + + + UDE + Update DMA request enable + 8 + 1 + + + BIE + Break interrupt enable + 7 + 1 + + + COMIE + Com interrupt enable + 5 + 1 + + + CC1IE + Capture/Compare 1 interrupt enable + 1 + 1 + + + UIE + Update interrupt enable + 0 + 1 + + + + + SR + SR + status register + 0x10 + 0x20 + read-write + 0x0000 + + + CC1OF + Update interrupt flag + 9 + 1 + + + BIF + Break interrupt flag + 7 + 1 + + + COMIF + Com interrupt flag + 5 + 1 + + + CC1IF + Capture/Compare 1 interrupt flag + 1 + 1 + + + UIF + Update interrupt flag + 0 + 1 + + + + + EGR + EGR + event generation register + 0x14 + 0x20 + write-only + 0x0000 + + + BG + Break event generation + 7 + 1 + + + COMG + COM evnet generation + 5 + 1 + + + CC1G + Capture/Compare 1 generation + 1 + 1 + + + UG + Update generation + 0 + 1 + + + + + CCMR1_Output + CCMR1_Output + capture/compare mode register (output + mode) + 0x18 + 0x20 + read-write + 0x00000000 + + + OC1M + Output Compare 1 mode + 4 + 3 + + + OC1PE + Output Compare 1 preload + enable + 3 + 1 + + + OC1FE + Output Compare 1 fast + enable + 2 + 1 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCMR1_Input + CCMR1_Input + capture/compare mode register 1 (input + mode) + CCMR1_Output + 0x18 + 0x20 + read-write + 0x00000000 + + + IC1F + Input capture 1 filter + 4 + 4 + + + IC1PSC + Input capture 1 prescaler + 2 + 2 + + + CC1S + Capture/Compare 1 + selection + 0 + 2 + + + + + CCER + CCER + capture/compare enable + register + 0x20 + 0x20 + read-write + 0x0000 + + + CC1NP + Capture/Compare 1 output + Polarity + 3 + 1 + + + CC1NE + Capture/Compare 1 complementary output + enable + 2 + 1 + + + CC1P + Capture/Compare 1 output + Polarity + 1 + 1 + + + CC1E + Capture/Compare 1 output + enable + 0 + 1 + + + + + CNT + CNT + counter + 0x24 + 0x20 + read-write + 0x00000000 + + + CNT + counter value + 0 + 16 + + + + + PSC + PSC + prescaler + 0x28 + 0x20 + read-write + 0x0000 + + + PSC + Prescaler value + 0 + 16 + + + + + ARR + ARR + auto-reload register + 0x2C + 0x20 + read-write + 0x00000000 + + + ARR + Auto-reload value + 0 + 16 + + + + + RCR + RCR + repetition counter register + 0x30 + 0x20 + read-write + 0x0000 + + + REP + Repetition counter value + 0 + 8 + + + + + CCR1 + CCR1 + capture/compare register 1 + 0x34 + 0x20 + read-write + 0x00000000 + + + CCR1 + Capture/Compare 1 value + 0 + 16 + + + + + BDTR + BDTR + break and dead-time register + 0x44 + 0x20 + read-write + 0x0000 + + + MOE + Main output enable + 15 + 1 + + + AOE + Automatic output enable + 14 + 1 + + + BKP + Break polarity + 13 + 1 + + + BKE + Break enable + 12 + 1 + + + OSSR + Off-state selection for Run + mode + 11 + 1 + + + OSSI + Off-state selection for Idle + mode + 10 + 1 + + + LOCK + Lock configuration + 8 + 2 + + + DTG + Dead-time generator setup + 0 + 8 + + + + + DCR + DCR + DMA control register + 0x48 + 0x20 + read-write + 0x0000 + + + DBL + DMA burst length + 8 + 5 + + + DBA + DMA base address + 0 + 5 + + + + + DMAR + DMAR + DMA address for full transfer + 0x4C + 0x20 + read-write + 0x0000 + + + DMAB + DMA register for burst + accesses + 0 + 32 + + + + + + + TIM17 + 0x40014800 + + TIM17 + TIM17 global Interrupt + 22 + + + + SYSCFG + System configuration controller + SYSCFG + 0x40010000 + + 0x0 + 0x30 + registers + + + + CFGR1 + CFGR1 + SYSCFG configuration register + 1 + 0x0 + 0x20 + read-write + 0x00000000 + + + I2C_PF1_ANF + Analog filter enable control driving capability + activation bits PF1 + 30 + 1 + + + I2C_PF0_ANF + Analog filter enable control driving capability + activation bits PF0 + 29 + 1 + + + I2C_PB8_ANF + Analog filter enable control driving capability + activation bits PB8 + 28 + 1 + + + I2C_PB7_ANF + Analog filter enable control driving capability + activation bits PB7 + 27 + 1 + + I2C_PB6_ANF + Analog filter enable control driving capability + activation bits PB6 + 26 + 1 + + + I2C_PA12_ANF + Analog filter enable control driving capability + activation bits PA12 + 25 + 1 + + + I2C_PA11_ANF + Analog filter enable control driving capability + activation bits PA11 + 24 + 1 + + + I2C_PA10_ANF + Analog filter enable control driving capability + activation bits PA10 + 23 + 1 + + + I2C_PA9_ANF + Analog filter enable control driving capability + activation bits PA9 + 22 + 1 + + + I2C_PA8_ANF + Analog filter enable control driving capability + activation bits PA8 + 21 + 1 + + + I2C_PA7_ANF + Analog filter enable control driving capability + activation bits PA7 + 20 + 1 + + + I2C_PA3_ANF + Analog filter enable control driving capability + activation bits PA3 + 19 + 1 + + + I2C_PA2_ANF + Analog filter enable control driving capability + activation bits PA2 + 18 + 1 + + + MEM_MODE + Memory mapping selection + bits + 0 + 2 + + + + + CFGR2 + CFGR2 + SYSCFG configuration register + 2 + 0x18 + 0x20 + read-write + 0x00000000 + + + ETR_SRC_TIM1 + TIM1 ETR source selection + 9 + 2 + + + COMP2_BRK_TIM17 + COMP2 is enable to input of TIM17 break + 8 + 1 + + + COMP1_BRK_TIM17 + COMP1 is enable to input of TIM17 break + 7 + 1 + + + COMP2_BRK_TIM16 + COMP2 is enable to input of TIM16 break + 6 + 1 + + + COMP1_BRK_TIM16 + COMP1 is enable to input of TIM16 break + 5 + 1 + + + COMP2_BRK_TIM1 + COMP2 is enable to input of TIM1 break + 4 + 1 + + + COMP1_BRK_TIM1 + COMP1 is enable to input of TIM1 break + 3 + 1 + + + PVD_LOCK + PVD lock enable bit + 2 + 1 + + + LOCKUP_LOCK + Cortex-M0+ LOCKUP bit enable + bit + 0 + 1 + + + + + CFGR3 + CFGR3 + SYSCFG configuration register + 3 + 0x1C + 0x20 + read-write + 0x00000000 + + + DMA3_MAP + DMA channel3 requeset selection + 16 + 5 + + + DMA2_MAP + DMA channel2 requeset selection + 8 + 5 + + + DMA1_MAP + DMA channel1 requeset selection + 0 + 5 + + + + + + + DMA + Direct memory access + DMA + 0x40020000 + + 0x0 + 0x400 + registers + + + DMA_Channel1 + DMA Channel 1 Interrupt + 9 + + + DMA_Channel2_3 + DMA Channel 2 and Channel 3 Interrupt + 10 + + + + ISR + ISR + DMA interrupt status register + (DMA_ISR) + 0x0 + 0x20 + read-only + 0x00000000 + + + TEIF3 + Channel 3 Transfer Error + flag + 11 + 1 + + + HTIF3 + Channel 3 Half Transfer Complete + flag + 10 + 1 + + + TCIF3 + Channel 3 Transfer Complete + flag + 9 + 1 + + + GIF3 + Channel 3 Global interrupt + flag + 8 + 1 + + + TEIF2 + Channel 2 Transfer Error + flag + 7 + 1 + + + HTIF2 + Channel 2 Half Transfer Complete + flag + 6 + 1 + + + TCIF2 + Channel 2 Transfer Complete + flag + 5 + 1 + + + GIF2 + Channel 2 Global interrupt + flag + 4 + 1 + + + TEIF1 + Channel 1 Transfer Error + flag + 3 + 1 + + + HTIF1 + Channel 1 Half Transfer Complete + flag + 2 + 1 + + + TCIF1 + Channel 1 Transfer Complete + flag + 1 + 1 + + + GIF1 + Channel 1 Global interrupt + flag + 0 + 1 + + + + + IFCR + IFCR + DMA interrupt flag clear register + (DMA_IFCR) + 0x4 + 0x20 + write-only + 0x00000000 + + + CTEIF3 + Channel 3 Transfer Error + clear + 11 + 1 + + + CHTIF3 + Channel 3 Half Transfer + clear + 10 + 1 + + + CTCIF3 + Channel 3 Transfer Complete + clear + 9 + 1 + + + CGIF3 + Channel 3 Global interrupt + clear + 8 + 1 + + + CTEIF2 + Channel 2 Transfer Error + clear + 7 + 1 + + + CHTIF2 + Channel 2 Half Transfer + clear + 6 + 1 + + + CTCIF2 + Channel 2 Transfer Complete + clear + 5 + 1 + + + CGIF2 + Channel 2 Global interrupt + clear + 4 + 1 + + + CTEIF1 + Channel 1 Transfer Error + clear + 3 + 1 + + + CHTIF1 + Channel 1 Half Transfer + clear + 2 + 1 + + + CTCIF1 + Channel 1 Transfer Complete + clear + 1 + 1 + + + CGIF1 + Channel 1 Global interrupt + clear + 0 + 1 + + + + + CCR1 + CCR1 + DMA channel configuration register + (DMA_CCR) + 0x8 + 0x20 + read-write + 0x00000000 + + + MEM2MEM + Memory to memory mode + 14 + 1 + + + PL + Channel Priority level + 12 + 2 + + + MSIZE + Memory size + 10 + 2 + + + PSIZE + Peripheral size + 8 + 2 + + + MINC + Memory increment mode + 7 + 1 + + + PINC + Peripheral increment mode + 6 + 1 + + + CIRC + Circular mode + 5 + 1 + + + DIR + Data transfer direction + 4 + 1 + + + TEIE + Transfer error interrupt + enable + 3 + 1 + + + HTIE + Half Transfer interrupt + enable + 2 + 1 + + + TCIE + Transfer complete interrupt + enable + 1 + 1 + + + EN + Channel enable + 0 + 1 + + + + + CNDTR1 + CNDTR1 + DMA channel 1 number of data + register + 0xC + 0x20 + read-write + 0x00000000 + + + NDT + Number of data to transfer + 0 + 16 + + + + + CPAR1 + CPAR1 + DMA channel 1 peripheral address + register + 0x10 + 0x20 + read-write + 0x00000000 + + + PA + Peripheral address + 0 + 32 + + + + + CMAR1 + CMAR1 + DMA channel 1 memory address + register + 0x14 + 0x20 + read-write + 0x00000000 + + + MA + Memory address + 0 + 32 + + + + + CCR2 + CCR2 + DMA channel configuration register + (DMA_CCR) + 0x1C + 0x20 + read-write + 0x00000000 + + + MEM2MEM + Memory to memory mode + 14 + 1 + + + PL + Channel Priority level + 12 + 2 + + + MSIZE + Memory size + 10 + 2 + + + PSIZE + Peripheral size + 8 + 2 + + + MINC + Memory increment mode + 7 + 1 + + + PINC + Peripheral increment mode + 6 + 1 + + + CIRC + Circular mode + 5 + 1 + + + DIR + Data transfer direction + 4 + 1 + + + TEIE + Transfer error interrupt + enable + 3 + 1 + + + HTIE + Half Transfer interrupt + enable + 2 + 1 + + + TCIE + Transfer complete interrupt + enable + 1 + 1 + + + EN + Channel enable + 0 + 1 + + + + + CNDTR2 + CNDTR2 + DMA channel 2 number of data + register + 0x20 + 0x20 + read-write + 0x00000000 + + + NDT + Number of data to transfer + 0 + 16 + + + + + CPAR2 + CPAR2 + DMA channel 2 peripheral address + register + 0x24 + 0x20 + read-write + 0x00000000 + + + PA + Peripheral address + 0 + 32 + + + + + CMAR2 + CMAR2 + DMA channel 2 memory address + register + 0x28 + 0x20 + read-write + 0x00000000 + + + MA + Memory address + 0 + 32 + + + + + CCR3 + CCR3 + DMA channel configuration register + (DMA_CCR) + 0x30 + 0x20 + read-write + 0x00000000 + + + MEM2MEM + Memory to memory mode + 14 + 1 + + + PL + Channel Priority level + 12 + 2 + + + MSIZE + Memory size + 10 + 2 + + + PSIZE + Peripheral size + 8 + 2 + + + MINC + Memory increment mode + 7 + 1 + + + PINC + Peripheral increment mode + 6 + 1 + + + CIRC + Circular mode + 5 + 1 + + + DIR + Data transfer direction + 4 + 1 + + + TEIE + Transfer error interrupt + enable + 3 + 1 + + + HTIE + Half Transfer interrupt + enable + 2 + 1 + + + TCIE + Transfer complete interrupt + enable + 1 + 1 + + + EN + Channel enable + 0 + 1 + + + + + CNDTR3 + CNDTR3 + DMA channel 3 number of data + register + 0x34 + 0x20 + read-write + 0x00000000 + + + NDT + Number of data to transfer + 0 + 16 + + + + + CPAR3 + CPAR3 + DMA channel 3 peripheral address + register + 0x38 + 0x20 + read-write + 0x00000000 + + + PA + Peripheral address + 0 + 32 + + + + + CMAR3 + CMAR3 + DMA channel 3 memory address + register + 0x3C + 0x20 + read-write + 0x00000000 + + + MA + Memory address + 0 + 32 + + + + + + + FLASH + Flash + Flash + 0x40022000 + + 0x0 + 0x400 + registers + + + FLASH + FLASH global Interrupt + 3 + + + + ACR + ACR + Access control register + 0x0 + 0x20 + read-write + 0x00000600 + + + LATENCY + Latency + 0 + 1 + + + + + KEYR + KEYR + Flash key register + 0x8 + 0x20 + write-only + 0x00000000 + + + KEY + Flash key + 0 + 32 + + + + + OPTKEYR + OPTKEYR + Option byte key register + 0xC + 0x20 + write-only + 0x00000000 + + + OPTKEY + Option byte key + 0 + 32 + + + + + SR + SR + Status register + 0x10 + 0x20 + read-write + 0x00000000 + + + BSY + Busy + 16 + 1 + + + OPTVERR + Option and Engineering bits loading + validity error + 15 + 1 + + + WRPERR + Write protected error + 4 + 1 + + + EOP + End of operation + 0 + 1 + + + + + CR + CR + Flash control register + 0x14 + 0x20 + read-write + 0xC0000000 + + + LOCK + FLASH_CR Lock + 31 + 1 + + + OPTLOCK + Options Lock + 30 + 1 + + + OBL_LAUNCH + Force the option byte + loading + 27 + 1 + + + ERRIE + Error interrupt enable + 25 + 1 + + + EOPIE + End of operation interrupt + enable + 24 + 1 + + + PGTSTRT + Flash main memory program start + 19 + 1 + + + OPTSTRT + Option byte program start + 17 + 1 + + + SER + Sector erase + 11 + 1 + + + MER + Mass erase + 2 + 1 + + + PER + Page erase + 1 + 1 + + + PG + Programming + 0 + 1 + + + + + OPTR + OPTR + Flash option register + 0x20 + 0x20 + read-write + 0x4F55B0AA + + + nBOOT1 + Boot configuration + 15 + 1 + + + NRST_MODE + NRST_MODE + 14 + 1 + + + WWDG_SW + Window watchdog selection + 13 + 1 + + + IDWG_SW + Independent watchdog + selection + 12 + 1 + + + BORF_LEV + These bits contain the VDD supply level + threshold that activates the reset + 9 + 3 + + + BOREN + BOR reset Level + 8 + 1 + + + RDP + Read Protection + 0 + 8 + + + + + SDKR + SDKR + Flash SDK address + register + 0x24 + 0x20 + read-write + 0xFFE0001F + + + SDK_END + SDK area end address + 8 + 5 + + + SDK_STRT + SDK area start address + 0 + 5 + + + + + WRPR + WRPR + Flash WRP address + register + 0x2C + 0x20 + read-write + 0x0000FFFF + + + WRP + WRP address + 0 + 16 + + + + + STCR + STCR + Flash sleep time config + register + 0x90 + 0x20 + read-write + 0x00006400 + + + SLEEP_TIME + FLash sleep time configuration(counter based on HSI_10M) + 8 + 8 + + + SLEEP_EN + FLash sleep enable + 0 + 1 + + + + + TS0 + TS0 + Flash TS0 + register + 0x100 + 0x20 + read-write + 0x000000B4 + + + TS0 + FLash TS0 register + 0 + 8 + + + + + TS1 + TS1 + Flash TS1 + register + 0x104 + 0x20 + read-write + 0x000001B0 + + + TS1 + FLash TS1 register + 0 + 9 + + + + + TS2P + TS2P + Flash TS2P + register + 0x108 + 0x20 + read-write + 0x000000B4 + + + TS2P + FLash TS2P register + 0 + 8 + + + + + TPS3 + TPS3 + Flash TPS3 + register + 0x10C + 0x20 + read-write + 0x000006C0 + + + TPS3 + FLash TPS3 register + 0 + 11 + + + + + TS3 + TS3 + Flash TS3 + register + 0x110 + 0x20 + read-write + 0x000000B4 + + + TS3 + FLash TS3 register + 0 + 8 + + + + + PERTPE + PERTPE + Flash PERTPE + register + 0x114 + 0x20 + read-write + 0x0000EA60 + + + PERTPE + FLash PERTPE register + 0 + 17 + + + + + SMERTPE + SMERTPE + Flash SMERTPE + register + 0x118 + 0x20 + read-write + 0x0000FD20 + + + SMERTPE + FLash SMERTPE register + 0 + 17 + + + + + PRGTPE + PRGTPE + Flash PRGTPE + register + 0x11C + 0x20 + read-write + 0x00008CA0 + + + PRGTPE + FLash PRGTPE register + 0 + 16 + + + + + PRETPE + PRETPE + Flash PRETPE + register + 0x120 + 0x20 + read-write + 0x000012C0 + + + PRETPE + FLash PRETPE register + 0 + 13 + + + + + + + CRC + CRC calculation unit + CRC + 0x40023000 + + 0x0 + 0x400 + registers + + + + DR + DR + Data register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + DR + Data Register + 0 + 32 + + + + + IDR + IDR + Independent Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + IDR + Independent Data register + 0 + 8 + + + + + CR + CR + Control register + 0x8 + 0x20 + write-only + 0x00000000 + + + RESET + Reset bit + 0 + 1 + + + + + + + SPI1 + Serial peripheral interface + SPI + 0x40013000 + + 0x0 + 0x400 + registers + + + SPI1 + SPI1 global Interrupt + 25 + + + + CR1 + CR1 + control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + BIDIMODE + Bidirectional data mode + enable + 15 + 1 + + + BIDIOE + Output enable in bidirectional + mode + 14 + 1 + + + RXONLY + Receive only + 10 + 1 + + + SSM + Software slave management + 9 + 1 + + + SSI + Internal slave selection + 8 + 1 + + + LSBFIRST + Frame format + 7 + 1 + + + SPE + SPI enable + 6 + 1 + + + BR + Baud rate control + 3 + 3 + + + MSTR + Master selection + 2 + 1 + + + CPOL + Clock polarity + 1 + 1 + + + CPHA + Clock phase + 0 + 1 + + + + + CR2 + CR2 + control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + SLVFM + Slave fast mode enable + 15 + 1 + + + LDMA_TX + Last DAM Transmit(TX) + 14 + 1 + + + LDMA_RX + Last DAM Transmit(RX) + 13 + 1 + + + FRXTH + FIFO reception threshold + 12 + 1 + + + DS + Data length + + 11 + 1 + + + TXEIE + Tx buffer empty interrupt + enable + 7 + 1 + + + RXNEIE + RX buffer not empty interrupt + enable + 6 + 1 + + + ERRIE + Error interrupt enable + 5 + 1 + + + SSOE + SS output enable + 2 + 1 + + + TXDMAEN + Tx buffer DMA enable + 1 + 1 + + + RXDMAEN + Rx buffer DMA enable + 0 + 1 + + + + + SR + SR + status register + 0x8 + 0x20 + 0x0002 + + + FTLVL + FIFO transmission level + 11 + 2 + read-only + + + FRLVL + FIFO reception level + 9 + 2 + read-only + + + BSY + Busy flag + 7 + 1 + read-only + + + OVR + Overrun flag + 6 + 1 + read-only + + + MODF + Mode fault + 5 + 1 + read-only + + + TXE + Transmit buffer empty + 1 + 1 + read-only + + + RXNE + Receive buffer not empty + 0 + 1 + read-only + + + + + DR + DR + data register + 0xC + 0x20 + read-write + 0x0000 + + + DR + Data register + 0 + 16 + + + + + + + SPI2 + 0x40003800 + + SPI2 + SPI2 global Interrupt + 26 + + + + I2C + Inter integrated circuit + I2C + 0x40005400 + + 0x0 + 0x400 + registers + + + I2C1 + I2C1 global Interrupt + 23 + + + + CR1 + CR1 + Control register 1 + 0x0 + 0x20 + read-write + 0x0000 + + + SWRST + Software reset + 15 + 1 + + + PEC + Packet error checking + 12 + 1 + + + POS + Acknowledge/PEC Position (for data + reception) + 11 + 1 + + + ACK + Acknowledge enable + 10 + 1 + + + STOP + Stop generation + 9 + 1 + + + START + Start generation + 8 + 1 + + + NOSTRETCH + Clock stretching disable (Slave + mode) + 7 + 1 + + + ENGC + General call enable + 6 + 1 + + + ENPEC + PEC enable + 5 + 1 + + + PE + Peripheral enable + 0 + 1 + + + + + CR2 + CR2 + Control register 2 + 0x4 + 0x20 + read-write + 0x0000 + + + LAST + DMA last transfer + 12 + 1 + + + DMAEN + DMA requests enable + 11 + 1 + + + ITBUFEN + Buffer interrupt enable + 10 + 1 + + + ITEVTEN + Event interrupt enable + 9 + 1 + + + ITERREN + Error interrupt enable + 8 + 1 + + + FREQ + Peripheral clock frequency + 0 + 6 + + + + + OAR1 + OAR1 + Own address register 1 + 0x8 + 0x20 + read-write + 0x0000 + + + ADD + Interface address + 1 + 7 + + + + + DR + DR + Data register + 0x10 + 0x20 + read-write + 0x0000 + + + DR + 8-bit data register + 0 + 8 + + + + + SR1 + SR1 + Status register 1 + 0x14 + 0x20 + 0x0000 + + + PECERR + PEC Error in reception + 12 + 1 + read-write + + + OVR + Overrun/Underrun + 11 + 1 + read-write + + + AF + Acknowledge failure + 10 + 1 + read-write + + + ARLO + Arbitration lost (master + mode) + 9 + 1 + read-write + + + BERR + Bus error + 8 + 1 + read-write + + + TxE + Data register empty + (transmitters) + 7 + 1 + read-only + + + RxNE + Data register not empty + (receivers) + 6 + 1 + read-only + + + STOPF + Stop detection (slave + mode) + 4 + 1 + read-only + + + BTF + Byte transfer finished + 2 + 1 + read-only + + + ADDR + Address sent (master mode)/matched + (slave mode) + 1 + 1 + read-only + + + SB + Start bit (Master mode) + 0 + 1 + read-only + + + + + SR2 + SR2 + Status register 2 + 0x18 + 0x20 + read-only + 0x0000 + + + PEC + acket error checking + register + 8 + 8 + + + DUALF + Dual flag (Slave mode) + 7 + 1 + + + GENCALL + General call address (Slave + mode) + 4 + 1 + + + TRA + Transmitter/receiver + 2 + 1 + + + BUSY + Bus busy + 1 + 1 + + + MSL + Master/slave + 0 + 1 + + + + + CCR + CCR + Clock control register + 0x1C + 0x20 + read-write + 0x0000 + + + F_S + I2C master mode selection + 15 + 1 + + + DUTY + Fast mode duty cycle + 14 + 1 + + + CCR + Clock control register in Fast/Standard + mode (Master mode) + 0 + 12 + + + + + TRISE + TRISE + TRISE register + 0x20 + 0x20 + read-write + 0x0002 + + + TRISE + Maximum rise time in Fast/Standard mode + (Master mode) + 0 + 6 + + + + + + + LED + LED CONTROLLER + LED + 0x40002400 + + 0x0 + 0x400 + registers + + + LED + LED global Interrupt + 30 + + + + CR + LED_CR + Control register + 0x0 + 0x20 + read-write + 0x0000 + + + EHS + Light control + 12 + 2 + + + IE + LED interrupt enable + 3 + 1 + + + LED_COM_SEL + LED COM Selection + 1 + 2 + + + LEDON + LED enable + 0 + 1 + + + + + PR + LED_PR + Prescaler register + 0x4 + 0x20 + read-write + 0x0000 + + + PR + Prescaler control + 0 + 8 + + + + + TR + LED_TR + Time register + 0x8 + 0x20 + read-write + 0x0000 + + + T2 + Switch time + 8 + 8 + + + T1 + Light on time + 0 + 8 + + + + + DR0 + LED_DR0 + Data0 register + 0x0C + 0x20 + read-write + 0x0000 + + + DATA0_DP + 8-bit data register + 7 + 1 + + + DATA0_G + 8-bit data register + 6 + 1 + + + DATA0_F + 8-bit data register + 5 + 1 + + + DATA0_E + 8-bit data register + 4 + 1 + + + DATA0_D + 8-bit data register + 3 + 1 + + + DATA0_C + 8-bit data register + 2 + 1 + + + DATA0_B + 8-bit data register + 1 + 1 + + + DATA0_A + 8-bit data register + 0 + 1 + + + + + DR1 + LED_DR1 + Data1 register + 0x10 + 0x20 + read-write + 0x0000 + + + DATA1_DP + 8-bit data register + 7 + 1 + + + DATA1_G + 8-bit data register + 6 + 1 + + + DATA1_F + 8-bit data register + 5 + 1 + + + DATA1_E + 8-bit data register + 4 + 1 + + + DATA1_D + 8-bit data register + 3 + 1 + + + DATA1_C + 8-bit data register + 2 + 1 + + + DATA1_B + 8-bit data register + 1 + 1 + + + DATA1_A + 8-bit data register + 0 + 1 + + + + + DR2 + LED_DR2 + Data2 register + 0x14 + 0x20 + read-write + 0x0000 + + + DATA2_DP + 8-bit data register + 7 + 1 + + + DATA2_G + 8-bit data register + 6 + 1 + + + DATA2_F + 8-bit data register + 5 + 1 + + + DATA2_E + 8-bit data register + 4 + 1 + + + DATA2_D + 8-bit data register + 3 + 1 + + + DATA2_C + 8-bit data register + 2 + 1 + + + DATA2_B + 8-bit data register + 1 + 1 + + + DATA2_A + 8-bit data register + 0 + 1 + + + + + DR3 + LED_DR3 + Data3 register + 0x18 + 0x20 + read-write + 0x0000 + + + DATA3_DP + 8-bit data register + 7 + 1 + + + DATA3_G + 8-bit data register + 6 + 1 + + + DATA3_F + 8-bit data register + 5 + 1 + + + DATA3_E + 8-bit data register + 4 + 1 + + + DATA3_D + 8-bit data register + 3 + 1 + + + DATA3_C + 8-bit data register + 2 + 1 + + + DATA3_B + 8-bit data register + 1 + 1 + + + DATA3_A + 8-bit data register + 0 + 1 + + + + + IR + LED_IR + Interrupt register 1 + 0x1C + 0x20 + 0x0000 + + + FLAG + interrupt flag + 0 + 1 + read-write + + + + + + + DBGMCU + Debug support + DBGMCU + 0x40015800 + + 0x0 + 0x400 + registers + + + + IDCODE + IDCODE + MCU Device ID Code Register + 0x0 + 0x20 + read-only + 0x0 + + + + + + CR + CR + Debug MCU Configuration + Register + 0x4 + 0x20 + read-write + 0x0 + + + DBG_STOP + Debug Stop Mode + 1 + 1 + + + + + APB_FZ1 + APB_FZ1 + APB Freeze Register1 + 0x8 + 0x20 + read-write + 0x0 + + + DBG_TIMER3_STOP + Debug Timer 3 stopped when Core is + halted + 1 + 1 + + + DBG_RTC_STOP + Debug RTC stopped when Core is + halted + 10 + 1 + + + DBG_WWDG_STOP + Debug Window Wachdog stopped when Core + is halted + 11 + 1 + + + DBG_IWDG_STOP + Debug Independent Wachdog stopped when + Core is halted + 12 + 1 + + + DBG_LPTIM_STOP + Debug LPTIM stopped when Core is + halted + 31 + 1 + + + + + APB_FZ2 + APB_FZ2 + APB Freeze Register2 + 0xC + 0x20 + read-write + 0x0 + + + DBG_TIMER1_STOP + Debug Timer 1 stopped when Core is + halted + 11 + 1 + + + DBG_TIMER14_STOP + Debug Timer 14 stopped when Core is + halted + 15 + 1 + + + DBG_TIMER16_STOP + Debug Timer 16 stopped when Core is + halted + 17 + 1 + + + DBG_TIMER17_STOP + Debug Timer 17 stopped when Core is + halted + 18 + 1 + + + + + + + diff --git a/Misc/py32f072xx.svd b/Misc/SVD/py32f072xx.svd similarity index 96% rename from Misc/py32f072xx.svd rename to Misc/SVD/py32f072xx.svd index f2becf6..46b4ae0 100644 --- a/Misc/py32f072xx.svd +++ b/Misc/SVD/py32f072xx.svd @@ -1,20252 +1,20250 @@ - - - - Puya - Puya - PY32F0xx_DFP - - PY32F0 - 1.0.0 - Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. - - - - CM0+ - r0p1 - little - false - false - 4 - false - - - - 8 - - 32 - - - 32 - - read-write - - 0x00000000 - - 0xFFFFFFFF - - - - ADC - Analog to Digital Converter - ADC - 0x40012400 - - 0x0 - 0x400 - registers - - - ADC_COMP - ADC and COMP Interrupt through EXTI Lines 17 and 18 - 12 - - - - SR - desc SR - 0x0 - 32 - read-write - 0x0 - - - AWD - desc AWD - 0 - 0 - read-write - - - EOC - desc EOC - 1 - 1 - read-write - - - JEOC - desc JEOC - 2 - 2 - read-write - - - JSTRT - desc JSTRT - 3 - 3 - read-write - - - STRT - desc STRT - 4 - 4 - read-write - - - OVER - desc OVER - 5 - 5 - read-write - - - - - CR1 - desc CR1 - 0x4 - 32 - read-write - 0x0 - - - AWDCH - desc AWDCH - 4 - 0 - read-write - - - EOCIE - desc EOCIE - 5 - 5 - read-write - - - AWDIE - desc AWDIE - 6 - 6 - read-write - - - JEOCIE - desc JEOCIE - 7 - 7 - read-write - - - SCAN - desc SCAN - 8 - 8 - read-write - - - AWDSGL - desc AWDSGL - 9 - 9 - read-write - - - JAUTO - desc JAUTO - 10 - 10 - read-write - - - DISCEN - desc DISCEN - 11 - 11 - read-write - - - JDISCEN - desc JDISCEN - 12 - 12 - read-write - - - DISCNUM - desc DISCNUM - 15 - 13 - read-write - - - JAWDEN - desc JAWDEN - 22 - 22 - read-write - - - AWDEN - desc AWDEN - 23 - 23 - read-write - - - RESSEL - desc RESSEL - 25 - 24 - read-write - - - ADSTP - desc ADSTP - 27 - 27 - read-write - - - MSBSEL - desc MSBSEL - 28 - 28 - read-write - - - OVETIE - desc OVETIE - 29 - 29 - read-write - - - - - CR2 - desc CR2 - 0x8 - 32 - read-write - 0x0 - - - ADON - desc ADON - 0 - 0 - read-write - - - CONT - desc CONT - 1 - 1 - read-write - - - CAL - desc CAL - 2 - 2 - read-write - - - RSTCAL - desc RSTCAL - 3 - 3 - read-write - - - DMA - desc DMA - 8 - 8 - read-write - - - ALIGN - desc ALIGN - 11 - 11 - read-write - - - JEXTSEL - desc JEXTSEL - 14 - 12 - read-write - - - JEXTTRIG - desc JEXTTRIG - 15 - 15 - read-write - - - EXTSEL - desc EXTSEL - 19 - 17 - read-write - - - EXTTRIG - desc EXTTRIG - 20 - 20 - read-write - - - JSWSTART - desc JSWSTART - 21 - 21 - read-write - - - SWSTART - desc SWSTART - 22 - 22 - read-write - - - TSVREFE - desc TSVREFE - 23 - 23 - read-write - - - VERFBUFFEREN - desc VERFBUFFEREN - 25 - 25 - read-write - - - VERFBUFFERSEL - desc VERFBUFFERSEL - 27 - 26 - read-write - - - - - SMPR1 - desc SMPR1 - 0xC - 32 - read-write - 0x0 - - - SMP20 - desc SMP20 - 2 - 0 - read-write - - - SMP21 - desc SMP21 - 5 - 3 - read-write - - - SMP22 - desc SMP22 - 8 - 6 - read-write - - - SMP23 - desc SMP23 - 11 - 9 - read-write - - - - - SMPR2 - desc SMPR2 - 0x10 - 32 - read-write - 0x0 - - - SMP10 - desc SMP10 - 2 - 0 - read-write - - - SMP11 - desc SMP11 - 5 - 3 - read-write - - - SMP12 - desc SMP12 - 8 - 6 - read-write - - - SMP13 - desc SMP13 - 11 - 9 - read-write - - - SMP14 - desc SMP14 - 14 - 12 - read-write - - - SMP15 - desc SMP15 - 17 - 15 - read-write - - - SMP16 - desc SMP16 - 20 - 18 - read-write - - - SMP17 - desc SMP17 - 23 - 21 - read-write - - - SMP18 - desc SMP18 - 26 - 24 - read-write - - - SMP19 - desc SMP19 - 29 - 27 - read-write - - - - - SMPR3 - desc SMPR2 - 0x14 - 32 - read-write - 0x0 - - - SMP0 - desc SMP0 - 2 - 0 - read-write - - - SMP1 - desc SMP1 - 5 - 3 - read-write - - - SMP2 - desc SMP2 - 8 - 6 - read-write - - - SMP3 - desc SMP3 - 11 - 9 - read-write - - - SMP4 - desc SMP4 - 14 - 12 - read-write - - - SMP5 - desc SMP5 - 17 - 15 - read-write - - - SMP6 - desc SMP6 - 20 - 18 - read-write - - - SMP7 - desc SMP7 - 23 - 21 - read-write - - - SMP8 - desc SMP8 - 26 - 24 - read-write - - - SMP9 - desc SMP9 - 29 - 27 - read-write - - - - - JOFR1 - desc JOFR1 - 0x18 - 32 - read-write - 0x0 - - - JOFFSET1 - desc JOFFSET1 - 11 - 0 - read-write - - - - - JOFR2 - desc JOFR2 - 0x1C - 32 - read-write - 0x0 - - - JOFFSET2 - desc JOFFSET2 - 11 - 0 - read-write - - - - - JOFR3 - desc JOFR3 - 0x20 - 32 - read-write - 0x0 - - - JOFFSET3 - desc JOFFSET3 - 11 - 0 - read-write - - - - - JOFR4 - desc JOFR4 - 0x24 - 32 - read-write - 0x0 - - - JOFFSET4 - desc JOFFSET4 - 11 - 0 - read-write - - - - - HTR - desc HTR - 0x28 - 32 - read-write - 0x0 - - - HT - desc HT - 11 - 0 - read-write - - - - - LTR - desc LTR - 0x2C - 32 - read-write - 0x0 - - - LT - desc LT - 11 - 0 - read-write - - - - - SQR1 - desc SQR1 - 0x30 - 32 - read-write - 0x0 - - - SQ13 - desc SQ13 - 4 - 0 - read-write - - - SQ14 - desc SQ14 - 9 - 5 - read-write - - - SQ15 - desc SQ15 - 14 - 10 - read-write - - - SQ16 - desc SQ16 - 19 - 15 - read-write - - - L - desc L - 23 - 20 - read-write - - - - - SQR2 - desc SQR2 - 0x34 - 32 - read-write - 0x0 - - - SQ7 - desc SQ7 - 4 - 0 - read-write - - - SQ8 - desc SQ8 - 9 - 5 - read-write - - - SQ9 - desc SQ9 - 14 - 10 - read-write - - - SQ10 - desc SQ10 - 19 - 15 - read-write - - - SQ11 - desc SQ11 - 24 - 20 - read-write - - - SQ12 - desc SQ12 - 29 - 25 - read-write - - - - - SQR3 - desc SQR3 - 0x38 - 32 - read-write - 0x0 - - - SQ1 - desc SQ1 - 4 - 0 - read-write - - - SQ2 - desc SQ2 - 9 - 5 - read-write - - - SQ3 - desc SQ3 - 14 - 10 - read-write - - - SQ4 - desc SQ4 - 19 - 15 - read-write - - - SQ5 - desc SQ5 - 24 - 20 - read-write - - - SQ6 - desc SQ6 - 29 - 25 - read-write - - - - - JSQR - desc JSQR - 0x3C - 32 - read-write - 0x0 - - - JSQ1 - desc JSQ1 - 4 - 0 - read-write - - - JSQ2 - desc JSQ2 - 9 - 5 - read-write - - - JSQ3 - desc JSQ3 - 14 - 10 - read-write - - - JSQ4 - desc JSQ4 - 19 - 15 - read-write - - - JL - desc JL - 21 - 20 - read-write - - - - - JDR1 - desc JDR1 - 0x40 - 32 - read-only - 0x0 - - - JDR1 - desc JDR1 - 15 - 0 - read-only - - - - - JDR2 - desc JDR2 - 0x44 - 32 - read-only - 0x0 - - - JDR2 - desc JDR2 - 15 - 0 - read-only - - - - - JDR3 - desc JDR3 - 0x48 - 32 - read-only - 0x0 - - - JDR3 - desc JDR3 - 15 - 0 - read-only - - - - - JDR4 - desc JDR4 - 0x4C - 32 - read-only - 0x0 - - - JDR4 - desc JDR4 - 15 - 0 - read-only - - - - - DR - desc DR - 0x50 - 32 - read-only - 0x0 - - - DATA - desc DATA - 15 - 0 - read-only - - - - - CCSR - desc CCSR - 0x54 - 32 - read-write - 0x0 - - - CALSEL - desc CALSEL - 11 - 11 - read-write - - - CALSMP - desc CALSMP - 13 - 12 - read-write - - - CALBYP - desc CALBYP - 14 - 14 - read-write - - - CALSET - desc CALSET - 15 - 15 - read-write - - - CALFAIL - desc CALFAIL - 30 - 30 - read-write - - - CALON - desc CALON - 31 - 31 - read-only - - - - - CALRR1 - desc CALRR1 - 0x58 - 32 - read-only - 0x0 - - - CALC10OUT - desc CALC10OUT - 7 - 0 - read-only - - - CALC11OUT - desc CALC11OUT - 15 - 8 - read-only - - - CALBOUT - desc CALBOUT - 23 - 16 - read-only - - - - - CALRR2 - desc CALRR2 - 0x5C - 32 - read-only - 0x0 - - - CALC6OUT - desc CALC6OUT - 7 - 0 - read-only - - - CALC7OUT - desc CALC7OUT - 15 - 8 - read-only - - - CALC8OUT - desc CALC8OUT - 23 - 16 - read-only - - - CALC9OUT - desc CALC9OUT - 31 - 24 - read-only - - - - - CALFIR1 - desc CALFIR1 - 0x60 - 32 - read-write - 0x0 - - - CALC10IO - desc CALC10IO - 7 - 0 - read-write - - - CALC11IO - desc CALC11IO - 15 - 8 - read-write - - - CALBIO - desc CALBIO - 23 - 16 - read-write - - - - - CALFIR2 - desc CALFIR2 - 0x64 - 32 - read-write - 0x0 - - - CALC6IO - desc CALC6IO - 7 - 0 - read-write - - - CALC7IO - desc CALC7IO - 15 - 8 - read-write - - - CALC8IO - desc CALC8IO - 23 - 16 - read-write - - - CALC9IO - desc CALC9IO - 31 - 24 - read-write - - - - - - - CAN - desc CAN - CAN - 0x40006400 - - 0x0 - 0x400 - registers - - - CAN - CAN global Interrupt - 30 - - - - TSNCR - desc TSNCR - 0x0 - 32 - read-write - 0x2010801 - - - VERSION - desc VERSION - 15 - 0 - read-only - - - CES - desc CES - 16 - 16 - read-write - - - ROP - desc ROP - 17 - 17 - read-write - - - TMSE - desc TMSE - 18 - 18 - read-write - - - TSEN - desc TSEN - 24 - 24 - read-write - - - TSPOS - desc TSPOS - 25 - 25 - read-write - - - - - ACBTR - desc ACBTR - 0x4 - 32 - read-write - 0x5050008 - - - AC_SEG_1 - desc AC_SEG_1 - 8 - 0 - read-write - - - AC_SEG_2 - desc AC_SEG_2 - 22 - 16 - read-write - - - AC_SJW - desc AC_SJW - 30 - 24 - read-write - - - - - FDBTR - desc FDBTR - 0x8 - 32 - read-write - 0x2020003 - - - FD_SEG_1 - desc FD_SEG_1 - 7 - 0 - read-write - - - FD_SEG_2 - desc FD_SEG_2 - 22 - 16 - read-write - - - FD_SJW - desc FD_SJW - 30 - 24 - read-write - - - - - XLBTR - desc XLBTR - 0xC - 32 - read-write - 0x2020003 - - - XL_SEG_1 - desc XL_SEG_1 - 7 - 0 - read-write - - - XL_SEG_2 - desc XL_SEG_2 - 22 - 16 - read-write - - - XL_SJW - desc XL_SJW - 30 - 24 - read-write - - - - - RLSSP - desc RLSSP - 0x10 - 32 - read-write - 0x77000000 - - - PRESC - desc PRESC - 4 - 0 - read-write - - - FD_SSPOFF - desc FD_SSPOFF - 15 - 8 - read-write - - - XL_SSPOFF - desc XL_SSPOFF - 23 - 16 - read-write - - - REALIM - desc REALIM - 26 - 24 - read-write - - - RETLIM - desc RETLIM - 30 - 28 - read-write - - - - - IFR - desc IFR - 0x14 - 32 - read-write - 0x0 - - - AIF - desc AIF - 0 - 0 - read-write - - - EIF - desc EIF - 1 - 1 - read-write - - - TSIF - desc TSIF - 2 - 2 - read-write - - - TPIF - desc TPIF - 3 - 3 - read-write - - - RAFIF - desc RAFIF - 4 - 4 - read-write - - - RFIF - desc RFIF - 5 - 5 - read-write - - - ROIF - desc ROIF - 6 - 6 - read-write - - - RIF - desc RIF - 7 - 7 - read-write - - - BEIF - desc BEIF - 8 - 8 - read-write - - - ALIF - desc ALIF - 9 - 9 - read-write - - - EPIF - desc EPIF - 10 - 10 - read-write - - - TTIF - desc TTIF - 11 - 11 - read-write - - - TEIF - desc TEIF - 12 - 12 - read-write - - - WTIF - desc WTIF - 13 - 13 - read-write - - - MDWIF - desc MDWIF - 14 - 14 - read-write - - - MDEIF - desc MDEIF - 15 - 15 - read-write - - - MAEIF - desc MAEIF - 16 - 16 - read-write - - - SEIF - desc SEIF - 17 - 17 - read-write - - - SWIF - desc SWIF - 18 - 18 - read-write - - - EPASS - desc EPASS - 30 - 30 - read-only - - - EWARN - desc EWARN - 31 - 31 - read-only - - - - - IER - desc IER - 0x18 - 32 - read-write - 0x468FE - - - EIE - desc EIE - 1 - 1 - read-write - - - TSIE - desc TSIE - 2 - 2 - read-write - - - TPIE - desc TPIE - 3 - 3 - read-write - - - RAFIE - desc RAFIE - 4 - 4 - read-write - - - RFIE - desc RFIE - 5 - 5 - read-write - - - ROIE - desc ROIE - 6 - 6 - read-write - - - RIE - desc RIE - 7 - 7 - read-write - - - BEIE - desc BEIE - 8 - 8 - read-write - - - ALIE - desc ALIE - 9 - 9 - read-write - - - EPIE - desc EPIE - 10 - 10 - read-write - - - TTIE - desc TTIE - 11 - 11 - read-write - - - WTIE - desc WTIE - 13 - 13 - read-write - - - MDWIE - desc MDWIE - 14 - 14 - read-write - - - SWIE - desc SWIE - 18 - 18 - read-write - - - - - TSR - desc TSR - 0x1C - 32 - read-only - 0x0 - - - HANDLE_L - desc HANDLE_L - 7 - 0 - read-only - - - TSTAT_L - desc TSTAT_L - 10 - 8 - read-only - - - HANDLE_H - desc HANDLE_H - 23 - 16 - read-only - - - TSTAT_H - desc TSTAT_H - 26 - 24 - read-only - - - - - TTSL - desc TTSL - 0x20 - 32 - read-only - 0x2000000 - - - TTS - desc TTS - 31 - 0 - read-only - - - - - TTSH - desc TTSH - 0x24 - 32 - read-only - 0x2000000 - - - TTS - desc TTS - 31 - 0 - read-only - - - - - MCR - desc MCR - 0x28 - 32 - read-write - 0x900080 - - - BUSOFF - desc BUSOFF - 0 - 0 - read-write - - - LBMI - desc LBMI - 5 - 5 - read-write - - - LBME - desc LBME - 6 - 6 - read-write - - - RESET - desc RESET - 7 - 7 - read-write - - - TSA - desc TSA - 8 - 8 - read-write - - - TSALL - desc TSALL - 9 - 9 - read-write - - - TSONE - desc TSONE - 10 - 10 - read-write - - - TPA - desc TPA - 11 - 11 - read-write - - - TPE - desc TPE - 12 - 12 - read-write - - - STBY - desc STBY - 13 - 13 - read-write - - - LOM - desc LOM - 14 - 14 - read-write - - - TBSEL - desc TBSEL - 15 - 15 - read-write - - - TSSTAT - desc TSSTAT - 17 - 16 - read-only - - - TSFF - desc TSFF - 18 - 18 - read-only - - - TTTBM - desc TTTBM - 20 - 20 - read-write - - - TSMODE - desc TSMODE - 21 - 21 - read-write - - - TSNEXT - desc TSNEXT - 22 - 22 - read-write - - - FD_ISO - desc FD_ISO - 23 - 23 - read-write - - - RSTAT - desc RSTAT - 25 - 24 - read-only - - - RBALL - desc RBALL - 27 - 27 - read-write - - - RREL - desc RREL - 28 - 28 - read-write - - - ROV - desc ROV - 29 - 29 - read-only - - - ROM - desc ROM - 30 - 30 - read-write - - - SACK - desc SACK - 31 - 31 - read-write - - - - - WECR - desc WECR - 0x2C - 32 - read-write - 0x1B - - - EWL - desc EWL - 3 - 0 - read-write - - - AFWL - desc AFWL - 7 - 4 - read-write - - - ALC - desc ALC - 12 - 8 - read-only - - - KOER - desc KOER - 15 - 13 - read-only - - - RECNT - desc RECNT - 23 - 16 - read-only - - - TECNT - desc TECNT - 31 - 24 - read-only - - - - - REFMSG - desc REFMSG - 0x30 - 32 - read-write - 0x0 - - - REF_ID - desc REF_ID - 28 - 0 - read-write - - - REF_IDE - desc REF_IDE - 31 - 31 - read-write - - - - - TTCR - desc TTCR - 0x34 - 32 - read-write - 0x0 - - - TTPTR - desc TTPTR - 5 - 0 - read-write - - - TTYPE - desc TTYPE - 10 - 8 - read-write - - - TEW - desc TEW - 15 - 12 - read-write - - - TBPTR - desc TBPTR - 21 - 16 - read-write - - - TBF - desc TBF - 22 - 22 - read-write - - - TBE - desc TBE - 23 - 23 - read-write - - - TTEN - desc TTEN - 24 - 24 - read-write - - - T_PRESC - desc T_PRESC - 26 - 25 - read-write - - - - - TTTR - desc TTTR - 0x38 - 32 - read-write - 0xFFFF0000 - - - TT_TRIG - desc TT_TRIG - 15 - 0 - read-write - - - TT_WTRIG - desc TT_WTRIG - 31 - 16 - read-write - - - - - SCMS - desc SCMS - 0x3C - 32 - read-write - 0x0 - - - XMREN - desc XMREN - 0 - 0 - read-write - - - FSTIM - desc FSTIM - 3 - 1 - read-write - - - ACFA - desc ACFA - 24 - 24 - read-write - - - TXS - desc TXS - 25 - 25 - read-only - - - TXB - desc TXB - 26 - 26 - read-only - - - HELOC - desc HELOC - 28 - 27 - read-only - - - MPEN - desc MPEN - 31 - 31 - read-write - - - - - MESR - desc MESR - 0x40 - 32 - read-write - 0x0 - - - MEBP1 - desc MEBP1 - 5 - 0 - read-write - - - ME1EE - desc ME1EE - 6 - 6 - read-write - - - MEAEE - desc MEAEE - 7 - 7 - read-write - - - MEBP2 - desc MEBP2 - 13 - 8 - read-write - - - ME2EE - desc ME2EE - 14 - 14 - read-write - - - MEEEC - desc MEEEC - 19 - 16 - read-write - - - MENEC - desc MENEC - 23 - 20 - read-write - - - MEL - desc MEL - 25 - 24 - read-write - - - MES - desc MES - 26 - 26 - read-write - - - - - ACFCR - desc ACFCR - 0x44 - 32 - read-write - 0x10000 - - - ACFADR - desc ACFADR - 3 - 0 - read-write - - - AE_0 - desc AE_0 - 16 - 16 - read-write - - - AE_1 - desc AE_1 - 17 - 17 - read-write - - - AE_2 - desc AE_2 - 18 - 18 - read-write - - - AE_3 - desc AE_3 - 19 - 19 - read-write - - - AE_4 - desc AE_4 - 20 - 20 - read-write - - - AE_5 - desc AE_5 - 21 - 21 - read-write - - - AE_6 - desc AE_6 - 22 - 22 - read-write - - - AE_7 - desc AE_7 - 23 - 23 - read-write - - - AE_8 - desc AE_8 - 24 - 24 - read-write - - - AE_9 - desc AE_9 - 25 - 25 - read-write - - - AE_10 - desc AE_10 - 26 - 26 - read-write - - - AE_11 - desc AE_11 - 27 - 27 - read-write - - - AE_12 - desc AE_12 - 28 - 28 - read-write - - - AE_13 - desc AE_13 - 29 - 29 - read-write - - - AE_14 - desc AE_14 - 30 - 30 - read-write - - - AE_15 - desc AE_15 - 31 - 31 - read-write - - - - - PWMCR - desc PWMCR - 0xB8 - 32 - read-write - 0x2080400 - - - PWMO - desc PWMO - 5 - 0 - read-write - - - PWMS - desc PWMS - 13 - 8 - read-write - - - PWML - desc PWML - 21 - 16 - read-write - - - - - - - COMP1 - Comparator 1 - COMP - 0x40010200 - - 0x0 - 0x10 - registers - - - ADC_COMP - ADC and COMP Interrupt through EXTI Lines 17 and 18 - 12 - - - - CSR - CSR - COMP control and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - COMP_OUT - Comparator output status - 30 - 1 - - - VCSEL - VCSEL - 27 - 1 - - - VCDIV_EN - VCDIV_EN - 26 - 1 - - - VCDIV - VCDIV - 20 - 6 - - - PWRMODE - - Comparator power mode - selector - - 18 - 2 - - - HYST - - Comparator hysteresis enable - selector - - 16 - 1 - - - POLARITY - - Comparator polarity - selector - - 15 - 1 - - - WINMODE - - Comparator non-inverting input - selector for window mode - - 11 - 1 - - - INPSEL - - Comparator signal selector for - non-inverting input - - 6 - 4 - - - INMSEL - - Comparator signal selector for - inverting input INM - - 2 - 4 - - - EN - COMP enable bit - 0 - 1 - - - - - FR - FR - - Comparator Filter - register - - 0x4 - 0x20 - read-write - 0x00000000 - - - FLTCNT1 - Comparator filter and counter - 16 - 16 - - - FLTEN1 - Filter enable bit - 0 - 1 - - - - - - - COMP2 - Comparator2 - COMP - 0x40010210 - - 0x0 - 0x10 - registers - - - ADC_COMP - ADC and COMP Interrupt through EXTI Lines 17 and 18 - 12 - - - - CSR - CSR - COMP control and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - COMP_OUT - Comparator output status - 30 - 1 - - - PWRMODE - - Comparator power mode - selector - - 18 - 2 - - - POLARITY - - Comparator polarity - selector - - 15 - 1 - - - WINMODE - - Comparator non-inverting input - selector for window mode - - 11 - 1 - - - INPSEL - - Comparator signal selector for - non-inverting input - - 6 - 4 - - - INMSEL - - Comparator signal selector for - inverting input INM - - 2 - 4 - - - HYST - - Comparator hysteresis enable - selector - - 1 - 1 - - - EN - COMP enable bit - 0 - 1 - - - - - FR - FR - - Comparator Filter - register - - 0x4 - 0x20 - read-write - 0x00000000 - - - FLTCNT2 - Comparator filter and counter - 16 - 16 - - - FLTEN2 - Filter enable bit - 0 - 1 - - - - - - - COMP3 - Comparator3 - COMP - 0x40010220 - - 0x0 - 0x10 - registers - - - ADC_COMP - ADC and COMP Interrupt through EXTI Lines 17 and 18 - 12 - - - - CSR - CSR - COMP control and status register - 0x0 - 0x20 - read-write - 0x00000000 - - - COMP_OUT - Comparator output status - 30 - 1 - - - PWRMODE - - Comparator power mode - selector - - 18 - 2 - - - POLARITY - - Comparator polarity - selector - - 15 - 1 - - - INPSEL - - Comparator signal selector for - non-inverting input - - 6 - 4 - - - INMSEL - - Comparator signal selector for - inverting input INM - - 2 - 4 - - - HYST - - Comparator hysteresis enable - selector - - 1 - 1 - - - EN - COMP enable bit - 0 - 1 - - - - - FR - FR - - Comparator Filter - register - - 0x4 - 0x20 - read-write - 0x00000000 - - - FLTCNT3 - Comparator filter and counter - 16 - 16 - - - FLTEN3 - Filter enable bit - 0 - 1 - - - - - - - CRC - CRC calculation unit - CRC - 0x40023000 - - 0x0 - 0x400 - registers - - - - DR - DR - Data register - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - DR - Data Register - 0 - 32 - - - - - IDR - IDR - Independent Data register - 0x4 - 0x20 - read-write - 0x00000000 - - - IDR - Independent Data register - 0 - 8 - - - - - CR - CR - Control register - 0x8 - 0x20 - write-only - 0x00000000 - - - RESET - Reset bit - 0 - 1 - - - - - - - CTC - desc CTC - CTC - 0x40006C00 - - 0x0 - 0x400 - registers - - - RCC_CTC - RCC and CTC global Interrupts - 4 - - - - CTL0 - desc CTL0 - 0x0 - 32 - read-write - 0x2000 - - - CKOKIE - desc CKOKIE - 0 - 0 - read-write - - - CKWARNIE - desc CKWARNIE - 1 - 1 - read-write - - - ERRIE - desc ERRIE - 2 - 2 - read-write - - - EREFIE - desc EREFIE - 3 - 3 - read-write - - - CNTEN - desc CNTEN - 5 - 5 - read-write - - - AUTOTRIM - desc AUTOTRIM - 6 - 6 - read-write - - - SWREFPUL - desc SWREFPUL - 7 - 7 - write-only - - - TRIMVALUE - desc TRIMVALUE - 13 - 8 - read-write - - - - - CTL1 - desc CTL1 - 0x4 - 32 - read-write - 0x2022BB7F - - - RLVALUE - desc RLVALUE - 15 - 0 - read-write - - - CKLIM - desc CKLIM - 23 - 16 - read-write - - - REFPSC - desc REFPSC - 26 - 24 - read-write - - - REFSEL - desc REFSEL - 29 - 28 - read-write - - - REFPOL - desc REFPOL - 31 - 31 - read-write - - - - - SR - desc SR - 0x8 - 32 - read-only - 0x0 - - - CKOKIF - desc CKOKIF - 0 - 0 - read-only - - - CKWARNIF - desc CKWARNIF - 1 - 1 - read-only - - - ERRIF - desc ERRIF - 2 - 2 - read-only - - - EREFIF - desc EREFIF - 3 - 3 - read-only - - - CKERR - desc CKERR - 8 - 8 - read-only - - - REFMISS - desc REFMISS - 9 - 9 - read-only - - - TRIMERR - desc TRIMERR - 10 - 10 - read-only - - - REFDIR - desc REFDIR - 15 - 15 - read-only - - - REFCAP - desc REFCAP - 31 - 16 - read-only - - - - - INTC - desc INTC - 0xC - 32 - write-only - 0x0 - - - CKOKIC - desc CKOKIC - 0 - 0 - write-only - - - CKWARNIC - desc CKWARNIC - 1 - 1 - write-only - - - ERRIC - desc ERRIC - 2 - 2 - write-only - - - EREFIC - desc EREFIC - 3 - 3 - write-only - - - - - - - DAC - desc DAC - DAC - 0x40007400 - - 0x0 - 0x400 - registers - - - TIM6_LPTIM1_DAC - TIM6, LPTIM1, DAC global Interrupts - 17 - - - - CR - desc CR - 0x0 - 32 - read-write - 0x0 - - - EN1 - desc EN1 - 0 - 0 - read-write - - - BOFF1 - desc BOFF1 - 1 - 1 - read-write - - - TEN1 - desc TEN1 - 2 - 2 - read-write - - - TSEL1 - desc TSEL1 - 5 - 3 - read-write - - - WAVE1 - desc WAVE1 - 7 - 6 - read-write - - - MAMP1 - desc MAMP1 - 11 - 8 - read-write - - - DMAEN1 - desc DMAEN1 - 12 - 12 - read-write - - - DMAUDRIE1 - desc DMAUDRIE1 - 13 - 13 - read-write - - - DAC1CEN - desc DAC1CEN - 14 - 14 - read-write - - - EN2 - desc EN2 - 16 - 16 - read-write - - - BOFF2 - desc BOFF2 - 17 - 17 - read-write - - - TEN2 - desc TEN2 - 18 - 18 - read-write - - - TSEL2 - desc TSEL2 - 21 - 19 - read-write - - - WAVE2 - desc WAVE2 - 23 - 22 - read-write - - - MAMP2 - desc MAMP2 - 27 - 24 - read-write - - - DMAEN2 - desc DMAEN2 - 28 - 28 - read-write - - - DMAUDRIE2 - desc DMAUDRIE2 - 29 - 29 - read-write - - - DAC2CEN - desc DAC2CEN - 30 - 30 - read-write - - - - - SWTRIGR - desc SWTRIGR - 0x4 - 32 - write-only - 0x0 - - - SWTRIG1 - desc SWTRIG1 - 0 - 0 - write-only - - - SWTRIG2 - desc SWTRIG2 - 1 - 1 - write-only - - - - - DHR12R1 - desc DHR12R1 - 0x8 - 32 - read-write - 0x0 - - - DACC1DHR - desc DACC1DHR - 11 - 0 - read-write - - - - - DHR12L1 - desc DHR12L1 - 0xC - 32 - read-write - 0x0 - - - DACC1DHR - desc DACC1DHR - 14 - 3 - read-write - - - - - DHR8R1 - desc DHR8R1 - 0x10 - 32 - read-write - 0x0 - - - DACC1DHR - desc DACC1DHR - 7 - 0 - read-write - - - - - DHR12R2 - desc DHR12R2 - 0x14 - 32 - read-write - 0x0 - - - DACC2DHR - desc DACC2DHR - 11 - 0 - read-write - - - - - DHR12L2 - desc DHR12L2 - 0x18 - 32 - read-write - 0x0 - - - DACC2DHR - desc DACC2DHR - 15 - 4 - read-write - - - - - DHR8R2 - desc DHR8R2 - 0x1C - 32 - read-write - 0x0 - - - DACC2DHR - desc DACC2DHR - 7 - 0 - read-write - - - - - DHR12RD - desc DHR12RD - 0x20 - 32 - read-write - 0x0 - - - DACC1DHR - desc DACC1DHR - 11 - 0 - read-write - - - DACC2DHR - desc DACC2DHR - 27 - 16 - read-write - - - - - DHR12LD - desc DHR12LD - 0x24 - 32 - read-write - 0x0 - - - DACC1DHR - desc DACC1DHR - 15 - 4 - read-write - - - DACC2DHR - desc DACC2DHR - 31 - 20 - read-write - - - - - DHR8RD - desc DHR8RD - 0x28 - 32 - read-write - 0x0 - - - DACC1DHR - desc DACC1DHR - 7 - 0 - read-write - - - DACC2DHR - desc DACC2DHR - 15 - 8 - read-write - - - - - DOR1 - desc DOR1 - 0x2C - 32 - read-only - 0x0 - - - DACC1DOR - desc DACC1DOR - 11 - 0 - read-only - - - - - DOR2 - desc DOR2 - 0x30 - 32 - read-only - 0x0 - - - DACC2DOR - desc DACC2DOR - 11 - 0 - read-only - - - - - SR - desc SR - 0x34 - 32 - read-only - 0x0 - - - DMAUDR1 - desc DMAUDR1 - 13 - 13 - read-only - - - DMAUDR2 - desc DMAUDR2 - 29 - 29 - read-only - - - - - - - DBGMCU - Debug support - DBGMCU - 0x40015800 - - 0x0 - 0x400 - registers - - - - IDCODE - IDCODE - MCU Device ID Code Register - 0x0 - 0x20 - read-only - 0x0 - - - DBG_ID - DBG_ID - 0 - 16 - - - - - CR - CR - - Debug MCU Configuration - Register - - 0x4 - 0x20 - read-write - 0x0 - - - DBG_SLEEP - Debug Sleep Mode - 0 - 1 - - - DBG_STOP - Debug Stop Mode - 1 - 1 - - - - - APB_FZ1 - APB_FZ1 - APB Freeze Register1 - 0x8 - 0x20 - read-write - 0x0 - - - DBG_TIMER2_STOP - - Debug Timer 2 stopped when Core is - halted - - 0 - 1 - - - DBG_TIMER3_STOP - - Debug Timer 3 stopped when Core is - halted - - 1 - 1 - - - DBG_TIMER6_STOP - - Debug Timer 6 stopped when Core is - halted - - 4 - 1 - - - DBG_TIMER7_STOP - - Debug Timer 7 stopped when Core is - halted - - 5 - 1 - - - DBG_RTC_STOP - - Debug RTC stopped when Core is - halted - - 10 - 1 - - - DBG_WWDG_STOP - - Debug Window Wachdog stopped when Core - is halted - - 11 - 1 - - - DBG_IWDG_STOP - - Debug Independent Wachdog stopped when - Core is halted - - 12 - 1 - - - DBG_CAN_STOP - DBG_CAN_STOP - 19 - 1 - - - DBG_I2C1_SMBUS_TIMEOUT - DBG_I2C1_SMBUS_TIMEOUT - 21 - 1 - - - DBG_I2C2_SMBUS_TIMEOUT - DBG_I2C2_SMBUS_TIMEOUT - 22 - 1 - read-only - - - DBG_LPTIM_STOP - - Debug LPTIM stopped when Core is - halted - - 31 - 1 - - - - - APB_FZ2 - APB_FZ2 - APB Freeze Register2 - 0xC - 0x20 - read-write - 0x0 - - - DBG_TIMER1_STOP - - Debug Timer 1 stopped when Core is - halted - - 11 - 1 - - - DBG_TIMER14_STOP - - Debug Timer 14 stopped when Core is - halted - - 15 - 1 - - - DBG_TIMER15_STOP - - Debug Timer 15 stopped when Core is - halted - - 16 - 1 - - - DBG_TIMER16_STOP - - Debug Timer 16 stopped when Core is - halted - - 17 - 1 - - - DBG_TIMER17_STOP - - Debug Timer 17 stopped when Core is - halted - - 18 - 1 - - - - - - - DV - Divider - DV - 0x40023800 - - 0x0 - 0x400 - registers - - - - DEND - DEND - Dividend - 0x0 - 0x20 - read-write - 0x0 - - - DEND - Dividend - 0 - 32 - - - - - SOR - SOR - Divisor - 0x4 - 0x20 - read-write - 0x0 - - - SOR - Divisor - 0 - 32 - - - - - QUOT - QUOT - Quotient - 0x8 - 0x20 - read-only - 0x0 - - - QUOT - Quotient - 0 - 32 - - - - - REMA - REMA - Remainder - 0xC - 0x20 - read-only - 0x0 - - - REMA - Remainder - 0 - 32 - read-only - - - - - SIGN - SIGN - des SIGN - 0x10 - 0x20 - read-write - 0x0 - - - DIV_SIGN - des DIV_SIGN - 0 - 1 - - - - - STAT - STAT - des SIGN - 0x14 - 0x20 - read-write - 0x0 - - - DIV_END - des DIV_END - 0 - 1 - - - DIV_ZERO - des DIV_ZERO - 1 - 1 - - - - - - - DMA - Direct memory access - DMA - 0x40020000 - - 0x0 - 0x400 - registers - - - DMA1_Channel1 - DMA1 Channel 1 Interrupt - 9 - - - DMA1_Channel2_3 - DMA1 Channel 2 and Channel 3 Interrupt - 10 - - - DMA1_Channel4_5_6_7 - DMA1 Channel 4, 5, 6, 7 Interrupts - 11 - - - - ISR - desc ISR - 0x0 - 32 - read-only - 0x0 - - - GIF1 - desc GIF1 - 0 - 0 - read-only - - - TCIF1 - desc TCIF1 - 1 - 1 - read-only - - - HTIF1 - desc HTIF1 - 2 - 2 - read-only - - - TEIF1 - desc TEIF1 - 3 - 3 - read-only - - - GIF2 - desc GIF2 - 4 - 4 - read-only - - - TCIF2 - desc TCIF2 - 5 - 5 - read-only - - - HTIF2 - desc HTIF2 - 6 - 6 - read-only - - - TEIF2 - desc TEIF2 - 7 - 7 - read-only - - - GIF3 - desc GIF3 - 8 - 8 - read-only - - - TCIF3 - desc TCIF3 - 9 - 9 - read-only - - - HTIF3 - desc HTIF3 - 10 - 10 - read-only - - - TEIF3 - desc TEIF3 - 11 - 11 - read-only - - - GIF4 - desc GIF4 - 12 - 12 - read-only - - - TCIF4 - desc TCIF4 - 13 - 13 - read-only - - - HTIF4 - desc HTIF4 - 14 - 14 - read-only - - - TEIF4 - desc TEIF4 - 15 - 15 - read-only - - - GIF5 - desc GIF5 - 16 - 16 - read-only - - - TCIF5 - desc TCIF5 - 17 - 17 - read-only - - - HTIF5 - desc HTIF5 - 18 - 18 - read-only - - - TEIF5 - desc TEIF5 - 19 - 19 - read-only - - - GIF6 - desc GIF6 - 20 - 20 - read-only - - - TCIF6 - desc TCIF6 - 21 - 21 - read-only - - - HTIF6 - desc HTIF6 - 22 - 22 - read-only - - - TEIF6 - desc TEIF6 - 23 - 23 - read-only - - - GIF7 - desc GIF7 - 24 - 24 - read-only - - - TCIF7 - desc TCIF7 - 25 - 25 - read-only - - - HTIF7 - desc HTIF7 - 26 - 26 - read-only - - - TEIF7 - desc TEIF7 - 27 - 27 - read-only - - - - - IFCR - desc IFCR - 0x4 - 32 - write-only - 0x0 - - - CGIF1 - desc CGIF1 - 0 - 0 - write-only - - - CTCIF1 - desc CTCIF1 - 1 - 1 - write-only - - - CHTIF1 - desc CHTIF1 - 2 - 2 - write-only - - - CTEIF1 - desc CTEIF1 - 3 - 3 - write-only - - - CGIF2 - desc CGIF2 - 4 - 4 - write-only - - - CTCIF2 - desc CTCIF2 - 5 - 5 - write-only - - - CHTIF2 - desc CHTIF2 - 6 - 6 - write-only - - - CTEIF2 - desc CTEIF2 - 7 - 7 - write-only - - - CGIF3 - desc CGIF3 - 8 - 8 - write-only - - - CTCIF3 - desc CTCIF3 - 9 - 9 - write-only - - - CHTIF3 - desc CHTIF3 - 10 - 10 - write-only - - - CTEIF3 - desc CTEIF3 - 11 - 11 - write-only - - - CGIF4 - desc CGIF4 - 12 - 12 - write-only - - - CTCIF4 - desc CTCIF4 - 13 - 13 - write-only - - - CHTIF4 - desc CHTIF4 - 14 - 14 - write-only - - - CTEIF4 - desc CTEIF4 - 15 - 15 - write-only - - - CGIF5 - desc CGIF5 - 16 - 16 - write-only - - - CTCIF5 - desc CTCIF5 - 17 - 17 - write-only - - - CHTIF5 - desc CHTIF5 - 18 - 18 - write-only - - - CTEIF5 - desc CTEIF5 - 19 - 19 - write-only - - - CGIF6 - desc CGIF6 - 20 - 20 - write-only - - - CTCIF6 - desc CTCIF6 - 21 - 21 - write-only - - - CHTIF6 - desc CHTIF6 - 22 - 22 - write-only - - - CTEIF6 - desc CTEIF6 - 23 - 23 - write-only - - - CGIF7 - desc CGIF7 - 24 - 24 - write-only - - - CTCIF7 - desc CTCIF7 - 25 - 25 - write-only - - - CHTIF7 - desc CHTIF7 - 26 - 26 - write-only - - - CTEIF7 - desc CTEIF7 - 27 - 27 - write-only - - - - - CCR1 - desc CCR1 - 0x8 - 32 - read-write - 0x0 - - - EN - desc EN - 0 - 0 - read-write - - - TCIE - desc TCIE - 1 - 1 - read-write - - - HTIE - desc HTIE - 2 - 2 - read-write - - - TEIE - desc TEIE - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CIRC - desc CIRC - 5 - 5 - read-write - - - PINC - desc PINC - 6 - 6 - read-write - - - MINC - desc MINC - 7 - 7 - read-write - - - PSIZE - desc PSIZE - 9 - 8 - read-write - - - MSIZE - desc MSIZE - 11 - 10 - read-write - - - PL - desc PL - 13 - 12 - read-write - - - MEM2MEM - desc MEM2MEM - 14 - 14 - read-write - - - - - CNDTR1 - desc CNDTR1 - 0xC - 32 - read-write - 0x0 - - - NDT - desc NDT - 15 - 0 - read-write - - - - - CPAR1 - desc CPAR1 - 0x10 - 32 - read-write - 0x0 - - - PA - desc PA - 31 - 0 - read-write - - - - - CMAR1 - desc CMAR1 - 0x14 - 32 - read-write - 0x0 - - - MA - desc MA - 31 - 0 - read-write - - - - - CCR2 - desc CCR2 - 0x1C - 32 - read-write - 0x0 - - - EN - desc EN - 0 - 0 - read-write - - - TCIE - desc TCIE - 1 - 1 - read-write - - - HTIE - desc HTIE - 2 - 2 - read-write - - - TEIE - desc TEIE - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CIRC - desc CIRC - 5 - 5 - read-write - - - PINC - desc PINC - 6 - 6 - read-write - - - MINC - desc MINC - 7 - 7 - read-write - - - PSIZE - desc PSIZE - 9 - 8 - read-write - - - MSIZE - desc MSIZE - 11 - 10 - read-write - - - PL - desc PL - 13 - 12 - read-write - - - MEM2MEM - desc MEM2MEM - 14 - 14 - read-write - - - - - CNDTR2 - desc CNDTR2 - 0x20 - 32 - read-write - 0x0 - - - NDT - desc NDT - 15 - 0 - read-write - - - - - CPAR2 - desc CPAR2 - 0x24 - 32 - read-write - 0x0 - - - PA - desc PA - 31 - 0 - read-write - - - - - CMAR2 - desc CMAR2 - 0x28 - 32 - read-write - 0x0 - - - MA - desc MA - 31 - 0 - read-write - - - - - CCR3 - desc CCR3 - 0x30 - 32 - read-write - 0x0 - - - EN - desc EN - 0 - 0 - read-write - - - TCIE - desc TCIE - 1 - 1 - read-write - - - HTIE - desc HTIE - 2 - 2 - read-write - - - TEIE - desc TEIE - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CIRC - desc CIRC - 5 - 5 - read-write - - - PINC - desc PINC - 6 - 6 - read-write - - - MINC - desc MINC - 7 - 7 - read-write - - - PSIZE - desc PSIZE - 9 - 8 - read-write - - - MSIZE - desc MSIZE - 11 - 10 - read-write - - - PL - desc PL - 13 - 12 - read-write - - - MEM2MEM - desc MEM2MEM - 14 - 14 - read-write - - - - - CNDTR3 - desc CNDTR3 - 0x34 - 32 - read-write - 0x0 - - - NDT - desc NDT - 15 - 0 - read-write - - - - - CPAR3 - desc CPAR3 - 0x38 - 32 - read-write - 0x0 - - - PA - desc PA - 31 - 0 - read-write - - - - - CMAR3 - desc CMAR3 - 0x3C - 32 - read-write - 0x0 - - - MA - desc MA - 31 - 0 - read-write - - - - - CCR4 - desc CCR4 - 0x44 - 32 - read-write - 0x0 - - - EN - desc EN - 0 - 0 - read-write - - - TCIE - desc TCIE - 1 - 1 - read-write - - - HTIE - desc HTIE - 2 - 2 - read-write - - - TEIE - desc TEIE - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CIRC - desc CIRC - 5 - 5 - read-write - - - PINC - desc PINC - 6 - 6 - read-write - - - MINC - desc MINC - 7 - 7 - read-write - - - PSIZE - desc PSIZE - 9 - 8 - read-write - - - MSIZE - desc MSIZE - 11 - 10 - read-write - - - PL - desc PL - 13 - 12 - read-write - - - MEM2MEM - desc MEM2MEM - 14 - 14 - read-write - - - - - CNDTR4 - desc CNDTR4 - 0x48 - 32 - read-write - 0x0 - - - NDT - desc NDT - 15 - 0 - read-write - - - - - CPAR4 - desc CPAR4 - 0x4C - 32 - read-write - 0x0 - - - PA - desc PA - 31 - 0 - read-write - - - - - CMAR4 - desc CMAR4 - 0x50 - 32 - read-write - 0x0 - - - MA - desc MA - 31 - 0 - read-write - - - - - CCR5 - desc CCR5 - 0x58 - 32 - read-write - 0x0 - - - EN - desc EN - 0 - 0 - read-write - - - TCIE - desc TCIE - 1 - 1 - read-write - - - HTIE - desc HTIE - 2 - 2 - read-write - - - TEIE - desc TEIE - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CIRC - desc CIRC - 5 - 5 - read-write - - - PINC - desc PINC - 6 - 6 - read-write - - - MINC - desc MINC - 7 - 7 - read-write - - - PSIZE - desc PSIZE - 9 - 8 - read-write - - - MSIZE - desc MSIZE - 11 - 10 - read-write - - - PL - desc PL - 13 - 12 - read-write - - - MEM2MEM - desc MEM2MEM - 14 - 14 - read-write - - - - - CNDTR5 - desc CNDTR5 - 0x5C - 32 - read-write - 0x0 - - - NDT - desc NDT - 15 - 0 - read-write - - - - - CPAR5 - desc CPAR5 - 0x60 - 32 - read-write - 0x0 - - - PA - desc PA - 31 - 0 - read-write - - - - - CMAR5 - desc CMAR5 - 0x64 - 32 - read-write - 0x0 - - - MA - desc MA - 31 - 0 - read-write - - - - - CCR6 - desc CCR6 - 0x6C - 32 - read-write - 0x0 - - - EN - desc EN - 0 - 0 - read-write - - - TCIE - desc TCIE - 1 - 1 - read-write - - - HTIE - desc HTIE - 2 - 2 - read-write - - - TEIE - desc TEIE - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CIRC - desc CIRC - 5 - 5 - read-write - - - PINC - desc PINC - 6 - 6 - read-write - - - MINC - desc MINC - 7 - 7 - read-write - - - PSIZE - desc PSIZE - 9 - 8 - read-write - - - MSIZE - desc MSIZE - 11 - 10 - read-write - - - PL - desc PL - 13 - 12 - read-write - - - MEM2MEM - desc MEM2MEM - 14 - 14 - read-write - - - - - CNDTR6 - desc CNDTR6 - 0x70 - 32 - read-write - 0x0 - - - NDT - desc NDT - 15 - 0 - read-write - - - - - CPAR6 - desc CPAR6 - 0x74 - 32 - read-write - 0x0 - - - PA - desc PA - 31 - 0 - read-write - - - - - CMAR6 - desc CMAR6 - 0x78 - 32 - read-write - 0x0 - - - MA - desc MA - 31 - 0 - read-write - - - - - CCR7 - desc CCR7 - 0x80 - 32 - read-write - 0x0 - - - EN - desc EN - 0 - 0 - read-write - - - TCIE - desc TCIE - 1 - 1 - read-write - - - HTIE - desc HTIE - 2 - 2 - read-write - - - TEIE - desc TEIE - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CIRC - desc CIRC - 5 - 5 - read-write - - - PINC - desc PINC - 6 - 6 - read-write - - - MINC - desc MINC - 7 - 7 - read-write - - - PSIZE - desc PSIZE - 9 - 8 - read-write - - - MSIZE - desc MSIZE - 11 - 10 - read-write - - - PL - desc PL - 13 - 12 - read-write - - - MEM2MEM - desc MEM2MEM - 14 - 14 - read-write - - - - - CNDTR7 - desc CNDTR7 - 0x84 - 32 - read-write - 0x0 - - - NDT - desc NDT - 15 - 0 - read-write - - - - - CPAR7 - desc CPAR7 - 0x88 - 32 - read-write - 0x0 - - - PA - desc PA - 31 - 0 - read-write - - - - - CMAR7 - desc CMAR7 - 0x8C - 32 - read-write - 0x0 - - - MA - desc MA - 31 - 0 - read-write - - - - - - - EXTI - - External interrupt/event - controller - - EXTI - 0x40021800 - - 0x0 - 0x400 - registers - - - PVD - PVD Interrupt through EXTI Lines 16 - 1 - - - EXTI0_1 - EXTI Line 0 and 1 Interrupt - 5 - - - EXTI2_3 - EXTI Line 2 and 3 Interrupt - 6 - - - EXTI4_15 - EXTI Line 4 to 15 Interrupt - 7 - - - - RTSR - RTSR - - EXTI rising trigger selection - register - - 0x0 - 0x20 - read-write - 0x00000000 - - - RT20 - - Rising trigger event configuration bit - of Configurable Event input - - 20 - 1 - - - RT19 - - Rising trigger event configuration bit - of Configurable Event input - - 19 - 1 - - - RT18 - - Rising trigger event configuration bit - of Configurable Event input - - 18 - 1 - - - RT17 - - Rising trigger event configuration bit - of Configurable Event input - - 17 - 1 - - - RT16 - - Rising trigger event configuration bit - of Configurable Event input - - 16 - 1 - - - RT15 - - Rising trigger event configuration bit - of Configurable Event input - - 15 - 1 - - - RT14 - - Rising trigger event configuration bit - of Configurable Event input - - 14 - 1 - - - RT13 - - Rising trigger event configuration bit - of Configurable Event input - - 13 - 1 - - - RT12 - - Rising trigger event configuration bit - of Configurable Event input - - 12 - 1 - - - RT11 - - Rising trigger event configuration bit - of Configurable Event input - - 11 - 1 - - - RT10 - - Rising trigger event configuration bit - of Configurable Event input - - 10 - 1 - - - RT9 - - Rising trigger event configuration bit - of Configurable Event input - - 9 - 1 - - - RT8 - - Rising trigger event configuration bit - of Configurable Event input - - 8 - 1 - - - RT7 - - Rising trigger event configuration bit - of Configurable Event input - - 7 - 1 - - - RT6 - - Rising trigger event configuration bit - of Configurable Event input - - 6 - 1 - - - RT5 - - Rising trigger event configuration bit - of Configurable Event input - - 5 - 1 - - - RT4 - - Rising trigger event configuration bit - of Configurable Event input - - 4 - 1 - - - RT3 - - Rising trigger event configuration bit - of Configurable Event input - - 3 - 1 - - - RT2 - - Rising trigger event configuration bit - of Configurable Event input - - 2 - 1 - - - RT1 - - Rising trigger event configuration bit - of Configurable Event input - - 1 - 1 - - - RT0 - - Rising trigger event configuration bit - of Configurable Event input - - 0 - 1 - - - - - FTSR - FTSR - - EXTI falling trigger selection - register - - 0x4 - 0x20 - read-write - 0x00000000 - - - FT20 - - Falling trigger event configuration bit - of Configurable Event input - - 20 - 1 - - - FT19 - - Falling trigger event configuration bit - of Configurable Event input - - 19 - 1 - - - FT18 - - Falling trigger event configuration bit - of Configurable Event input - - 18 - 1 - - - FT17 - - Falling trigger event configuration bit - of Configurable Event input - - 17 - 1 - - - FT16 - - Falling trigger event configuration bit - of Configurable Event input - - 16 - 1 - - - FT15 - - Falling trigger event configuration bit - of Configurable Event input - - 15 - 1 - - - FT14 - - Falling trigger event configuration bit - of Configurable Event input - - 14 - 1 - - - FT13 - - Falling trigger event configuration bit - of Configurable Event input - - 13 - 1 - - - FT12 - - Falling trigger event configuration bit - of Configurable Event input - - 12 - 1 - - - FT11 - - Falling trigger event configuration bit - of Configurable Event input - - 11 - 1 - - - FT10 - - Falling trigger event configuration bit - of Configurable Event input - - 10 - 1 - - - FT9 - - Falling trigger event configuration bit - of Configurable Event input - - 9 - 1 - - - FT8 - - Falling trigger event configuration bit - of Configurable Event input - - 8 - 1 - - - FT7 - - Falling trigger event configuration bit - of Configurable Event input - - 7 - 1 - - - FT6 - - Falling trigger event configuration bit - of Configurable Event input - - 6 - 1 - - - FT5 - - Falling trigger event configuration bit - of Configurable Event input - - 5 - 1 - - - FT4 - - Falling trigger event configuration bit - of Configurable Event input - - 4 - 1 - - - FT3 - - Falling trigger event configuration bit - of Configurable Event input - - 3 - 1 - - - FT2 - - Falling trigger event configuration bit - of Configurable Event input - - 2 - 1 - - - FT1 - - Falling trigger event configuration bit - of Configurable Event input - - 1 - 1 - - - FT0 - - Falling trigger event configuration bit - of Configurable Event input - - 0 - 1 - - - - - SWIER - SWIER - - EXTI software interrupt event - register - - 0x8 - 0x20 - read-write - 0x00000000 - - - SWI20 - - Rising trigger event configuration bit - of Configurable Event input - - 20 - 1 - - - SWI19 - - Rising trigger event configuration bit - of Configurable Event input - - 19 - 1 - - - SWI18 - - Rising trigger event configuration bit - of Configurable Event input - - 18 - 1 - - - SWI17 - - Rising trigger event configuration bit - of Configurable Event input - - 17 - 1 - - - SWI16 - - Rising trigger event configuration bit - of Configurable Event input - - 16 - 1 - - - SWI15 - - Rising trigger event configuration bit - of Configurable Event input - - 15 - 1 - - - SWI14 - - Rising trigger event configuration bit - of Configurable Event input - - 14 - 1 - - - SWI13 - - Rising trigger event configuration bit - of Configurable Event input - - 13 - 1 - - - SWI12 - - Rising trigger event configuration bit - of Configurable Event input - - 12 - 1 - - - SWI11 - - Rising trigger event configuration bit - of Configurable Event input - - 11 - 1 - - - SWI10 - - Rising trigger event configuration bit - of Configurable Event input - - 10 - 1 - - - SWI9 - - Rising trigger event configuration bit - of Configurable Event input - - 9 - 1 - - - SWI8 - - Rising trigger event configuration bit - of Configurable Event input - - 8 - 1 - - - SWI7 - - Rising trigger event configuration bit - of Configurable Event input - - 7 - 1 - - - SWI6 - - Rising trigger event configuration bit - of Configurable Event input - - 6 - 1 - - - SWI5 - - Rising trigger event configuration bit - of Configurable Event input - - 5 - 1 - - - SWI4 - - Rising trigger event configuration bit - of Configurable Event input - - 4 - 1 - - - SWI3 - - Rising trigger event configuration bit - of Configurable Event input - - 3 - 1 - - - SWI2 - - Rising trigger event configuration bit - of Configurable Event input - - 2 - 1 - - - SWI1 - - Rising trigger event configuration bit - of Configurable Event input - - 1 - 1 - - - SWI0 - - Rising trigger event configuration bit - of Configurable Event input - - 0 - 1 - - - - - PR - PR - - EXTI pending - register - - 0xC - 0x20 - read-write - 0x00000000 - - - PR20 - - configurable event inputs x rising edge - Pending bit. - - 20 - 1 - - - PR19 - - configurable event inputs x rising edge - Pending bit. - - 19 - 1 - - - PR18 - - configurable event inputs x rising edge - Pending bit. - - 18 - 1 - - - PR17 - - configurable event inputs x rising edge - Pending bit. - - 17 - 1 - - - PR16 - - configurable event inputs x rising edge - Pending bit. - - 16 - 1 - - - PR15 - - configurable event inputs x rising edge - Pending bit. - - 15 - 1 - - - PR14 - - configurable event inputs x rising edge - Pending bit. - - 14 - 1 - - - PR13 - - configurable event inputs x rising edge - Pending bit - - 13 - 1 - - - PR12 - - configurable event inputs x rising edge - Pending bit. - - 12 - 1 - - - PR11 - - configurable event inputs x rising edge - Pending bit. - - 11 - 1 - - - PR10 - - configurable event inputs x rising edge - Pending bit. - - 10 - 1 - - - PR9 - - configurable event inputs x rising edge - Pending bit. - - 9 - 1 - - - PR8 - - configurable event inputs x rising edge - Pending bit. - - 8 - 1 - - - PR7 - - configurable event inputs x rising edge - Pending bit. - - 7 - 1 - - - PR6 - - configurable event inputs x rising edge - Pending bit. - - 6 - 1 - - - PR5 - - configurable event inputs x rising edge - Pending bit. - - 5 - 1 - - - PR4 - - configurable event inputs x rising edge - Pending bit. - - 4 - 1 - - - PR3 - - configurable event inputs x rising edge - Pending bit. - - 3 - 1 - - - PR2 - - configurable event inputs x rising edge - Pending bit. - - 2 - 1 - - - PR1 - - configurable event inputs x rising edge - Pending bit. - - 1 - 1 - - - PR0 - - configurable event inputs x rising edge - Pending bit. - - 0 - 1 - - - - - EXTICR1 - EXTICR1 - - EXTI external interrupt selection - register - - 0x60 - 0x20 - read-write - 0x00000000 - - - EXTI3 - GPIO port selection - 24 - 2 - - - EXTI2 - GPIO port selection - 16 - 2 - - - EXTI1 - GPIO port selection - 8 - 2 - - - EXTI0 - GPIO port selection - 0 - 2 - - - - - EXTICR2 - EXTICR2 - - EXTI external interrupt selection - register - - 0x64 - 0x20 - read-write - 0x00000000 - - - EXTI7 - GPIO port selection - 24 - 2 - - - EXTI6 - GPIO port selection - 16 - 2 - - - EXTI5 - GPIO port selection - 8 - 2 - - - EXTI4 - GPIO port selection - 0 - 2 - - - - - EXTICR3 - EXTICR3 - - EXTI external interrupt selection - register - - 0x68 - 0x20 - read-write - 0x00000000 - - - EXTI11 - GPIO port selection - 24 - 2 - - - EXTI10 - GPIO port selection - 16 - 2 - - - EXTI9 - GPIO port selection - 8 - 2 - - - EXTI8 - GPIO port selection - 0 - 2 - - - - - EXTICR4 - EXTICR4 - - EXTI external interrupt selection - register - - 0x6C - 0x20 - read-write - 0x00000000 - - - EXTI15 - GPIO port selection - 24 - 2 - - - EXTI14 - GPIO port selection - 16 - 2 - - - EXTI13 - GPIO port selection - 8 - 2 - - - EXTI12 - GPIO port selection - 0 - 2 - - - - - IMR - IMR - - EXTI CPU wakeup with interrupt mask - register - - 0x80 - 0x20 - read-write - 0xFFF80000 - - - IM29 - - CPU wakeup with interrupt mask on event - input - - 29 - 1 - - - IM20 - - CPU wakeup with interrupt mask on event - input - - 20 - 1 - - - IM19 - - CPU wakeup with interrupt mask on event - input - - 19 - 1 - - - IM18 - - CPU wakeup with interrupt mask on event - input - - 18 - 1 - - - IM17 - - CPU wakeup with interrupt mask on event - input - - 17 - 1 - - - IM16 - - CPU wakeup with interrupt mask on event - input - - 16 - 1 - - - IM15 - - CPU wakeup with interrupt mask on event - input - - 15 - 1 - - - IM14 - - CPU wakeup with interrupt mask on event - input - - 14 - 1 - - - IM13 - - CPU wakeup with interrupt mask on event - input - - 13 - 1 - - - IM12 - - CPU wakeup with interrupt mask on event - input - - 12 - 1 - - - IM11 - - CPU wakeup with interrupt mask on event - input - - 11 - 1 - - - IM10 - - CPU wakeup with interrupt mask on event - input - - 10 - 1 - - - IM9 - - CPU wakeup with interrupt mask on event - input - - 9 - 1 - - - IM8 - - CPU wakeup with interrupt mask on event - input - - 8 - 1 - - - IM7 - - CPU wakeup with interrupt mask on event - input - - 7 - 1 - - - IM6 - - CPU wakeup with interrupt mask on event - input - - 6 - 1 - - - IM5 - - CPU wakeup with interrupt mask on event - input - - 5 - 1 - - - IM4 - - CPU wakeup with interrupt mask on event - input - - 4 - 1 - - - IM3 - - CPU wakeup with interrupt mask on event - input - - 3 - 1 - - - IM2 - - CPU wakeup with interrupt mask on event - input - - 2 - 1 - - - IM1 - - CPU wakeup with interrupt mask on event - input - - 1 - 1 - - - IM0 - - CPU wakeup with interrupt mask on event - input - - 0 - 1 - - - - - EMR - EMR - - EXTI CPU wakeup with event mask - register - - 0x84 - 0x20 - read-write - 0x00000000 - - - EM29 - - CPU wakeup with event mask on event - input - - 29 - 1 - - - EM20 - - CPU wakeup with event mask on event - input - - 20 - 1 - - - EM19 - - CPU wakeup with event mask on event - input - - 19 - 1 - - - EM18 - - CPU wakeup with event mask on event - input - - 18 - 1 - - - EM17 - - CPU wakeup with event mask on event - input - - 17 - 1 - - - EM16 - - CPU wakeup with event mask on event - input - - 16 - 1 - - - EM15 - - CPU wakeup with event mask on event - input - - 15 - 1 - - - EM14 - - CPU wakeup with event mask on event - input - - 14 - 1 - - - EM13 - - CPU wakeup with event mask on event - input - - 13 - 1 - - - EM12 - - CPU wakeup with event mask on event - input - - 12 - 1 - - - EM11 - - CPU wakeup with event mask on event - input - - 11 - 1 - - - EM10 - - CPU wakeup with event mask on event - input - - 10 - 1 - - - EM9 - - CPU wakeup with event mask on event - input - - 9 - 1 - - - EM8 - - CPU wakeup with event mask on event - input - - 8 - 1 - - - EM7 - - CPU wakeup with event mask on event - input - - 7 - 1 - - - EM6 - - CPU wakeup with event mask on event - input - - 6 - 1 - - - EM5 - - CPU wakeup with event mask on event - input - - 5 - 1 - - - EM4 - - CPU wakeup with event mask on event - input - - 4 - 1 - - - EM3 - - CPU wakeup with event mask on event - input - - 3 - 1 - - - EM2 - - CPU wakeup with event mask on event - input - - 2 - 1 - - - EM1 - - CPU wakeup with event mask on event - input - - 1 - 1 - - - EM0 - - CPU wakeup with event mask on event - input - - 0 - 1 - - - - - - - FLASH - desc FLASH - FLASH - 0x40022000 - - 0x0 - 0x400 - registers - - - FLASH - FLASH global Interrupt - 3 - - - - ACR - desc ACR - 0x0 - 32 - read-write - 0x500 - - - LATENCY - desc LATENCY - 1 - 0 - read-write - - - PRFTEN - desc PRFTEN - 8 - 8 - read-write - - - ICEN - desc ICEN - 9 - 9 - read-write - - - DCEN - desc DCEN - 10 - 10 - read-write - - - - - KEYR - desc KEYR - 0x8 - 32 - write-only - 0x0 - - - KEY - desc KEY - 31 - 0 - write-only - - - - - OPTKEYR - desc OPTKEYR - 0xC - 32 - write-only - 0x0 - - - OPTKEY - desc OPTKEY - 31 - 0 - write-only - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - - - EOP - desc EOP - 0 - 0 - read-write - - - WRPERR - desc WRPERR - 4 - 4 - read-write - - - OPTVERR - desc OPTVERR - 15 - 15 - read-write - - - BSY - desc BSY - 16 - 16 - read-only - - - - - CR - desc CR - 0x14 - 32 - read-write - 0x0 - - - PG - desc PG - 0 - 0 - read-write - - - PER - desc PER - 1 - 1 - read-write - - - MER - desc MER - 2 - 2 - read-write - - - SER - desc SER - 11 - 11 - read-write - - - OPTSTRT - desc OPTSTRT - 17 - 17 - read-write - - - PGSTRT - desc PGSTRT - 19 - 19 - read-write - - - EOPIE - desc EOPIE - 24 - 24 - read-write - - - ERRIE - desc ERRIE - 25 - 25 - read-write - - - OBL_LAUNCH - desc OBL_LAUNCH - 27 - 27 - read-write - - - OPTLOCK - desc OPTLOCK - 30 - 30 - read-write - - - LOCK - desc LOCK - 31 - 31 - read-write - - - - - OPTR - desc OPTR - 0x20 - 32 - read-only - 0x0 - - - RDP - desc RDP - 7 - 0 - read-only - - - IWDG_SW - desc IWDG_SW - 11 - 11 - read-only - - - WWDG_SW - desc WWDG_SW - 12 - 12 - read-only - - - NRST_MODE - desc NRST_MODE - 13 - 13 - read-only - - - NBOOT1 - desc nBOOT1 - 14 - 14 - read-only - - - IWDG_STOP - desc IWDG_STOP - 15 - 15 - read-only - - - - - SDKR - desc SDKR - 0x24 - 32 - read-only - 0x0 - - - SDK_STRT - desc SDK_STRT - 4 - 0 - read-only - - - BOR_EN - desc BOR_EN - 5 - 5 - read-only - - - SDK_END - desc SDK_END - 12 - 8 - read-only - - - BOR_LEV - desc BOR_LEV - 15 - 13 - read-only - - - - - PCK_EN - desc PCK_EN - 0x28 - 32 - read-only - 0x0 - - - USB_CLK_EN - desc USB_CLK_EN - 0 - 0 - read-only - - - CAN_CLK_EN - desc CAN_CLK_EN - 1 - 1 - read-only - - - TIM2_CLK_EN - desc TIM2_CLK_EN - 2 - 2 - read-only - - - TIM3_CLK_EN - desc TIM3_CLK_EN - 3 - 3 - read-only - - - TIM7_CLK_EN - desc TIM7_CLK_EN - 4 - 4 - read-only - - - I2C2_CLK_EN - desc I2C2_CLK_EN - 5 - 5 - read-only - - - USART3_CLK_EN - desc USART3_CLK_EN - 6 - 6 - read-only - - - USART4_CLK_EN - desc USART4_CLK_EN - 7 - 7 - read-only - - - LCD_CLK_EN - desc LCD_CLK_EN - 8 - 8 - read-only - - - TIM14_CLK_EN - desc TIM14_CLK_EN - 9 - 9 - read-only - - - TIM15_CLK_EN - desc TIM15_CLK_EN - 10 - 10 - read-only - - - TIM17_CLK_EN - desc TIM17_CLK_EN - 11 - 11 - read-only - - - - - WRPR - desc WRPR - 0x2C - 32 - read-write - 0x0 - - - WRP - desc WRP - 15 - 0 - read-write - - - - - STCR - desc STCR - 0x90 - 32 - read-write - 0x00006400 - - - SLEEP_EN - desc SLEEP_EN - 0 - 0 - read-write - - - SLEEP_TIME - desc SLEEP_TIME - 15 - 8 - read-write - - - - - TS0 - desc TS0 - 0x100 - 32 - read-write - 0xB4 - - - TS0 - desc TS0 - 7 - 0 - read-write - - - - - TS1 - desc TS1 - 0x104 - 32 - read-write - 0x1B0 - - - TS1 - desc TS1 - 8 - 0 - read-write - - - - - TS2P - desc TS2P - 0x108 - 32 - read-write - 0xB4 - - - TS2P - desc TS2P - 7 - 0 - read-write - - - - - TPS3 - desc TPS3 - 0x10C - 32 - read-write - 0x6C0 - - - TPS3 - desc TPS3 - 10 - 0 - read-write - - - - - TS3 - desc TS3 - 0x110 - 32 - read-write - 0xB4 - - - TS3 - desc TS3 - 7 - 0 - read-write - - - - - PERTPE - desc PERTPE - 0x114 - 32 - read-write - 0xEA60 - - - PERTPE - desc PERTPE - 16 - 0 - read-write - - - - - SMERTPE - desc SMERTPE - 0x118 - 32 - read-write - 0xFD20 - - - SMERTPE - desc SMERTPE - 16 - 0 - read-write - - - - - PRGTPE - desc PRGTPE - 0x11C - 32 - read-write - 0x8CA0 - - - PRGTPE - desc PRGTPE - 15 - 0 - read-write - - - - - PRETPE - desc PRETPE - 0x120 - 32 - read-write - 0x12C0 - - - PRETPE - desc PRETPE - 13 - 0 - read-write - - - - - TRMLSR - desc TRMLSR - 0x290 - 32 - read-only - 0x0 - - - PMU_TRIM0_ERR - desc PMU_TRIM0_ERR - 0 - 0 - read-only - - - PMU_TRIM1_ERR - desc PMU_TRIM1_ERR - 1 - 1 - read-only - - - HSI_TRIM_ERR - desc HSI_TRIM_ERR - 2 - 2 - read-only - - - LSI_TRIM_ERR - desc LSI_TRIM_ERR - 3 - 3 - read-only - - - FLASH_TRIM0_ERR - desc FLASH_TRIM0_ERR - 4 - 4 - read-only - - - FLASH_TRIM1_ERR - desc FLASH_TRIM1_ERR - 5 - 5 - read-only - - - FLASH_TRIM2_ERR - desc FLASH_TRIM2_ERR - 6 - 6 - read-only - - - FLASH_TRIM3_ERR - desc FLASH_TRIM3_ERR - 7 - 7 - read-only - - - FLASH_TRIM4_ERR - desc FLASH_TRIM4_ERR - 8 - 8 - read-only - - - FLASH_TRIM5_ERR - desc FLASH_TRIM5_ERR - 9 - 9 - read-only - - - TS_TRIM_ERR - desc TS_TRIM_ERR - 10 - 10 - read-only - - - CHIP_CFG_ERR - desc CHIP_CFG_ERR - 11 - 11 - read-only - - - CHKRD0_PASS - desc CHKRD0_PASS - 16 - 16 - read-only - - - CHKRD1_PASS - desc CHKRD1_PASS - 17 - 17 - read-only - - - CHKRD2_PASS - desc CHKRD2_PASS - 18 - 18 - read-only - - - CHKRD3_PASS - desc CHKRD3_PASS - 19 - 19 - read-only - - - - - TRMDR0 - desc TRMDR0 - 0x294 - 32 - read-only - 0x0 - - - BIAS_CR - desc BIAS_CR - 3 - 0 - read-only - - - TRIM_MR - desc TRIM_MR - 8 - 4 - read-only - - - TRIM_VREF - desc TRIM_VREF - 13 - 9 - read-only - - - TRIM_POR - desc TRIM_POR - 19 - 16 - read-only - - - TRIM_BG - desc TRIM_BG - 27 - 20 - read-only - - - - - TRMDR1 - desc TRMDR1 - 0x298 - 32 - read-only - 0x0 - - - LSI_TRIM - desc LSI_TRIM - 8 - 0 - read-only - - - HSI_TRIM - desc HSI_TRIM - 28 - 16 - read-only - - - HSI_FS - desc HSI_FS - 31 - 29 - read-only - - - - - TRMDR2 - desc TRMDR2 - 0x29C - 32 - read-only - 0x0 - - - FLASH_OP - desc FLASH_OP - 31 - 0 - read-only - - - - - TRMDR3 - desc TRMDR3 - 0x2A0 - 32 - read-only - 0x0 - - - FLASH_OP - desc FLASH_OP - 31 - 0 - read-only - - - - - TRMDR4 - desc TRMDR4 - 0x2A4 - 32 - read-only - 0x0 - - - FLASH_ERASE_VPOS - desc FLASH_ERASE_VPOS - 4 - 0 - read-only - - - FLASH_ERASE_VNEG - desc FLASH_ERASE_VNEG - 9 - 5 - read-only - - - FLASH_PROG_VPOS - desc FLASH_PROG_VPOS - 20 - 16 - read-only - - - FLASH_PROG_VNEG - desc FLASH_PROG_VNEG - 25 - 21 - read-only - - - - - TRMDR5 - desc TRMDR5 - 0x2A8 - 32 - read-only - 0x0 - - - FLASH_SIZE - desc FLASH_SIZE - 2 - 0 - read-only - - - SRAM_SIZE - desc SRAM_SIZE - 6 - 4 - read-only - - - TS_TRIM - desc TS_TRIM - 11 - 8 - read-only - - - - - TRMDR6 - desc TRMDR6 - 0x2AC - 32 - read-only - 0x0 - - - OPA0_TRIM - desc OPA0_TRIM - 3 - 0 - read-only - - - OPA1_TRIM - desc OPA1_TRIM - 7 - 4 - read-only - - - OPA2_TRIM - desc OPA2_TRIM - 11 - 8 - read-only - - - OPA3_TRIM - desc OPA3_TRIM - 15 - 12 - read-only - - - OPA4_TRIM - desc OPA4_TRIM - 19 - 16 - read-only - - - LCD_TRIM - desc LCD_TRIM - 27 - 20 - read-only - - - - - TRMDR7 - desc TRMDR7 - 0x2B0 - 32 - read-only - 0x0 - - - TS_DATA_0_TRIM - desc TS_DATA_0_TRIM - 11 - 0 - read-only - - - TS_DATA_1_TRIM - desc TS_DATA_1_TRIM - 23 - 12 - read-only - - - - - TRMDR8 - desc TRMDR8 - 0x2B4 - 32 - read-only - 0x0 - - - DAC_0_TRIM - desc DAC_0_TRIM - 11 - 0 - read-only - - - DAC_1_TRIM - desc DAC_1_TRIM - 23 - 12 - read-only - - - VREF_BUF_TRIM - desc VREF_BUF_TRIM - 28 - 24 - read-only - - - - - - - GPIOA - General-purpose I/Os - GPIO - 0x50000000 - - 0x0 - 0x400 - registers - - - - MODER - MODER - GPIO port mode register - 0x0 - 0x20 - read-write - 0xEBFFFFFF - - - MODE15 - - Port x configuration bits (y=0-15) - - 30 - 2 - - - MODE14 - - Port x configuration bits (y=0-15) - - 28 - 2 - - - MODE13 - - Port x configuration bits (y=0-15) - - 26 - 2 - - - MODE12 - - Port x configuration bits (y=0-15) - - 24 - 2 - - - MODE11 - - Port x configuration bits (y=0-15) - - 22 - 2 - - - MODE10 - - Port x configuration bits (y=0-15) - - 20 - 2 - - - MODE9 - - Port x configuration bits (y=0-15) - - 18 - 2 - - - MODE8 - - Port x configuration bits (y=0-15) - - 16 - 2 - - - MODE7 - - Port x configuration bits (y=0-15) - - 14 - 2 - - - MODE6 - - Port x configuration bits (y=0-15) - - 12 - 2 - - - MODE5 - - Port x configuration bits (y=0-15) - - 10 - 2 - - - MODE4 - - Port x configuration bits (y=0-15) - - 8 - 2 - - - MODE3 - - Port x configuration bits (y=0-15) - - 6 - 2 - - - MODE2 - - Port x configuration bits (y=0-15) - - 4 - 2 - - - MODE1 - - Port x configuration bits (y=0-15) - - 2 - 2 - - - MODE0 - - Port x configuration bits (y=0-15) - - 0 - 2 - - - - - OTYPER - OTYPER - GPIO port output type register - 0x4 - 0x20 - read-write - 0x00000000 - - - OT15 - - Port x configuration bits (y=0-15) - - 15 - 1 - - - OT14 - - Port x configuration bits (y=0-15) - - 14 - 1 - - - OT13 - - Port x configuration bits (y=0-15) - - 13 - 1 - - - OT12 - - Port x configuration bits (y=0-15) - - 12 - 1 - - - OT11 - - Port x configuration bits (y=0-15) - - 11 - 1 - - - OT10 - - Port x configuration bits (y=0-15) - - 10 - 1 - - - OT9 - - Port x configuration bits (y=0-15) - - 9 - 1 - - - OT8 - - Port x configuration bits (y=0-15) - - 8 - 1 - - - OT7 - - Port x configuration bits (y=0-15) - - 7 - 1 - - - OT6 - - Port x configuration bits (y=0-15) - - 6 - 1 - - - OT5 - - Port x configuration bits (y=0-15) - - 5 - 1 - - - OT4 - - Port x configuration bits (y=0-15) - - 4 - 1 - - - OT3 - - Port x configuration bits (y=0-15) - - 3 - 1 - - - OT2 - - Port x configuration bits (y=0-15) - - 2 - 1 - - - OT1 - - Port x configuration bits (y=0-15) - - 1 - 1 - - - OT0 - - Port x configuration bits (y=0-15) - - 0 - 1 - - - - - OSPEEDR - OSPEEDR - - GPIO port output speed - register - - 0x8 - 0x20 - read-write - 0x0C000000 - - - OSPEED15 - - Port x configuration bits (y=0-15) - - 30 - 2 - - - OSPEED14 - - Port x configuration bits (y=0-15) - - 28 - 2 - - - OSPEED13 - - Port x configuration bits (y=0-15) - - 26 - 2 - - - OSPEED12 - - Port x configuration bits (y=0-15) - - 24 - 2 - - - OSPEED11 - - Port x configuration bits (y=0-15) - - 22 - 2 - - - OSPEED10 - - Port x configuration bits (y=0-15) - - 20 - 2 - - - OSPEED9 - - Port x configuration bits (y=0-15) - - 18 - 2 - - - OSPEED8 - - Port x configuration bits (y=0-15) - - 16 - 2 - - - OSPEED7 - - Port x configuration bits (y=0-15) - - 14 - 2 - - - OSPEED6 - - Port x configuration bits (y=0-15) - - 12 - 2 - - - OSPEED5 - - Port x configuration bits (y=0-15) - - 10 - 2 - - - OSPEED4 - - Port x configuration bits (y=0-15) - - 8 - 2 - - - OSPEED3 - - Port x configuration bits (y=0-15) - - 6 - 2 - - - OSPEED2 - - Port x configuration bits (y=0-15) - - 4 - 2 - - - OSPEED1 - - Port x configuration bits (y=0-15) - - 2 - 2 - - - OSPEED0 - - Port x configuration bits (y=0-15) - - 0 - 2 - - - - - PUPDR - PUPDR - - GPIO port pull-up/pull-down - register - - 0xC - 0x20 - read-write - 0x24000000 - - - PUPD15 - - Port x configuration bits (y=0-15) - - 30 - 2 - - - PUPD14 - - Port x configuration bits (y=0-15) - - 28 - 2 - - - PUPD13 - - Port x configuration bits (y=0-15) - - 26 - 2 - - - PUPD12 - - Port x configuration bits (y=0-15) - - 24 - 2 - - - PUPD11 - - Port x configuration bits (y=0-15) - - 22 - 2 - - - PUPD10 - - Port x configuration bits (y=0-15) - - 20 - 2 - - - PUPD9 - - Port x configuration bits (y=0-15) - - 18 - 2 - - - PUPD8 - - Port x configuration bits (y=0-15) - - 16 - 2 - - - PUPD7 - - Port x configuration bits (y=0-15) - - 14 - 2 - - - PUPD6 - - Port x configuration bits (y=0-15) - - 12 - 2 - - - PUPD5 - - Port x configuration bits (y=0-15) - - 10 - 2 - - - PUPD4 - - Port x configuration bits (y=0-15) - - 8 - 2 - - - PUPD3 - - Port x configuration bits (y=0-15) - - 6 - 2 - - - PUPD2 - - Port x configuration bits (y=0-15) - - 4 - 2 - - - PUPD1 - - Port x configuration bits (y=0-15) - - 2 - 2 - - - PUPD0 - - Port x configuration bits (y=0-15) - - 0 - 2 - - - - - IDR - IDR - GPIO port input data register - 0x10 - 0x20 - read-only - 0x00000000 - - - ID15 - - Port input data (y=0-15) - - 15 - 1 - - - ID14 - - Port input data (y=0-15) - - 14 - 1 - - - ID13 - - Port input data (y=0-15) - - 13 - 1 - - - ID12 - - Port input data (y=0-15) - - 12 - 1 - - - ID11 - - Port input data (y=0-15) - - 11 - 1 - - - ID10 - - Port input data (y=0-15) - - 10 - 1 - - - ID9 - - Port input data (y=0-15) - - 9 - 1 - - - ID8 - - Port input data (y=0-15) - - 8 - 1 - - - ID7 - - Port input data (y=0-15) - - 7 - 1 - - - ID6 - - Port input data (y=0-15) - - 6 - 1 - - - ID5 - - Port input data (y=0-15) - - 5 - 1 - - - ID4 - - Port input data (y=0-15) - - 4 - 1 - - - ID3 - - Port input data (y=0-15) - - 3 - 1 - - - ID2 - - Port input data (y=0-15) - - 2 - 1 - - - ID1 - - Port input data (y=0-15) - - 1 - 1 - - - ID0 - - Port input data (y=0-15) - - 0 - 1 - - - - - ODR - ODR - GPIO port output data register - 0x14 - 0x20 - read-write - 0x00000000 - - - OD15 - - Port output data (y=0-15) - - 15 - 1 - - - OD14 - - Port output data (y=0-15) - - 14 - 1 - - - OD13 - - Port output data (y=0-15) - - 13 - 1 - - - OD12 - - Port output data (y=0-15) - - 12 - 1 - - - OD11 - - Port output data (y=0-15) - - 11 - 1 - - - OD10 - - Port output data (y=0-15) - - 10 - 1 - - - OD9 - - Port output data (y=0-15) - - 9 - 1 - - - OD8 - - Port output data (y=0-15) - - 8 - 1 - - - OD7 - - Port output data (y=0-15) - - 7 - 1 - - - OD6 - - Port output data (y=0-15) - - 6 - 1 - - - OD5 - - Port output data (y=0-15) - - 5 - 1 - - - OD4 - - Port output data (y=0-15) - - 4 - 1 - - - OD3 - - Port output data (y=0-15) - - 3 - 1 - - - OD2 - - Port output data (y=0-15) - - 2 - 1 - - - OD1 - - Port output data (y=0-15) - - 1 - 1 - - - OD0 - - Port output data (y=0-15) - - 0 - 1 - - - - - BSRR - BSRR - - GPIO port bit set/reset - register - - 0x18 - 0x20 - write-only - 0x00000000 - - - BR15 - - Port x reset bit y (y=0-15) - - 31 - 1 - - - BR14 - - Port x reset bit y (y=0-15) - - 30 - 1 - - - BR13 - - Port x reset bit y (y=0-15) - - 29 - 1 - - - BR12 - - Port x reset bit y (y=0-15) - - 28 - 1 - - - BR11 - - Port x reset bit y (y=0-15) - - 27 - 1 - - - BR10 - - Port x reset bit y (y=0-15) - - 26 - 1 - - - BR9 - - Port x reset bit y (y=0-15) - - 25 - 1 - - - BR8 - - Port x reset bit y (y=0-15) - - 24 - 1 - - - BR7 - - Port x reset bit y (y=0-15) - - 23 - 1 - - - BR6 - - Port x reset bit y (y=0-15) - - 22 - 1 - - - BR5 - - Port x reset bit y (y=0-15) - - 21 - 1 - - - BR4 - - Port x reset bit y (y=0-15) - - 20 - 1 - - - BR3 - - Port x reset bit y (y=0-15) - - 19 - 1 - - - BR2 - - Port x reset bit y (y=0-15) - - 18 - 1 - - - BR1 - - Port x reset bit y (y=0-15) - - 17 - 1 - - - BR0 - - Port x set bit y (y=0-15) - - 16 - 1 - - - BS15 - - Port x set bit y (y=0-15) - - 15 - 1 - - - BS14 - - Port x set bit y (y=0-15) - - 14 - 1 - - - BS13 - - Port x set bit y (y=0-15) - - 13 - 1 - - - BS12 - - Port x set bit y (y=0-15) - - 12 - 1 - - - BS11 - - Port x set bit y (y=0-15) - - 11 - 1 - - - BS10 - - Port x set bit y (y=0-15) - - 10 - 1 - - - BS9 - - Port x set bit y (y=0-15) - - 9 - 1 - - - BS8 - - Port x set bit y (y=0-15) - - 8 - 1 - - - BS7 - - Port x set bit y (y=0-15) - - 7 - 1 - - - BS6 - - Port x set bit y (y=0-15) - - 6 - 1 - - - BS5 - - Port x set bit y (y=0-15) - - 5 - 1 - - - BS4 - - Port x set bit y (y=0-15) - - 4 - 1 - - - BS3 - - Port x set bit y (y=0-15) - - 3 - 1 - - - BS2 - - Port x set bit y (y=0-15) - - 2 - 1 - - - BS1 - - Port x set bit y (y=0-15) - - 1 - 1 - - - BS0 - - Port x set bit y (y=0-15) - - 0 - 1 - - - - - LCKR - LCKR - - GPIO port configuration lock - register - - 0x1C - 0x20 - read-write - 0x00000000 - - - LCKK - - Port x lock (LCKK) - - 16 - 1 - - - LCK15 - - Port x lock bit y (y=0-15) - - 15 - 1 - - - LCK14 - - Port x lock bit y (y=0-15) - - 14 - 1 - - - LCK13 - - Port x lock bit y (y=0-15) - - 13 - 1 - - - LCK12 - - Port x lock bit y (y=0-15) - - 12 - 1 - - - LCK11 - - Port x lock bit y (y=0-15) - - 11 - 1 - - - LCK10 - - Port x lock bit y (y=0-15) - - 10 - 1 - - - LCK9 - - Port x lock bit y (y=0-15) - - 9 - 1 - - - LCK8 - - Port x lock bit y (y=0-15) - - 8 - 1 - - - LCK7 - - Port x lock bit y (y=0-15) - - 7 - 1 - - - LCK6 - - Port x lock bit y (y=0-15) - - 6 - 1 - - - LCK5 - - Port x lock bit y (y=0-15) - - 5 - 1 - - - LCK4 - - Port x lock bit y (y=0-15) - - 4 - 1 - - - LCK3 - - Port x lock bit y (y=0-15) - - 3 - 1 - - - LCK2 - - Port x lock bit y (y=0-15) - - 2 - 1 - - - LCK1 - - Port x lock bit y (y=0-15) - - 1 - 1 - - - LCK0 - - Port x lock bit y (y=0-15) - - 0 - 1 - - - - - AFRL - AFRL - - GPIO alternate function low - register - - 0x20 - 0x20 - read-write - 0x00000000 - - - AFSEL7 - - Alternate function selection for port x bit y (y=0-7) - - 28 - 4 - - - AFSEL6 - - Alternate function selection for port x bit y (y=0-7) - - 24 - 4 - - - AFSEL5 - - Alternate function selection for port x bit y (y=0-7) - - 20 - 4 - - - AFSEL4 - - Alternate function selection for port x bit y (y=0-7) - - 16 - 4 - - - AFSEL3 - - Alternate function selection for port x bit y (y=0-7) - - 12 - 4 - - - AFSEL2 - - Alternate function selection for port x bit y (y=0-7) - - 8 - 4 - - - AFSEL1 - - Alternate function selection for port x bit y (y=0-7) - - 4 - 4 - - - AFSEL0 - - Alternate function selection for port x bit y (y=0-7) - - 0 - 4 - - - - - AFRH - AFRH - - GPIO alternate function high - register - - 0x24 - 0x20 - read-write - 0x00000000 - - - AFSEL15 - - Alternate function selection for port x bit y (y=8-15) - - 28 - 4 - - - AFSEL14 - - Alternate function selection for port x bit y (y=8-15) - - 24 - 4 - - - AFSEL13 - - Alternate function selection for port x bit y (y=8-15) - - 20 - 4 - - - AFSEL12 - - Alternate function selection for port x bit y (y=8-15) - - 16 - 4 - - - AFSEL11 - - Alternate function selection for port x bit y (y=8-15) - - 12 - 4 - - - AFSEL10 - - Alternate function selection for port x bit y (y=8-15) - - 8 - 4 - - - AFSEL9 - - Alternate function selection for port x bit y (y=8-15) - - 4 - 4 - - - AFSEL8 - - Alternate function selection for port x bit y (y=8-15) - - 0 - 4 - - - - - BRR - BRR - port bit reset register - 0x28 - 0x20 - write-only - 0x00000000 - - - BR15 - Port Reset bit - 15 - 1 - - - BR14 - Port Reset bit - 14 - 1 - - - BR13 - Port Reset bit - 13 - 1 - - - BR12 - Port Reset bit - 12 - 1 - - - BR11 - Port Reset bit - 11 - 1 - - - BR10 - Port Reset bit - 10 - 1 - - - BR9 - Port Reset bit - 9 - 1 - - - BR8 - Port Reset bit - 8 - 1 - - - BR7 - Port Reset bit - 7 - 1 - - - BR6 - Port Reset bit - 6 - 1 - - - BR5 - Port Reset bit - 5 - 1 - - - BR4 - Port Reset bit - 4 - 1 - - - BR3 - Port Reset bit - 3 - 1 - - - BR2 - Port Reset bit - 2 - 1 - - - BR1 - Port Reset bit - 1 - 1 - - - BR0 - Port Reset bit - 0 - 1 - - - - - - - GPIOB - General-purpose I/Os - GPIO - 0x50000400 - - 0x0 - 0x400 - registers - - - - GPIOC - General-purpose I/Os - GPIO - 0x50000800 - - 0x0 - 0x400 - registers - - - - GPIOF - General-purpose I/Os - GPIO - 0x50001400 - - 0x0 - 0x400 - registers - - - - I2C1 - Inter integrated circuit - I2C - 0x40005400 - - 0x0 - 0x400 - registers - - - I2C1 - I2C1 global Interrupt - 23 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - - - PE - desc PE - 0 - 0 - read-write - - - SMBUS - desc SMBUS - 1 - 1 - read-write - - - SMBTYPE - desc SMBTYPE - 3 - 3 - read-write - - - ENARP - desc ENARP - 4 - 4 - read-write - - - ENPEC - desc ENPEC - 5 - 5 - read-write - - - ENGC - desc ENGC - 6 - 6 - read-write - - - NOSTRETCH - desc NOSTRETCH - 7 - 7 - read-write - - - START - desc START - 8 - 8 - read-write - - - STOP - desc STOP - 9 - 9 - read-write - - - ACK - desc ACK - 10 - 10 - read-write - - - POS - desc POS - 11 - 11 - read-write - - - PEC - desc PEC - 12 - 12 - read-write - - - ALERT - desc ALERT - 13 - 13 - read-write - - - SWRST - desc SWRST - 15 - 15 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - - - FREQ - desc FREQ - 5 - 0 - read-write - - - ITERREN - desc ITERREN - 8 - 8 - read-write - - - ITEVTEN - desc ITEVTEN - 9 - 9 - read-write - - - ITBUFEN - desc ITBUFEN - 10 - 10 - read-write - - - DMAEN - desc DMAEN - 11 - 11 - read-write - - - LAST - desc LAST - 12 - 12 - read-write - - - - - OAR1 - desc OAR1 - 0x8 - 32 - read-write - 0x0 - - - ADD0 - desc ADD0 - 0 - 0 - read-write - - - ADD1_7 - desc ADD1_7 - 7 - 1 - read-write - - - ADD8_9 - desc ADD8_9 - 9 - 8 - read-write - - - ADDMODE - desc ADDMODE - 15 - 15 - read-write - - - - - OAR2 - desc OAR2 - 0xC - 32 - read-write - 0x0 - - - ENDUAL - desc ENDUAL - 0 - 0 - read-write - - - ADD2 - desc ADD2 - 7 - 1 - read-write - - - - - DR - desc DR - 0x10 - 32 - read-write - 0x0 - - - DR - desc DR - 7 - 0 - read-write - - - - - SR1 - desc SR1 - 0x14 - 32 - read-write - 0x0 - - - SB - desc SB - 0 - 0 - read-only - - - ADDR - desc ADDR - 1 - 1 - read-only - - - BTF - desc BTF - 2 - 2 - read-only - - - ADD10 - desc ADD10 - 3 - 3 - read-only - - - STOPF - desc STOPF - 4 - 4 - read-only - - - RXNE - desc RXNE - 6 - 6 - read-only - - - TXE - desc TXE - 7 - 7 - read-only - - - BERR - desc BERR - 8 - 8 - read-write - - - ARLO - desc ARLO - 9 - 9 - read-write - - - AF - desc AF - 10 - 10 - read-write - - - OVR - desc OVR - 11 - 11 - read-write - - - PECERR - desc PECERR - 12 - 12 - read-write - - - TIMEOUT - desc TIMEOUT - 14 - 14 - read-write - - - SMBALERT - desc SMBALERT - 15 - 15 - read-write - - - - - SR2 - desc SR2 - 0x18 - 32 - read-only - 0x0 - - - MSL - desc MSL - 0 - 0 - read-only - - - BUSY - desc BUSY - 1 - 1 - read-only - - - TRA - desc TRA - 2 - 2 - read-only - - - GENCALL - desc GENCALL - 4 - 4 - read-only - - - SMBDEFAULT - desc SMBDEFAULT - 5 - 5 - read-only - - - SMBHOST - desc SMBHOST - 6 - 6 - read-only - - - DUALF - desc DUALF - 7 - 7 - read-only - - - PEC - desc PEC - 15 - 8 - read-only - - - - - CCR - desc CCR - 0x1C - 32 - read-write - 0x0 - - - CCR - desc CCR - 11 - 0 - read-write - - - DUTY - desc DUTY - 14 - 14 - read-write - - - FS - desc FS - 15 - 15 - read-write - - - - - TRISE - desc TRISE - 0x20 - 32 - read-write - 0x2 - - - - TRISE - desc TRISE - 5 - 0 - read-write - - - - - - - I2C2 - desc I2C - I2C - 0x40005800 - - 0x0 - 0x400 - registers - - - I2C2 - I2C2 Event Interrupt - 24 - - - - IWDG - Independent watchdog - IWDG - 0x40003000 - - 0x0 - 0x400 - registers - - - - KR - KR - Key register (IWDG_KR) - 0x0 - 0x20 - write-only - 0x00000000 - - - KEY - Key value - 0 - 16 - - - - - PR - PR - Prescaler register (IWDG_PR) - 0x4 - 0x20 - read-write - 0x00000000 - - - PR - Prescaler divider - 0 - 3 - - - - - RLR - RLR - Reload register (IWDG_RLR) - 0x8 - 0x20 - read-write - 0x00000FFF - - - RL - - Watchdog counter reload - value - - 0 - 12 - - - - - SR - SR - Status register (IWDG_SR) - 0xC - 0x20 - read-only - 0x00000000 - - - RVU - - Watchdog counter reload value - update - - 1 - 1 - - - PVU - - Watchdog prescaler value - update - - 0 - 1 - - - - - - - LCD - LCD CONTROLLER - LCD - 0x40002400 - - 0x0 - 0x400 - registers - - - LCD - LCD global Interrupt - 8 - - - - CR0 - CR0 - Control register - 0x0 - 0x20 - read-write - 0x0000 - - - EN - EN - 0 - 1 - - - LCDCLK - LCDCLK - 1 - 2 - - - BIAS - BIAS - 6 - 1 - - - DUTY - DUTY - 7 - 3 - - - BSEL - BSEL - 10 - 3 - - - CONTRAST - CONTRAST - 13 - 4 - - - - - CR1 - CR1 - CR1 - 0x4 - 0x20 - read-write - 0x0000 - - - BLINKCNT - BLINKCNT - 0 - 6 - - - BLINKEN - BLINKEN - 6 - 1 - - - MODE - MODE - 8 - 1 - - - IE - IE - 10 - 1 - - - INTF - INTF - 11 - 1 - - - - - INTCLR - INTCLR - INTCLR - 0x8 - 0x20 - read-write - 0x0000 - - - INTF_CLR - INTF_CLR - 10 - 1 - - - - - POEN0 - POEN0 - POEN0 - 0x0C - 0x20 - read-write - 0x0000 - - - S0 - S0 - 0 - 1 - - - S1 - S1 - 1 - 1 - - - S2 - S2 - 2 - 1 - - - S3 - S3 - 3 - 1 - - - S4 - S4 - 4 - 1 - - - S5 - S5 - 5 - 1 - - - S6 - S6 - 6 - 1 - - - S7 - S7 - 7 - 1 - - - S8 - S8 - 8 - 1 - - - S9 - S9 - 9 - 1 - - - S10 - S10 - 10 - 1 - - - S11 - S11 - 11 - 1 - - - S12 - S12 - 12 - 1 - - - S13 - S13 - 13 - 1 - - - S14 - S14 - 14 - 1 - - - S15 - S15 - 15 - 1 - - - S16 - S16 - 16 - 1 - - - S17 - S17 - 17 - 1 - - - S18 - S18 - 18 - 1 - - - S19 - S19 - 19 - 1 - - - S20 - S20 - 20 - 1 - - - S21 - S21 - 21 - 1 - - - S22 - S22 - 22 - 1 - - - S23 - S23 - 23 - 1 - - - S24 - S24 - 24 - 1 - - - S25 - S25 - 25 - 1 - - - S26 - S26 - 26 - 1 - - - S27 - S27 - 27 - 1 - - - S28 - S28 - 28 - 1 - - - S29 - S29 - 29 - 1 - - - S30 - S30 - 30 - 1 - - - S31 - S31 - 31 - 1 - - - - - POEN1 - POEN1 - POEN1 - 0x10 - 0x20 - read-write - 0x0000 - - - S32 - S32 - 0 - 1 - - - S33 - S33 - 1 - 1 - - - S34 - S34 - 2 - 1 - - - S35 - S35 - 3 - 1 - - - S36 - S36 - 4 - 1 - - - S37 - S37 - 5 - 1 - - - S38 - S38 - 6 - 1 - - - S39 - S39 - 7 - 1 - - - C0 - C0 - 8 - 1 - - - C1 - C1 - 9 - 1 - - - C2 - C2 - 10 - 1 - - - C3 - C3 - 11 - 1 - - - MUX - MUX - 12 - 1 - - - - - RAM0 - RAM0 - des RAM0 - 0x14 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM1 - RAM1 - des RAM1 - 0x18 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM2 - RAM2 - des RAM2 - 0x1C - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM3 - RAM3 - des RAM3 - 0x20 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM4 - RAM4 - des RAM4 - 0x24 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM5 - RAM5 - des RAM5 - 0x28 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM6 - RAM6 - des RAM6 - 0x2C - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM7 - RAM7 - des RAM7 - 0x30 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 32 - - - - - RAM8 - RAM8 - des RAM8 - 0x34 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - RAM9 - RAM9 - des RAM9 - 0x38 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - RAM10 - RAM10 - des RAM10 - 0x3C - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - RAM11 - RAM11 - des RAM11 - 0x40 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - RAM12 - RAM12 - des RAM12 - 0x44 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - RAM13 - RAM13 - des RAM13 - 0x48 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - RAM14 - RAM14 - des RAM14 - 0x4C - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - RAM15 - RAM15 - des RAM15 - 0x50 - 0x20 - read-write - 0x0000 - - - D - des D - 0 - 8 - - - - - - - LPTIM1 - Low power timer - LPTIM1 - 0x40007C00 - - 0x0 - 0x400 - registers - - - TIM6_LPTIM1_DAC - TIM6, LPTIM1, DAC global Interrupts - 17 - - - - ISR - ISR - Interrupt and Status Register - 0x0 - 0x20 - read-only - 0x00000000 - - - ARRM - Autoreload match - 1 - 1 - - - ARROK - Autoreload match update OK - 4 - 1 - - - - - ICR - ICR - Interrupt Clear Register - 0x4 - 0x20 - write-only - 0x00000000 - - - ARRMCF - - Autoreload match Clear - Flag - - 1 - 1 - - - ARROKCF - - Autoreload match update OK - Clear Flag - - 4 - 1 - - - - - IER - IER - Interrupt Enable Register - 0x8 - 0x20 - read-write - 0x00000000 - - - ARRMIE - - Autoreload matchInterrupt - Enable - - 1 - 1 - - - ARROKIE - - Autoreload match update - OK Interrupt Enable - - 4 - 1 - - - - - CFGR - CFGR - Configuration Register - 0xC - 0x20 - read-write - 0x00000000 - - - PRELOAD - Registers update mode - 22 - 1 - - - PRESC - Clock prescaler - 9 - 3 - - - - - CR - CR - Control Register - 0x10 - 0x20 - read-write - 0x00000000 - - - RSTARE - Reset after read enable - 4 - 1 - - - CNTSTRT - CNTSTRT - 2 - 1 - - - SNGSTRT - LPTIM start in single mode - 1 - 1 - - - ENABLE - LPTIM Enable - 0 - 1 - - - - - ARR - ARR - Autoreload Register - 0x18 - 0x20 - read-write - 0x00000001 - - - ARR - Auto reload value - 0 - 16 - - - - - CNT - CNT - Counter Register - 0x1C - 0x20 - read-only - 0x00000000 - - - CNT - Counter value - 0 - 16 - - - - - - - OPA - des OPA - OPA - 0x40010300 - - 0x0 - 0x400 - registers - - - - CR0 - CR0 - CR0 register - 0x30 - 0x20 - read-write - 0xFFFFFFFF - - - OP1OEN1 - OP1OEN1 - 1 - 1 - - - OP2OEN1 - OP2OEN1 - 6 - 1 - - - OP3OEN1 - OP3OEN1 - 11 - 1 - - - - - CR1 - CR1 - CR1 register - 0x34 - 0x20 - read-write - 0x00000000 - - - EN1 - EN1 - 5 - 1 - - - EN2 - EN2 - 6 - 1 - - - EN3 - EN3 - 7 - 1 - - - - - - - PWR - Power control - PWR - 0x40007000 - - 0x0 - 0x400 - registers - - - - CR1 - CR1 - Power control register 1 - 0x0 - 0x20 - read-write - 0x00030000 - - - HSION_CTRL - HSI open time control - 19 - 1 - - - SRAM_RETV - SRAM retention voltage control - 16 - 3 - - - LPR - Low-power run - 14 - 1 - - - FLS_SLPTIME - Flash wait time after wakeup from the stop mode - 12 - 2 - - - VOS - - Voltage scaling range - selection - - 9 - 2 - - - DBP - - Disable backup domain write - protection - - 8 - 1 - - - BIAS_CR_SEL - MR Bias current selection - 4 - 1 - - - BIAS_CR - MR Bias current - 0 - 3 - - - - - CR2 - CR2 - Power control register 2 - 0x4 - 0x20 - read-write - 0x00000500 - - - FLT_TIME - Digital filter time configuration - 9 - 3 - - - FLTEN - Digital filter enable - 8 - 1 - - - PVDT - - Power voltage detector threshold - selection - - 4 - 3 - - - SRCSEL - - Power voltage detector volatage - selection - - 2 - 1 - - - PVDE - - Power voltage detector - enable - - 0 - 1 - - - - - SR - SR - Power status register - 0x14 - 0x20 - read-only - 0x00000000 - - - PVDO - PVD output - 11 - 1 - - - - - - - RCC - Reset and clock control - RCC - 0x40021000 - - 0x0 - 0x400 - registers - - - RCC_CTC - RCC and CTC global Interrupts - 4 - - - - CR - CR - Clock control register - 0x0 - 0x20 - read-write - 0x00000100 - - - PLLRDY - PLL clock ready flag - 25 - 1 - - - PLLON - PLL enable - 24 - 1 - - - ADC_DIV - ADC Frequency Division - 21 - 2 - - - CSSON - - Clock security system - enable - - 19 - 1 - - - HSEBYP - - HSE crystal oscillator - bypass - - 18 - 1 - - - HSERDY - HSE clock ready flag - 17 - 1 - - - HSEON - HSE clock enable - 16 - 1 - - - HSIDIV - - HSI16 clock division - factor - - 11 - 3 - - - HSIRDY - HSI16 clock ready flag - 10 - 1 - - - HSION - HSI16 clock enable - 8 - 1 - - - - - ICSCR - ICSCR - - Internal clock sources calibration - register - - 0x4 - 0x20 - 0x10000000 - - - LSI_TRIM - LSI clock trimming - 16 - 9 - read-write - - - HSI_FS - HSI frequency selection - 13 - 3 - read-write - - - HSI_TRIM - HSI clock trimming - 0 - 13 - read-write - - - - - CFGR - CFGR - Clock configuration register - 0x8 - 0x20 - 0x00000000 - - - MCOPRE - - Microcontroller clock output - prescaler - - 28 - 3 - read-write - - - MCOSEL - - Microcontroller clock - output - - 24 - 3 - read-write - - - PPRE - APB prescaler - 12 - 3 - read-write - - - HPRE - AHB prescaler - 8 - 4 - read-write - - - SWS - System clock switch status - 3 - 3 - read-only - - - SW - System clock switch - 0 - 3 - read-write - - - - - PLLCFGR - PLLCFGR - PLL configuration register - 0xC - 0x20 - 0x00000000 - - - PLLSRC - PLL clock source selection - 0 - 2 - read-write - - - PLLMUL - PLLMUL - 2 - 2 - read-write - - - - - ECSCR - ECSCR - External clock source control register - 0x10 - 0x20 - 0x00000000 - - - HSE_DRV - HSE_DRV - 0 - 2 - read-write - - - HSE_STARTUP - HSE_STARTUP - 3 - 2 - read-write - - - LSE_DRIVER - LSE clock driver selection - 16 - 2 - read-write - - - LSE_STARTUP - LSE_STARTUP - 20 - 2 - read-write - - - - - CIER - CIER - - Clock interrupt enable - register - - 0x18 - 0x20 - read-write - 0x00000000 - - - PLLRDYIE - PLL ready interrupt enable - 5 - 1 - - - HSERDYIE - HSE ready interrupt enable - 4 - 1 - - - HSIRDYIE - HSI ready interrupt enable - 3 - 1 - - - LSERDYIE - LSE ready interrupt enable - 1 - 1 - - - LSIRDYIE - LSI ready interrupt enable - 0 - 1 - - - - - CIFR - CIFR - Clock interrupt flag register - 0x1C - 0x20 - read-only - 0x00000000 - - - LSECSSF - LSE clock secure system interrupt flag - 9 - 1 - - - CSSF - HSE clock secure system interrupt flag - 8 - 1 - - - PLLRDYF - PLL ready interrupt flag - 5 - 1 - - - HSERDYF - HSE ready interrupt flag - 4 - 1 - - - HSIRDYF - HSI ready interrupt flag - 3 - 1 - - - LSERDYF - LSE ready interrupt flag - 1 - 1 - - - LSIRDYF - LSI ready interrupt flag - 0 - 1 - - - - - CICR - CICR - Clock interrupt clear register - 0x20 - 0x20 - write-only - 0x00000000 - - - LSECSSC - LSE clock secure system interrupt flag clear - 9 - 1 - - - CSSC - clock secure system interrupt flag clear - 8 - 1 - - - PLLRDYC - PLL ready interrupt clear - 5 - 1 - - - HSERDYC - HSE ready interrupt clear - 4 - 1 - - - HSIRDYC - HSI ready interrupt clear - 3 - 1 - - - LSERDYC - LSE ready interrupt clear - 1 - 1 - - - LSIRDYC - LSI ready interrupt clear - 0 - 1 - - - - - IOPRSTR - IOPRSTR - GPIO reset register - 0x24 - 0x20 - read-write - 0x00000000 - - - GPIOFRST - I/O port F reset - 5 - 1 - - - GPIOCRST - I/O port F reset - 2 - 1 - - - GPIOBRST - I/O port B reset - 1 - 1 - - - GPIOARST - I/O port A reset - 0 - 1 - - - - - AHBRSTR - AHBRSTR - AHB peripheral reset register - 0x28 - 0x20 - read-write - 0x00000000 - - - DIVRST - DIV reset - 24 - 1 - - - CRCRST - CRC reset - 12 - 1 - - - DMARST - DMA reset - 0 - 1 - - - - - APBRSTR1 - APBRSTR1 - - APB peripheral reset register - 1 - - 0x2C - 0x20 - read-write - 0x00000000 - - - LPTIMRST - Low Power Timer reset - 31 - 1 - - - OPARST - OPARST - 30 - 1 - - - DACRST - DACRST - 29 - 1 - - - PWRRST - Power interface reset - 28 - 1 - - - CTCRST - CTCRST - 27 - 1 - - - CANRST - CANRST - 25 - 1 - - - USBRST - USB reset - 23 - 1 - - - I2C2RST - I2C2 reset - 22 - 1 - - - I2C1RST - I2C1 reset - 21 - 1 - - - USART4RST - USART4 reset - 19 - 1 - - - USART3RST - USART3 reset - 18 - 1 - - - USART2RST - USART2 reset - 17 - 1 - - - SPI2RST - SPI2 reset - 14 - 1 - - - WWDGRST - WWDG reset - 11 - 1 - - - RTCAPBRST - RTCAPB reset - 10 - 1 - - - TIM7RST - TIM7 timer reset - 5 - 1 - - - TIM6RST - TIM6 timer reset - 4 - 1 - - - TIM3RST - TIM3 timer reset - 1 - 1 - - - TIM2RST - TIM2 timer reset - 0 - 1 - - - - - APBRSTR2 - APBRSTR2 - - APB peripheral reset register - 2 - - 0x30 - 0x20 - read-write - 0x00000000 - - - SYSCFGRST - SYSCFG reset - 0 - 1 - - - ADCRST - ADC reset - 9 - 1 - - - DBGRST - DBG reset - 10 - 1 - - - TIM1RST - TIM1 reset - 11 - 1 - - - SPI1RST - SPI1 reset - 12 - 1 - - - USART1RST - USART1 reset - 14 - 1 - - - TIM14RST - TIM14 reset - 15 - 1 - - - TIM15RST - TIM15 reset - 16 - 1 - - - TIM16RST - TIM16 reset - 17 - 1 - - - TIM17RST - TIM17 reset - 18 - 1 - - - COMP1RST - COMP1 reset - 20 - 1 - - - COMP2RST - COMP2 reset - 21 - 1 - - - COMP3RST - COMP3 reset - 22 - 1 - - - LCDRST - LCD reset - 23 - 1 - - - - - IOPENR - IOPENR - GPIO clock enable register - 0x34 - 0x20 - read-write - 0x00000000 - - - GPIOFEN - I/O port F clock enable - 5 - 1 - - - GPIOCEN - I/O port C clock enable - 2 - 1 - - - GPIOBEN - I/O port B clock enable - 1 - 1 - - - GPIOAEN - I/O port A clock enable - 0 - 1 - - - - - AHBENR - AHBENR - - AHB peripheral clock enable - register - - 0x38 - 0x20 - read-write - 0x00000000 - - - DIVEN - DIVEN - 24 - 1 - - - CRCEN - CRC clock enable - 12 - 1 - - - SRAMEN - - SRAM memory interface clock - enable - - 9 - 1 - - - FLASHEN - - Flash memory interface clock - enable - - 8 - 1 - - - DMAEN - DMA clock enable - 0 - 1 - - - - - APBENR1 - APBENR1 - - APB peripheral clock enable register - 1 - - 0x3C - 0x20 - read-write - 0x00000000 - - - LPTIMEN - LPTIM clock enable - 31 - 1 - - - - OPAEN - OPA clock enable - 30 - 1 - - - DACEN - DAC clock enable - 29 - 1 - - - PWREN - - Power interface clock - enable - - 28 - 1 - - - CTCEN - CTC clock enable - 27 - 1 - - - CANEN - CAN clock enable - 25 - 1 - - - USBEN - USB clock enable - 23 - 1 - - - I2C2EN - I2C2 clock enable - 22 - 1 - - - I2C1EN - I2C1 clock enable - 21 - 1 - - - USART4EN - USART4 clock enable - 19 - 1 - - - USART3EN - USART3 clock enable - 18 - 1 - - - USART2EN - USART2 clock enable - 17 - 1 - - - SPI2EN - SPI2 clock enable - 14 - 1 - - - WWDGEN - WWDG clock enable - 11 - 1 - - - RTCAPBEN - RTC APB clock enable - 10 - 1 - - - TIM7EN - TIM7 timer clock enable - 5 - 1 - - - TIM6EN - TIM6 timer clock enable - 4 - 1 - - - TIM3EN - TIM3 timer clock enable - 1 - 1 - - - TIM2EN - TIM2 timer clock enable - 0 - 1 - - - - - APBENR2 - APBENR2 - - APB peripheral clock enable register - 2 - - 0x40 - 0x20 - read-write - 0x00000000 - - - SYSCFGEN - - SYSCFG, COMP and VREFBUF clock - enable - - 0 - 1 - - - ADCEN - ADCEN clock enable - 9 - 1 - - - DBGEN - DBG clock enable - 10 - 1 - - - TIM1EN - TIM1 clock enable - 11 - 1 - - - SPI1EN - SPI1 clock enable - 12 - 1 - - - USART1EN - USART1 clock enable - 14 - 1 - - - TIM14EN - TIM14 clock enable - 15 - 1 - - - TIM15EN - TIM15 clock enable - 16 - 1 - - - TIM16EN - TIM16 clock enable - 17 - 1 - - - TIM17EN - TIM17 clock enable - 18 - 1 - - - COMP1EN - COMP1 clock enable - 20 - 1 - - - COMP2EN - COMP2 clock enable - 21 - 1 - - - COMP3EN - COMP3 clock enable - 22 - 1 - - - LCDEN - LCD clock enable - 23 - 1 - - - - - CCIPR - CCIPR - - Peripherals independent clock configuration - register - - 0x54 - 0x20 - read-write - 0x00000000 - - - LPTIM1SEL - - LPTIM1 clock source - selection - - 18 - 2 - - - COMP3SEL - - COMP3 clock source - selection - - 10 - 1 - - - COMP2SEL - - COMP2 clock source - selection - - 9 - 1 - - - COMP1SEL - - COMP1 clock source - selection - - 8 - 1 - - - PVDSEL - - PVD detect clock source - selection - - 7 - 1 - - - CANSEL - - CAN detect clock source - selection - - 6 - 1 - - - - - BDCR - BDCR - RTC domain control register - 0x5C - 0x20 - read-write - 0x00000000 - - - LSCOSEL - - Low-speed clock output - selection - - 25 - 1 - - - LSCOEN - - Low-speed clock output (LSCO) - enable - - 24 - 1 - - - BDRST - RTC domain software reset - 16 - 1 - - - RTCEN - RTC clock source enable - 15 - 1 - - - RTCSEL - RTC clock source selection - 8 - 2 - - - LSECSSD - LSE CSS detect - 6 - 1 - - - LSECSSON - LSE CSS enable - 5 - 1 - - - LSEBYP - LSE oscillator bypass - 2 - 1 - - - LSERDY - LSE oscillator ready - 1 - 1 - - - LSEON - LSE oscillator enable - 0 - 1 - - - - - CSR - CSR - Control/status register - 0x60 - 0x20 - read-write - 0x00000000 - - - WWDGRSTF - Window watchdog reset flag - 30 - 1 - - - IWDGRSTF - - Independent window watchdog reset - flag - - 29 - 1 - - - SFTRSTF - Software reset flag - 28 - 1 - - - PWRRSTF - BOR or POR/PDR flag - 27 - 1 - - - PINRSTF - Pin reset flag - 26 - 1 - - - OBLRSTF - - Option byte loader reset - flag - - 25 - 1 - - - RMVF - Remove reset flags - 23 - 1 - - - NRST_FLTDIS - NRST_FLTDIS oscillator ready - 8 - 1 - - - LSIRDY - LSI oscillator ready - 1 - 1 - - - LSION - LSI oscillator enable - 0 - 1 - - - - - - - RTC - desc RTC - RTC - 0x40002800 - - 0x0 - 0x400 - registers - - - RTC - RTC Interrupt through EXTI Lines 19 - 2 - - - - CRH - desc CRH - 0x0 - 32 - read-write - 0x0 - - - SECIE - desc SECIE - 0 - 0 - read-write - - - ALRIE - desc ALRIE - 1 - 1 - read-write - - - OWIE - desc OWIE - 2 - 2 - read-write - - - - - CRL - desc CRL - 0x4 - 32 - read-write - 0x20 - - - - SECF - desc SECF - 0 - 0 - read-write - - - ALRF - desc ALRF - 1 - 1 - read-write - - - OWF - desc OWF - 2 - 2 - read-write - - - RSF - desc RSF - 3 - 3 - read-write - - - CNF - desc CNF - 4 - 4 - read-write - - - RTOFF - desc RTOFF - 5 - 5 - read-only - - - - - PRLH - desc PRLH - 0x8 - 32 - write-only - 0x0 - - - PRL - desc PRL - 3 - 0 - write-only - - - - - PRLL - desc PRLL - 0xC - 32 - write-only - 0x8000 - - - PRL - desc PRL - 15 - 0 - write-only - - - - - DIVH - desc DIVH - 0x10 - 32 - read-only - 0x0 - - - DIV - desc DIV - 3 - 0 - read-only - - - - - DIVL - desc DIVL - 0x14 - 32 - read-only - 0x8000 - - - DIV - desc DIV - 15 - 0 - read-only - - - - - CNTH - desc CNTH - 0x18 - 32 - read-write - 0x0 - - - RTC_CNT - desc RTC_CNT - 15 - 0 - read-write - - - - - CNTL - desc CNTL - 0x1C - 32 - read-write - 0x0 - - - RTC_CNT - desc RTC_CNT - 15 - 0 - read-write - - - - - ALRH - desc ALRH - 0x20 - 32 - read-write - 0xFFFF - - - RTC_ALR - desc RTC_ALR - 15 - 0 - read-write - - - - - ALRL - desc ALRL - 0x24 - 32 - read-write - 0xFFFF - - - RTC_ALR - desc RTC_ALR - 15 - 0 - read-write - - - - - BKP_RTCCR - desc BKP_RTCCR - 0x2C - 32 - read-write - 0x0 - - - CAL - desc CAL - 6 - 0 - read-write - - - CCO - desc CCO - 7 - 7 - read-write - - - ASOE - desc ASOE - 8 - 8 - read-write - - - ASOS - desc ASOS - 9 - 9 - read-write - - - - - - - SPI1 - Serial peripheral interface - SPI - 0x40013000 - - 0x0 - 0x400 - registers - - - SPI1 - SPI1 global Interrupt - 25 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - - - CPHA - desc CPHA - 0 - 0 - read-write - - - CPOL - desc CPOL - 1 - 1 - read-write - - - MSTR - desc MSTR - 2 - 2 - read-write - - - BR - desc BR - 5 - 3 - read-write - - - SPE - desc SPE - 6 - 6 - read-write - - - LSBFIRST - desc LSBFIRST - 7 - 7 - read-write - - - SSI - desc SSI - 8 - 8 - read-write - - - SSM - desc SSM - 9 - 9 - read-write - - - RXONLY - desc RXONLY - 10 - 10 - read-write - - - DDF - desc DDF - 11 - 11 - read-write - - - CRCNEXT - desc CRCNEXT - 12 - 12 - read-write - - - CRCEN - desc CRCEN - 13 - 13 - read-write - - - BIDIOE - desc BIDIOE - 14 - 14 - read-write - - - BIDIMODE - desc BIDIMODE - 15 - 15 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - - - RXDMAEN - desc RXDMAEN - 0 - 0 - read-write - - - TXDMAEN - desc TXDMAEN - 1 - 1 - read-write - - - SSOE - desc SSOE - 2 - 2 - read-write - - - CLRTXFIFO - desc CLRTXFIFO - 4 - 4 - read-write - - - ERRIE - desc ERRIE - 5 - 5 - read-write - - - RXNEIE - desc RXNEIE - 6 - 6 - read-write - - - TXEIE - desc TXEIE - 7 - 7 - read-write - - - FRXTH - desc FRXTH - 12 - 12 - read-write - - - LDMA_RX - desc LDMA_RX - 13 - 13 - read-write - - - LDMA_TX - desc LDMA_TX - 14 - 14 - read-write - - - - - SR - desc SR - 0x8 - 32 - read-write - 0x2 - - - RXNE - desc RXNE - 0 - 0 - read-only - - - TXE - desc TXE - 1 - 1 - read-only - - - CHSIDE - desc CHSIDE - 2 - 2 - read-only - - - UDR - desc UDR - 3 - 3 - read-only - - - CRCERR - desc CRCERR - 4 - 4 - read-write - - - MODF - desc MODF - 5 - 5 - read-only - - - OVR - desc OVR - 6 - 6 - read-only - - - BSY - desc BSY - 7 - 7 - read-only - - - FRLVL - desc FRLVL - 10 - 9 - read-only - - - FTLVL - desc FTLVL - 12 - 11 - read-only - - - - - DR - desc DR - 0xC - 32 - read-write - 0x0 - - - DR - desc DR - 15 - 0 - read-write - - - - - CRCPR - desc CRCPR - 0x10 - 32 - read-write - 0x7 - - - CRCPOLY - desc CRCPOLY - 15 - 0 - read-write - - - - - RXCRCR - desc RXCRCR - 0x14 - 32 - read-only - 0x0 - - - RXCRC - desc RXCRC - 15 - 0 - read-only - - - - - TXCRCR - desc TXCRCR - 0x18 - 32 - read-only - 0x0 - - - TXCRC - desc TXCRC - 15 - 0 - read-only - - - - - I2SCFGR - desc I2SCFGR - 0x1C - 32 - read-write - 0x0 - - - CHLEN - desc CHLEN - 0 - 0 - read-write - - - DATLEN - desc DATLEN - 2 - 1 - read-write - - - CKPOL - desc CKPOL - 3 - 3 - read-write - - - I2SSTD - desc I2SSTD - 5 - 4 - read-write - - - PCMSYNC - desc PCMSYNC - 7 - 7 - read-write - - - I2SCFG - desc I2SCFG - 9 - 8 - read-write - - - I2SE - desc I2SE - 10 - 10 - read-write - - - I2SMOD - desc I2SMOD - 11 - 11 - read-write - - - - - I2SPR - desc I2SPR - 0x20 - 32 - read-write - 0x2 - - - I2SDIV - desc I2SDIV - 7 - 0 - read-write - - - ODD - desc ODD - 8 - 8 - read-write - - - MCKOE - desc MCKOE - 9 - 9 - read-write - - - - - - - SPI2 - 0x40003800 - - SPI2 - SPI2 global Interrupt - 26 - - - - SYSCFG - desc SYSCFG - SYSCFG - 0x40010000 - - 0x0 - 0x200 - registers - - - - CFGR1 - desc CFGR1 - 0x0 - 32 - read-write - 0xFF0000 - - - MEM_MODE - desc MEM_MODE - 1 - 0 - read-write - - - TIM1_IC1_SRC - desc TIM1_IC1_SRC - 3 - 2 - read-write - - - TIM2_IC4_SRC - desc TIM2_IC4_SRC - 5 - 4 - read-write - - - TIM3_IC1_SRC - desc TIM3_IC1_SRC - 7 - 6 - read-write - - - ETR_SRC_TIM1 - desc ETR_SRC_TIM1 - 10 - 8 - read-write - - - ETR_SRC_TIM2 - desc ETR_SRC_TIM2 - 14 - 12 - read-write - - - ETR_SRC_TIM3 - desc ETR_SRC_TIM3 - 18 - 16 - read-write - - - GPIO_AHB_SEL - desc GPIO_AHB_SEL - 24 - 24 - read-write - - - - - CFGR2 - desc CFGR2 - 0x4 - 32 - read-write - 0x4 - - - LOCKUP_LOCK - desc LOCKUP_LOCK - 0 - 0 - read-write - - - PVD_LOCK - desc PVD_LOCK - 2 - 2 - read-write - - - COMP1_BRK_TIM1 - desc COMP1_BRK_TIM1 - 3 - 3 - read-write - - - COMP2_BRK_TIM1 - desc COMP2_BRK_TIM1 - 4 - 4 - read-write - - - COMP3_BRK_TIM1 - desc COMP3_BRK_TIM1 - 5 - 5 - read-write - - - COMP1_BRK_TIM15 - desc COMP1_BRK_TIM15 - 6 - 6 - read-write - - - COMP2_BRK_TIM15 - desc COMP2_BRK_TIM15 - 7 - 7 - read-write - - - COMP3_BRK_TIM15 - desc COMP3_BRK_TIM15 - 8 - 8 - read-write - - - COMP1_BRK_TIM16 - desc COMP1_BRK_TIM16 - 9 - 9 - read-write - - - COMP2_BRK_TIM16 - desc COMP2_BRK_TIM16 - 10 - 10 - read-write - - - COMP3_BRK_TIM16 - desc COMP3_BRK_TIM16 - 11 - 11 - read-write - - - COMP1_BRK_TIM17 - desc COMP1_BRK_TIM17 - 12 - 12 - read-write - - - COMP2_BRK_TIM17 - desc COMP2_BRK_TIM17 - 13 - 13 - read-write - - - COMP3_BRK_TIM17 - desc COMP3_BRK_TIM17 - 14 - 14 - read-write - - - COMP1_OCREF_CLR_TIM1 - desc COMP1_OCREF_CLR_TIM1 - 15 - 15 - read-write - - - COMP1_OCREF_CLR_TIM2 - desc COMP1_OCREF_CLR_TIM2 - 16 - 16 - read-write - - - COMP1_OCREF_CLR_TIM3 - desc COMP1_OCREF_CLR_TIM3 - 17 - 17 - read-write - - - COMP2_OCREF_CLR_TIM1 - desc COMP2_OCREF_CLR_TIM1 - 18 - 18 - read-write - - - COMP2_OCREF_CLR_TIM2 - desc COMP2_OCREF_CLR_TIM2 - 19 - 19 - read-write - - - COMP2_OCREF_CLR_TIM3 - desc COMP2_OCREF_CLR_TIM3 - 20 - 20 - read-write - - - COMP3_OCREF_CLR_TIM1 - desc COMP3_OCREF_CLR_TIM1 - 21 - 21 - read-write - - - COMP3_OCREF_CLR_TIM2 - desc COMP3_OCREF_CLR_TIM2 - 22 - 22 - read-write - - - COMP3_OCREF_CLR_TIM3 - desc COMP3_OCREF_CLR_TIM3 - 23 - 23 - read-write - - - - - CFGR3 - desc CFGR3 - 0x8 - 32 - read-write - 0x0 - - - DMA1_MAP - desc DMA1_MAP - 5 - 0 - read-write - - - DMA2_MAP - desc DMA2_MAP - 13 - 8 - read-write - - - DMA3_MAP - desc DMA3_MAP - 21 - 16 - read-write - - - DMA4_MAP - desc DMA4_MAP - 29 - 24 - read-write - - - - - CFGR4 - desc CFGR4 - 0xC - 32 - read-write - 0x0 - - - DMA5_MAP - desc DMA5_MAP - 5 - 0 - read-write - - - DMA6_MAP - desc DMA6_MAP - 13 - 8 - read-write - - - DMA7_MAP - desc DMA7_MAP - 21 - 16 - read-write - - - - - PAENS - desc PAENS - 0x10 - 32 - read-write - 0x0 - - - PA_ENS - desc PA_ENS - 15 - 0 - read-write - - - - - PBENS - desc PBENS - 0x14 - 32 - read-write - 0x0 - - - PB_ENS - desc PB_ENS - 15 - 0 - read-write - - - - - PCENS - desc PCENS - 0x18 - 32 - read-write - 0x0 - - - PC_ENS - desc PC_ENS - 15 - 0 - read-write - - - - - PFENS - desc PFENS - 0x1C - 32 - read-write - 0x0 - - - PF_ENS - desc PF_ENS - 15 - 0 - read-write - - - - - EIIC - desc EIIC - 0x20 - 32 - read-write - 0x0 - - - PA_EIIC - desc PA_EIIC - 1 - 0 - read-write - - - PB_EIIC - desc PB_EIIC - 16 - 8 - read-write - - - PF_EIIC - desc PF_EIIC - 25 - 24 - read-write - - - - - - - TIM1 - Advanced timer - TIM - 0x40012C00 - - 0x0 - 0x400 - registers - - - TIM1_BRK_UP_TRG_COM - TIM1 Break, Update, Trigger and Commutation Interrupt - 13 - - - TIM1_CC - TIM1 Capture Compare Interrupt - 14 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - 0x3FF - - - CEN - desc CEN - 0 - 0 - read-write - - - UDIS - desc UDIS - 1 - 1 - read-write - - - URS - desc URS - 2 - 2 - read-write - - - OPM - desc OPM - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CMS - desc CMS - 6 - 5 - read-write - - - ARPE - desc ARPE - 7 - 7 - read-write - - - CKD - desc CKD - 9 - 8 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - 0xF8 - - - CCDS - desc CCDS - 3 - 3 - read-write - - - MMS - desc MMS - 6 - 4 - read-write - - - TI1S - desc TI1S - 7 - 7 - read-write - - - - - SMCR - desc SMCR - 0x8 - 32 - read-write - 0x0 - 0xFFF7 - - - SMS - desc SMS - 2 - 0 - read-write - - - TS - desc TS - 6 - 4 - read-write - - - MSM - desc MSM - 7 - 7 - read-write - - - ETF - desc ETF - 11 - 8 - read-write - - - ETPS - desc ETPS - 13 - 12 - read-write - - - ECE - desc ECE - 14 - 14 - read-write - - - ETP - desc ETP - 15 - 15 - read-write - - - - - DIER - desc DIER - 0xC - 32 - read-write - 0x0 - 0x5F5F - - - UIE - desc UIE - 0 - 0 - read-write - - - CC1IE - desc CC1IE - 1 - 1 - read-write - - - CC2IE - desc CC2IE - 2 - 2 - read-write - - - CC3IE - desc CC3IE - 3 - 3 - read-write - - - CC4IE - desc CC4IE - 4 - 4 - read-write - - - TIE - desc TIE - 6 - 6 - read-write - - - UDE - desc UDE - 8 - 8 - read-write - - - CC1DE - desc CC1DE - 9 - 9 - read-write - - - CC2DE - desc CC2DE - 10 - 10 - read-write - - - CC3DE - desc CC3DE - 11 - 11 - read-write - - - CC4DE - desc CC4DE - 12 - 12 - read-write - - - TDE - desc TDE - 14 - 14 - read-write - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - 0x1E5F - - - UIF - desc UIF - 0 - 0 - read-write - - - CC1IF - desc CC1IF - 1 - 1 - read-write - - - CC2IF - desc CC2IF - 2 - 2 - read-write - - - CC3IF - desc CC3IF - 3 - 3 - read-write - - - CC4IF - desc CC4IF - 4 - 4 - read-write - - - COMIF - desc COMIF - 5 - 5 - read-write - - - TIF - desc TIF - 6 - 6 - read-write - - - BIF - desc BIF - 7 - 7 - read-write - - - CC1OF - desc CC1OF - 9 - 9 - read-write - - - CC2OF - desc CC2OF - 10 - 10 - read-write - - - CC3OF - desc CC3OF - 11 - 11 - read-write - - - CC4OF - desc CC4OF - 12 - 12 - read-write - - - IC1IR - desc IC1IR - 16 - 16 - read-write - - - IC2IR - desc IC2IR - 17 - 17 - read-write - - - IC3IR - desc IC3IR - 18 - 18 - read-write - - - IC4IR - desc IC3IR - 19 - 19 - read-write - - - IC1IF - desc IC1IF - 20 - 20 - read-write - - - IC2IF - desc IC2IF - 21 - 21 - read-write - - - IC3IF - desc IC3IF - 22 - 22 - read-write - - - IC4IF - desc IC3IF - 23 - 23 - read-write - - - - - EGR - desc EGR - 0x14 - 32 - write-only - 0x0 - 0x5F - - - UG - desc UG - 0 - 0 - write-only - - - CC1G - Capture/Compare 1 Generation - 1 - 1 - write-only - - - CC2G - desc CC2G - 2 - 2 - write-only - - - CC3G - desc CC3G - 3 - 3 - write-only - - - CC4G - desc CC4G - 4 - 4 - write-only - - - TG - desc TG - 6 - 6 - write-only - - - - - CCMR1_OUTPUT - desc CCMR1:OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - OC1FE - desc OC1FE - 2 - 2 - read-write - - - OC1PE - desc OC1PE - 3 - 3 - read-write - - - OC1M - desc OC1M - 6 - 4 - read-write - - - OC1CE - desc OC1CE - 7 - 7 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - OC2FE - desc OC2FE - 10 - 10 - read-write - - - OC2PE - desc OC2PE - 11 - 11 - read-write - - - OC2M - desc OC2M - 14 - 12 - read-write - - - OC2CE - desc OC2CE - 15 - 15 - read-write - - - - - CCMR1_INPUT - desc CCMR1:INPUT - CCMR1_OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - IC1PSC - desc IC1PSC - 3 - 2 - read-write - - - IC1F - desc IC1F - 7 - 4 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - IC2PSC - desc IC2PSC - 11 - 10 - read-write - - - IC2F - desc IC2F - 15 - 12 - read-write - - - - - CCMR2_OUTPUT - desc CCMR2:OUTPUT - 0x1C - 32 - read-write - 0x0 - 0xFFFF - - - CC3S - desc CC3S - 1 - 0 - read-write - - - OC3FE - desc OC3FE - 2 - 2 - read-write - - - OC3PE - desc OC3PE - 3 - 3 - read-write - - - OC3M - desc OC3M - 6 - 4 - read-write - - - OC3CE - desc OC3CE - 7 - 7 - read-write - - - CC4S - desc CC4S - 9 - 8 - read-write - - - OC4FE - desc OC4FE - 10 - 10 - read-write - - - OC4PE - desc OC4PE - 11 - 11 - read-write - - - OC4M - desc OC4M - 14 - 12 - read-write - - - OC4CE - desc OC4CE - 15 - 15 - read-write - - - - - CCMR2_INPUT - desc CCMR2:INPUT - CCMR2_OUTPUT - 0x1C - 32 - read-write - 0x0 - 0xFFFF - - - CC3S - desc CC3S - 1 - 0 - read-write - - - IC3PSC - desc IC3PSC - 3 - 2 - read-write - - - IC3F - desc IC3F - 7 - 4 - read-write - - - CC4S - desc CC4S - 9 - 8 - read-write - - - IC4PSC - desc IC4PSC - 11 - 10 - read-write - - - IC4F - desc IC4F - 15 - 12 - read-write - - - - - CCER - desc CCER - 0x20 - 32 - read-write - 0x0 - 0x3333 - - - CC1E - desc CC1E - 0 - 0 - read-write - - - CC1P - desc CC1P - 1 - 1 - read-write - - - CC2E - desc CC2E - 4 - 4 - read-write - - - CC2P - desc CC2P - 5 - 5 - read-write - - - CC3E - desc CC3E - 8 - 8 - read-write - - - CC3P - desc CC3P - 9 - 9 - read-write - - - CC4E - desc CC4E - 12 - 12 - read-write - - - CC4P - desc CC4P - 13 - 13 - read-write - - - - - CNT - desc CNT - 0x24 - 32 - read-write - 0x0 - 0xFFFF - - - CNT - desc CNT - 15 - 0 - read-write - - - - - PSC - desc PSC - 0x28 - 32 - read-write - 0x0 - 0xFFFF - - - PSC - desc PSC - 15 - 0 - read-write - - - - - ARR - desc ARR - 0x2C - 32 - read-write - 0xFFFF - 0xFFFF - - - ARR - desc ARR - 15 - 0 - read-write - - - - - RCR - desc RCR - 0x30 - 32 - read-write - 0xFFFF - 0xFFFF - - - REP - desc REP - 7 - 0 - read-write - - - - - CCR1 - desc CCR1 - 0x34 - 32 - read-write - 0x0 - 0xFFFF - - - CCR1 - desc CCR1 - 15 - 0 - read-write - - - - - CCR2 - desc CCR2 - 0x38 - 32 - read-write - 0x0 - 0xFFFF - - - CCR2 - desc CCR2 - 15 - 0 - read-write - - - - - CCR3 - desc CCR3 - 0x3C - 32 - read-write - 0x0 - 0xFFFF - - - CCR3 - desc CCR3 - 15 - 0 - read-write - - - - - CCR4 - desc CCR4 - 0x40 - 32 - read-write - 0x0 - 0xFFFF - - - CCR4 - desc CCR4 - 15 - 0 - read-write - - - - - BDTR - desc BDTR - 0x44 - 32 - read-write - 0x0 - 0xFFFF - - - DTG - desc DTG - 7 - 0 - read-write - - - LOCK - desc LOCK - 9 - 8 - read-write - - - OSSI - desc OSSI - 10 - 10 - read-write - - - OSSR - desc OSSR - 11 - 11 - read-write - - - BKE - desc BKE - 12 - 12 - read-write - - - BKP - desc BKP - 13 - 13 - read-write - - - AOE - desc AOE - 14 - 14 - read-write - - - MOE - desc MOE - 15 - 15 - read-write - - - - - DCR - desc DCR - 0x48 - 32 - read-write - 0x0 - 0x1F1F - - - DBA - desc DBA - 4 - 0 - read-write - - - DBL - desc DBL - 12 - 8 - read-write - - - - - DMAR - desc DMAR - 0x4C - 32 - read-write - 0x0 - 0xFFFF - - - DMAB - desc DMAB - 15 - 0 - read-write - - - - - - - TIM2 - desc TIM - TIM - 0x40000000 - - 0x0 - 0x400 - registers - - - TIM2 - TIM2 global Interrupt - 15 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - 0x3FF - - - CEN - desc CEN - 0 - 0 - read-write - - - UDIS - desc UDIS - 1 - 1 - read-write - - - URS - desc URS - 2 - 2 - read-write - - - OPM - desc OPM - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CMS - desc CMS - 6 - 5 - read-write - - - ARPE - desc ARPE - 7 - 7 - read-write - - - CKD - desc CKD - 9 - 8 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - 0xF8 - - - CCDS - desc CCDS - 3 - 3 - read-write - - - MMS - desc MMS - 6 - 4 - read-write - - - TI1S - desc TI1S - 7 - 7 - read-write - - - - - SMCR - desc SMCR - 0x8 - 32 - read-write - 0x0 - 0xFFF7 - - - SMS - desc SMS - 2 - 0 - read-write - - - TS - desc TS - 6 - 4 - read-write - - - MSM - desc MSM - 7 - 7 - read-write - - - ETF - desc ETF - 11 - 8 - read-write - - - ETPS - desc ETPS - 13 - 12 - read-write - - - ECE - desc ECE - 14 - 14 - read-write - - - ETP - desc ETP - 15 - 15 - read-write - - - - - DIER - desc DIER - 0xC - 32 - read-write - 0x0 - 0x5F5F - - - UIE - desc UIE - 0 - 0 - read-write - - - CC1IE - desc CC1IE - 1 - 1 - read-write - - - CC2IE - desc CC2IE - 2 - 2 - read-write - - - CC3IE - desc CC3IE - 3 - 3 - read-write - - - CC4IE - desc CC4IE - 4 - 4 - read-write - - - TIE - desc TIE - 6 - 6 - read-write - - - UDE - desc UDE - 8 - 8 - read-write - - - CC1DE - desc CC1DE - 9 - 9 - read-write - - - CC2DE - desc CC2DE - 10 - 10 - read-write - - - CC3DE - desc CC3DE - 11 - 11 - read-write - - - CC4DE - desc CC4DE - 12 - 12 - read-write - - - TDE - desc TDE - 14 - 14 - read-write - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - 0x1E5F - - - UIF - desc UIF - 0 - 0 - read-write - - - CC1IF - desc CC1IF - 1 - 1 - read-write - - - CC2IF - desc CC2IF - 2 - 2 - read-write - - - CC3IF - desc CC3IF - 3 - 3 - read-write - - - CC4IF - desc CC4IF - 4 - 4 - read-write - - - COMIF - desc COMIF - 5 - 5 - read-write - - - TIF - desc TIF - 6 - 6 - read-write - - - BIF - desc BIF - 7 - 7 - read-write - - - CC1OF - desc CC1OF - 9 - 9 - read-write - - - CC2OF - desc CC2OF - 10 - 10 - read-write - - - CC3OF - desc CC3OF - 11 - 11 - read-write - - - CC4OF - desc CC4OF - 12 - 12 - read-write - - - IC1IR - desc IC1IR - 16 - 16 - read-write - - - IC2IR - desc IC2IR - 17 - 17 - read-write - - - IC3IR - desc IC3IR - 18 - 18 - read-write - - - IC4IR - desc IC3IR - 19 - 19 - read-write - - - IC1IF - desc IC1IF - 20 - 20 - read-write - - - IC2IF - desc IC2IF - 21 - 21 - read-write - - - IC3IF - desc IC3IF - 22 - 22 - read-write - - - IC4IF - desc IC3IF - 23 - 23 - read-write - - - - - EGR - desc EGR - 0x14 - 32 - write-only - 0x0 - 0x5F - - - UG - desc UG - 0 - 0 - write-only - - - CC1G - Capture/Compare 1 Generation - 1 - 1 - write-only - - - CC2G - desc CC2G - 2 - 2 - write-only - - - CC3G - desc CC3G - 3 - 3 - write-only - - - CC4G - desc CC4G - 4 - 4 - write-only - - - TG - desc TG - 6 - 6 - write-only - - - - - CCMR1_OUTPUT - desc CCMR1:OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - OC1FE - desc OC1FE - 2 - 2 - read-write - - - OC1PE - desc OC1PE - 3 - 3 - read-write - - - OC1M - desc OC1M - 6 - 4 - read-write - - - OC1CE - desc OC1CE - 7 - 7 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - OC2FE - desc OC2FE - 10 - 10 - read-write - - - OC2PE - desc OC2PE - 11 - 11 - read-write - - - OC2M - desc OC2M - 14 - 12 - read-write - - - OC2CE - desc OC2CE - 15 - 15 - read-write - - - - - CCMR1_INPUT - desc CCMR1:INPUT - CCMR1_OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - IC1PSC - desc IC1PSC - 3 - 2 - read-write - - - IC1F - desc IC1F - 7 - 4 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - IC2PSC - desc IC2PSC - 11 - 10 - read-write - - - IC2F - desc IC2F - 15 - 12 - read-write - - - - - CCMR2_OUTPUT - desc CCMR2:OUTPUT - 0x1C - 32 - read-write - 0x0 - 0xFFFF - - - CC3S - desc CC3S - 1 - 0 - read-write - - - OC3FE - desc OC3FE - 2 - 2 - read-write - - - OC3PE - desc OC3PE - 3 - 3 - read-write - - - OC3M - desc OC3M - 6 - 4 - read-write - - - OC3CE - desc OC3CE - 7 - 7 - read-write - - - CC4S - desc CC4S - 9 - 8 - read-write - - - OC4FE - desc OC4FE - 10 - 10 - read-write - - - OC4PE - desc OC4PE - 11 - 11 - read-write - - - OC4M - desc OC4M - 14 - 12 - read-write - - - OC4CE - desc OC4CE - 15 - 15 - read-write - - - - - CCMR2_INPUT - desc CCMR2:INPUT - CCMR2_OUTPUT - 0x1C - 32 - read-write - 0x0 - 0xFFFF - - - CC3S - desc CC3S - 1 - 0 - read-write - - - IC3PSC - desc IC3PSC - 3 - 2 - read-write - - - IC3F - desc IC3F - 7 - 4 - read-write - - - CC4S - desc CC4S - 9 - 8 - read-write - - - IC4PSC - desc IC4PSC - 11 - 10 - read-write - - - IC4F - desc IC4F - 15 - 12 - read-write - - - - - CCER - desc CCER - 0x20 - 32 - read-write - 0x0 - 0x3333 - - - CC1E - desc CC1E - 0 - 0 - read-write - - - CC1P - desc CC1P - 1 - 1 - read-write - - - CC2E - desc CC2E - 4 - 4 - read-write - - - CC2P - desc CC2P - 5 - 5 - read-write - - - CC3E - desc CC3E - 8 - 8 - read-write - - - CC3P - desc CC3P - 9 - 9 - read-write - - - CC4E - desc CC4E - 12 - 12 - read-write - - - CC4P - desc CC4P - 13 - 13 - read-write - - - - - CNT - desc CNT - 0x24 - 32 - read-write - 0x0 - 0xFFFF - - - CNT - desc CNT - 15 - 0 - read-write - - - - - PSC - desc PSC - 0x28 - 32 - read-write - 0x0 - 0xFFFF - - - PSC - desc PSC - 15 - 0 - read-write - - - - - ARR - desc ARR - 0x2C - 32 - read-write - 0xFFFF - 0xFFFF - - - ARR - desc ARR - 15 - 0 - read-write - - - - - CCR1 - desc CCR1 - 0x34 - 32 - read-write - 0x0 - 0xFFFF - - - CCR1 - desc CCR1 - 15 - 0 - read-write - - - - - CCR2 - desc CCR2 - 0x38 - 32 - read-write - 0x0 - 0xFFFF - - - CCR2 - desc CCR2 - 15 - 0 - read-write - - - - - CCR3 - desc CCR3 - 0x3C - 32 - read-write - 0x0 - 0xFFFF - - - CCR3 - desc CCR3 - 15 - 0 - read-write - - - - - CCR4 - desc CCR4 - 0x40 - 32 - read-write - 0x0 - 0xFFFF - - - CCR4 - desc CCR4 - 15 - 0 - read-write - - - - - DCR - desc DCR - 0x48 - 32 - read-write - 0x0 - 0x1F1F - - - DBA - desc DBA - 4 - 0 - read-write - - - DBL - desc DBL - 12 - 8 - read-write - - - - - DMAR - desc DMAR - 0x4C - 32 - read-write - 0x0 - 0xFFFF - - - DMAB - desc DMAB - 15 - 0 - read-write - - - - - - - TIM3 - General purpose timer - TIM - 0x40000400 - - 0x00 - 0x400 - registers - - - TIM3 - TIM3 global Interrupt - 16 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - 0x3FF - - - CEN - desc CEN - 0 - 0 - read-write - - - UDIS - desc UDIS - 1 - 1 - read-write - - - URS - desc URS - 2 - 2 - read-write - - - OPM - desc OPM - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CMS - desc CMS - 6 - 5 - read-write - - - ARPE - desc ARPE - 7 - 7 - read-write - - - CKD - desc CKD - 9 - 8 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - 0xF8 - - - CCDS - desc CCDS - 3 - 3 - read-write - - - MMS - desc MMS - 6 - 4 - read-write - - - TI1S - desc TI1S - 7 - 7 - read-write - - - - - SMCR - desc SMCR - 0x8 - 32 - read-write - 0x0 - 0xFFF7 - - - SMS - desc SMS - 2 - 0 - read-write - - - TS - desc TS - 6 - 4 - read-write - - - MSM - desc MSM - 7 - 7 - read-write - - - ETF - desc ETF - 11 - 8 - read-write - - - ETPS - desc ETPS - 13 - 12 - read-write - - - ECE - desc ECE - 14 - 14 - read-write - - - ETP - desc ETP - 15 - 15 - read-write - - - - - DIER - desc DIER - 0xC - 32 - read-write - 0x0 - 0x5F5F - - - UIE - desc UIE - 0 - 0 - read-write - - - CC1IE - desc CC1IE - 1 - 1 - read-write - - - CC2IE - desc CC2IE - 2 - 2 - read-write - - - CC3IE - desc CC3IE - 3 - 3 - read-write - - - CC4IE - desc CC4IE - 4 - 4 - read-write - - - TIE - desc TIE - 6 - 6 - read-write - - - UDE - desc UDE - 8 - 8 - read-write - - - CC1DE - desc CC1DE - 9 - 9 - read-write - - - CC2DE - desc CC2DE - 10 - 10 - read-write - - - CC3DE - desc CC3DE - 11 - 11 - read-write - - - CC4DE - desc CC4DE - 12 - 12 - read-write - - - TDE - desc TDE - 14 - 14 - read-write - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - 0x1E5F - - - UIF - desc UIF - 0 - 0 - read-write - - - CC1IF - desc CC1IF - 1 - 1 - read-write - - - CC2IF - desc CC2IF - 2 - 2 - read-write - - - CC3IF - desc CC3IF - 3 - 3 - read-write - - - CC4IF - desc CC4IF - 4 - 4 - read-write - - - COMIF - desc COMIF - 5 - 5 - read-write - - - TIF - desc TIF - 6 - 6 - read-write - - - BIF - desc BIF - 7 - 7 - read-write - - - CC1OF - desc CC1OF - 9 - 9 - read-write - - - CC2OF - desc CC2OF - 10 - 10 - read-write - - - CC3OF - desc CC3OF - 11 - 11 - read-write - - - CC4OF - desc CC4OF - 12 - 12 - read-write - - - IC1IR - desc IC1IR - 16 - 16 - read-write - - - IC2IR - desc IC2IR - 17 - 17 - read-write - - - IC3IR - desc IC3IR - 18 - 18 - read-write - - - IC4IR - desc IC3IR - 19 - 19 - read-write - - - IC1IF - desc IC1IF - 20 - 20 - read-write - - - IC2IF - desc IC2IF - 21 - 21 - read-write - - - IC3IF - desc IC3IF - 22 - 22 - read-write - - - IC4IF - desc IC3IF - 23 - 23 - read-write - - - - - EGR - desc EGR - 0x14 - 32 - write-only - 0x0 - 0x5F - - - UG - desc UG - 0 - 0 - write-only - - - CC1G - Capture/Compare 1 Generation - 1 - 1 - write-only - - - CC2G - desc CC2G - 2 - 2 - write-only - - - CC3G - desc CC3G - 3 - 3 - write-only - - - CC4G - desc CC4G - 4 - 4 - write-only - - - TG - desc TG - 6 - 6 - write-only - - - - - CCMR1_OUTPUT - desc CCMR1:OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - OC1FE - desc OC1FE - 2 - 2 - read-write - - - OC1PE - desc OC1PE - 3 - 3 - read-write - - - OC1M - desc OC1M - 6 - 4 - read-write - - - OC1CE - desc OC1CE - 7 - 7 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - OC2FE - desc OC2FE - 10 - 10 - read-write - - - OC2PE - desc OC2PE - 11 - 11 - read-write - - - OC2M - desc OC2M - 14 - 12 - read-write - - - OC2CE - desc OC2CE - 15 - 15 - read-write - - - - - CCMR1_INPUT - desc CCMR1:INPUT - CCMR1_OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - IC1PSC - desc IC1PSC - 3 - 2 - read-write - - - IC1F - desc IC1F - 7 - 4 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - IC2PSC - desc IC2PSC - 11 - 10 - read-write - - - IC2F - desc IC2F - 15 - 12 - read-write - - - - - CCMR2_OUTPUT - desc CCMR2:OUTPUT - 0x1C - 32 - read-write - 0x0 - 0xFFFF - - - CC3S - desc CC3S - 1 - 0 - read-write - - - OC3FE - desc OC3FE - 2 - 2 - read-write - - - OC3PE - desc OC3PE - 3 - 3 - read-write - - - OC3M - desc OC3M - 6 - 4 - read-write - - - OC3CE - desc OC3CE - 7 - 7 - read-write - - - CC4S - desc CC4S - 9 - 8 - read-write - - - OC4FE - desc OC4FE - 10 - 10 - read-write - - - OC4PE - desc OC4PE - 11 - 11 - read-write - - - OC4M - desc OC4M - 14 - 12 - read-write - - - OC4CE - desc OC4CE - 15 - 15 - read-write - - - - - CCMR2_INPUT - desc CCMR2:INPUT - CCMR2_OUTPUT - 0x1C - 32 - read-write - 0x0 - 0xFFFF - - - CC3S - desc CC3S - 1 - 0 - read-write - - - IC3PSC - desc IC3PSC - 3 - 2 - read-write - - - IC3F - desc IC3F - 7 - 4 - read-write - - - CC4S - desc CC4S - 9 - 8 - read-write - - - IC4PSC - desc IC4PSC - 11 - 10 - read-write - - - IC4F - desc IC4F - 15 - 12 - read-write - - - - - CCER - desc CCER - 0x20 - 32 - read-write - 0x0 - 0x3333 - - - CC1E - desc CC1E - 0 - 0 - read-write - - - CC1P - desc CC1P - 1 - 1 - read-write - - - CC2E - desc CC2E - 4 - 4 - read-write - - - CC2P - desc CC2P - 5 - 5 - read-write - - - CC3E - desc CC3E - 8 - 8 - read-write - - - CC3P - desc CC3P - 9 - 9 - read-write - - - CC4E - desc CC4E - 12 - 12 - read-write - - - CC4P - desc CC4P - 13 - 13 - read-write - - - - - CNT - desc CNT - 0x24 - 32 - read-write - 0x0 - 0xFFFF - - - CNT - desc CNT - 15 - 0 - read-write - - - - - PSC - desc PSC - 0x28 - 32 - read-write - 0x0 - 0xFFFF - - - PSC - desc PSC - 15 - 0 - read-write - - - - - ARR - desc ARR - 0x2C - 32 - read-write - 0xFFFF - 0xFFFF - - - ARR - desc ARR - 15 - 0 - read-write - - - - - CCR1 - desc CCR1 - 0x34 - 32 - read-write - 0x0 - 0xFFFF - - - CCR1 - desc CCR1 - 15 - 0 - read-write - - - - - CCR2 - desc CCR2 - 0x38 - 32 - read-write - 0x0 - 0xFFFF - - - CCR2 - desc CCR2 - 15 - 0 - read-write - - - - - CCR3 - desc CCR3 - 0x3C - 32 - read-write - 0x0 - 0xFFFF - - - CCR3 - desc CCR3 - 15 - 0 - read-write - - - - - CCR4 - desc CCR4 - 0x40 - 32 - read-write - 0x0 - 0xFFFF - - - CCR4 - desc CCR4 - 15 - 0 - read-write - - - - - DCR - desc DCR - 0x48 - 32 - read-write - 0x0 - 0x1F1F - - - DBA - desc DBA - 4 - 0 - read-write - - - DBL - desc DBL - 12 - 8 - read-write - - - - - DMAR - desc DMAR - 0x4C - 32 - read-write - 0x0 - 0xFFFF - - - DMAB - desc DMAB - 15 - 0 - read-write - - - - - - - TIM6 - desc TIM - TIM - 0x40001000 - - 0x0 - 0x400 - registers - - - TIM6_LPTIM1_DAC - TIM6, LPTIM1, DAC global Interrupts - 17 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - 0x3FF - - - CEN - desc CEN - 0 - 0 - read-write - - - UDIS - desc UDIS - 1 - 1 - read-write - - - URS - desc URS - 2 - 2 - read-write - - - OPM - desc OPM - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CMS - desc CMS - 6 - 5 - read-write - - - ARPE - desc ARPE - 7 - 7 - read-write - - - CKD - desc CKD - 9 - 8 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - 0xF8 - - - CCDS - desc CCDS - 3 - 3 - read-write - - - MMS - desc MMS - 6 - 4 - read-write - - - TI1S - desc TI1S - 7 - 7 - read-write - - - - - DIER - desc DIER - 0xC - 32 - read-write - 0x0 - 0x5F5F - - - UIE - desc UIE - 0 - 0 - read-write - - - CC1IE - desc CC1IE - 1 - 1 - read-write - - - CC2IE - desc CC2IE - 2 - 2 - read-write - - - CC3IE - desc CC3IE - 3 - 3 - read-write - - - CC4IE - desc CC4IE - 4 - 4 - read-write - - - TIE - desc TIE - 6 - 6 - read-write - - - UDE - desc UDE - 8 - 8 - read-write - - - CC1DE - desc CC1DE - 9 - 9 - read-write - - - CC2DE - desc CC2DE - 10 - 10 - read-write - - - CC3DE - desc CC3DE - 11 - 11 - read-write - - - CC4DE - desc CC4DE - 12 - 12 - read-write - - - TDE - desc TDE - 14 - 14 - read-write - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - 0x1E5F - - - UIF - desc UIF - 0 - 0 - read-write - - - CC1IF - desc CC1IF - 1 - 1 - read-write - - - CC2IF - desc CC2IF - 2 - 2 - read-write - - - CC3IF - desc CC3IF - 3 - 3 - read-write - - - CC4IF - desc CC4IF - 4 - 4 - read-write - - - COMIF - desc COMIF - 5 - 5 - read-write - - - TIF - desc TIF - 6 - 6 - read-write - - - BIF - desc BIF - 7 - 7 - read-write - - - CC1OF - desc CC1OF - 9 - 9 - read-write - - - CC2OF - desc CC2OF - 10 - 10 - read-write - - - CC3OF - desc CC3OF - 11 - 11 - read-write - - - CC4OF - desc CC4OF - 12 - 12 - read-write - - - IC1IR - desc IC1IR - 16 - 16 - read-write - - - IC2IR - desc IC2IR - 17 - 17 - read-write - - - IC3IR - desc IC3IR - 18 - 18 - read-write - - - IC4IR - desc IC3IR - 19 - 19 - read-write - - - IC1IF - desc IC1IF - 20 - 20 - read-write - - - IC2IF - desc IC2IF - 21 - 21 - read-write - - - IC3IF - desc IC3IF - 22 - 22 - read-write - - - IC4IF - desc IC3IF - 23 - 23 - read-write - - - - - EGR - desc EGR - 0x14 - 32 - write-only - 0x0 - 0x5F - - - UG - desc UG - 0 - 0 - write-only - - - CC1G - Capture/Compare 1 Generation - 1 - 1 - write-only - - - CC2G - desc CC2G - 2 - 2 - write-only - - - CC3G - desc CC3G - 3 - 3 - write-only - - - CC4G - desc CC4G - 4 - 4 - write-only - - - TG - desc TG - 6 - 6 - write-only - - - - - CNT - desc CNT - 0x24 - 32 - read-write - 0x0 - 0xFFFF - - - CNT - desc CNT - 15 - 0 - read-write - - - - - PSC - desc PSC - 0x28 - 32 - read-write - 0x0 - 0xFFFF - - - PSC - desc PSC - 15 - 0 - read-write - - - - - ARR - desc ARR - 0x2C - 32 - read-write - 0xFFFF - 0xFFFF - - - ARR - desc ARR - 15 - 0 - read-write - - - - - - - TIM7 - desc TIM - TIM - 0x40001400 - - 0x0 - 0x400 - registers - - - TIM7 - TIM7 global Interrupt - 18 - - - - TIM14 - General purpose timer - TIM - 0x40002000 - - 0x00 - 0x400 - registers - - - TIM14 - TIM14 global Interrupt - 19 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - 0x3FF - - - CEN - desc CEN - 0 - 0 - read-write - - - UDIS - desc UDIS - 1 - 1 - read-write - - - URS - desc URS - 2 - 2 - read-write - - - OPM - desc OPM - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CMS - desc CMS - 6 - 5 - read-write - - - ARPE - desc ARPE - 7 - 7 - read-write - - - CKD - desc CKD - 9 - 8 - read-write - - - - - DIER - desc DIER - 0xC - 32 - read-write - 0x0 - 0x5F5F - - - UIE - desc UIE - 0 - 0 - read-write - - - CC1IE - desc CC1IE - 1 - 1 - read-write - - - CC2IE - desc CC2IE - 2 - 2 - read-write - - - CC3IE - desc CC3IE - 3 - 3 - read-write - - - CC4IE - desc CC4IE - 4 - 4 - read-write - - - TIE - desc TIE - 6 - 6 - read-write - - - UDE - desc UDE - 8 - 8 - read-write - - - CC1DE - desc CC1DE - 9 - 9 - read-write - - - CC2DE - desc CC2DE - 10 - 10 - read-write - - - CC3DE - desc CC3DE - 11 - 11 - read-write - - - CC4DE - desc CC4DE - 12 - 12 - read-write - - - TDE - desc TDE - 14 - 14 - read-write - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - 0x1E5F - - - UIF - desc UIF - 0 - 0 - read-write - - - CC1IF - desc CC1IF - 1 - 1 - read-write - - - CC2IF - desc CC2IF - 2 - 2 - read-write - - - CC3IF - desc CC3IF - 3 - 3 - read-write - - - CC4IF - desc CC4IF - 4 - 4 - read-write - - - TIF - desc TIF - 6 - 6 - read-write - - - CC1OF - desc CC1OF - 9 - 9 - read-write - - - CC2OF - desc CC2OF - 10 - 10 - read-write - - - CC3OF - desc CC3OF - 11 - 11 - read-write - - - CC4OF - desc CC4OF - 12 - 12 - read-write - - - - - EGR - desc EGR - 0x14 - 32 - write-only - 0x0 - 0x5F - - - UG - desc UG - 0 - 0 - write-only - - - CC1G - Capture/Compare 1 Generation - 1 - 1 - write-only - - - CC2G - desc CC2G - 2 - 2 - write-only - - - CC3G - desc CC3G - 3 - 3 - write-only - - - CC4G - desc CC4G - 4 - 4 - write-only - - - TG - desc TG - 6 - 6 - write-only - - - - - CCMR1_OUTPUT - desc CCMR1:OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - OC1FE - desc OC1FE - 2 - 2 - read-write - - - OC1PE - desc OC1PE - 3 - 3 - read-write - - - OC1M - desc OC1M - 6 - 4 - read-write - - - OC1CE - desc OC1CE - 7 - 7 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - OC2FE - desc OC2FE - 10 - 10 - read-write - - - OC2PE - desc OC2PE - 11 - 11 - read-write - - - OC2M - desc OC2M - 14 - 12 - read-write - - - OC2CE - desc OC2CE - 15 - 15 - read-write - - - - - CCMR1_INPUT - desc CCMR1:INPUT - CCMR1_OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - IC1PSC - desc IC1PSC - 3 - 2 - read-write - - - IC1F - desc IC1F - 7 - 4 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - IC2PSC - desc IC2PSC - 11 - 10 - read-write - - - IC2F - desc IC2F - 15 - 12 - read-write - - - - - CCER - desc CCER - 0x20 - 32 - read-write - 0x0 - 0x3333 - - - CC1E - desc CC1E - 0 - 0 - read-write - - - CC1P - desc CC1P - 1 - 1 - read-write - - - CC2E - desc CC2E - 4 - 4 - read-write - - - CC2P - desc CC2P - 5 - 5 - read-write - - - CC3E - desc CC3E - 8 - 8 - read-write - - - CC3P - desc CC3P - 9 - 9 - read-write - - - CC4E - desc CC4E - 12 - 12 - read-write - - - CC4P - desc CC4P - 13 - 13 - read-write - - - - - CNT - desc CNT - 0x24 - 32 - read-write - 0x0 - 0xFFFF - - - CNT - desc CNT - 15 - 0 - read-write - - - - - PSC - desc PSC - 0x28 - 32 - read-write - 0x0 - 0xFFFF - - - PSC - desc PSC - 15 - 0 - read-write - - - - - ARR - desc ARR - 0x2C - 32 - read-write - 0xFFFF - 0xFFFF - - - ARR - desc ARR - 15 - 0 - read-write - - - - - CCR1 - desc CCR1 - 0x34 - 32 - read-write - 0x0 - 0xFFFF - - - CCR1 - desc CCR1 - 15 - 0 - read-write - - - - - OR - desc OR - 0x50 - 32 - read-write - 0x0 - - - TI1_RMP - desc TI1_RMP - 1 - 0 - read-write - - - - - - - TIM15 - 0x40014000 - - 0x0 - 0x400 - registers - - - TIM15 - TIM15 global Interrupt - 20 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - 0x3FF - - - CEN - desc CEN - 0 - 0 - read-write - - - UDIS - desc UDIS - 1 - 1 - read-write - - - URS - desc URS - 2 - 2 - read-write - - - OPM - desc OPM - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CMS - desc CMS - 6 - 5 - read-write - - - ARPE - desc ARPE - 7 - 7 - read-write - - - CKD - desc CKD - 9 - 8 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - 0xF8 - - - CCDS - desc CCDS - 3 - 3 - read-write - - - MMS - desc MMS - 6 - 4 - read-write - - - TI1S - desc TI1S - 7 - 7 - read-write - - - - - SMCR - desc SMCR - 0x8 - 32 - read-write - 0x0 - 0xFFF7 - - - SMS - desc SMS - 2 - 0 - read-write - - - TS - desc TS - 6 - 4 - read-write - - - MSM - desc MSM - 7 - 7 - read-write - - - ETF - desc ETF - 11 - 8 - read-write - - - ETPS - desc ETPS - 13 - 12 - read-write - - - ECE - desc ECE - 14 - 14 - read-write - - - ETP - desc ETP - 15 - 15 - read-write - - - - - DIER - desc DIER - 0xC - 32 - read-write - 0x0 - 0x5F5F - - - UIE - desc UIE - 0 - 0 - read-write - - - CC1IE - desc CC1IE - 1 - 1 - read-write - - - CC2IE - desc CC2IE - 2 - 2 - read-write - - - CC3IE - desc CC3IE - 3 - 3 - read-write - - - CC4IE - desc CC4IE - 4 - 4 - read-write - - - TIE - desc TIE - 6 - 6 - read-write - - - UDE - desc UDE - 8 - 8 - read-write - - - CC1DE - desc CC1DE - 9 - 9 - read-write - - - CC2DE - desc CC2DE - 10 - 10 - read-write - - - CC3DE - desc CC3DE - 11 - 11 - read-write - - - CC4DE - desc CC4DE - 12 - 12 - read-write - - - TDE - desc TDE - 14 - 14 - read-write - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - 0x1E5F - - - UIF - desc UIF - 0 - 0 - read-write - - - CC1IF - desc CC1IF - 1 - 1 - read-write - - - CC2IF - desc CC2IF - 2 - 2 - read-write - - - CC3IF - desc CC3IF - 3 - 3 - read-write - - - CC4IF - desc CC4IF - 4 - 4 - read-write - - - COMIF - desc COMIF - 5 - 5 - read-write - - - TIF - desc TIF - 6 - 6 - read-write - - - BIF - desc BIF - 7 - 7 - read-write - - - CC1OF - desc CC1OF - 9 - 9 - read-write - - - CC2OF - desc CC2OF - 10 - 10 - read-write - - - CC3OF - desc CC3OF - 11 - 11 - read-write - - - CC4OF - desc CC4OF - 12 - 12 - read-write - - - IC1IR - desc IC1IR - 16 - 16 - read-write - - - IC2IR - desc IC2IR - 17 - 17 - read-write - - - IC3IR - desc IC3IR - 18 - 18 - read-write - - - IC4IR - desc IC3IR - 19 - 19 - read-write - - - IC1IF - desc IC1IF - 20 - 20 - read-write - - - IC2IF - desc IC2IF - 21 - 21 - read-write - - - IC3IF - desc IC3IF - 22 - 22 - read-write - - - IC4IF - desc IC3IF - 23 - 23 - read-write - - - - - EGR - desc EGR - 0x14 - 32 - write-only - 0x0 - 0x5F - - - UG - desc UG - 0 - 0 - write-only - - - CC1G - Capture/Compare 1 Generation - 1 - 1 - write-only - - - CC2G - desc CC2G - 2 - 2 - write-only - - - CC3G - desc CC3G - 3 - 3 - write-only - - - CC4G - desc CC4G - 4 - 4 - write-only - - - TG - desc TG - 6 - 6 - write-only - - - - - CCMR1_OUTPUT - desc CCMR1:OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - OC1FE - desc OC1FE - 2 - 2 - read-write - - - OC1PE - desc OC1PE - 3 - 3 - read-write - - - OC1M - desc OC1M - 6 - 4 - read-write - - - OC1CE - desc OC1CE - 7 - 7 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - OC2FE - desc OC2FE - 10 - 10 - read-write - - - OC2PE - desc OC2PE - 11 - 11 - read-write - - - OC2M - desc OC2M - 14 - 12 - read-write - - - OC2CE - desc OC2CE - 15 - 15 - read-write - - - - - CCMR1_INPUT - desc CCMR1:INPUT - CCMR1_OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - IC1PSC - desc IC1PSC - 3 - 2 - read-write - - - IC1F - desc IC1F - 7 - 4 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - IC2PSC - desc IC2PSC - 11 - 10 - read-write - - - IC2F - desc IC2F - 15 - 12 - read-write - - - - - CCER - desc CCER - 0x20 - 32 - read-write - 0x0 - 0x3333 - - - CC1E - desc CC1E - 0 - 0 - read-write - - - CC1P - desc CC1P - 1 - 1 - read-write - - - CC2E - desc CC2E - 4 - 4 - read-write - - - CC2P - desc CC2P - 5 - 5 - read-write - - - CC3E - desc CC3E - 8 - 8 - read-write - - - CC3P - desc CC3P - 9 - 9 - read-write - - - CC4E - desc CC4E - 12 - 12 - read-write - - - CC4P - desc CC4P - 13 - 13 - read-write - - - - - CNT - desc CNT - 0x24 - 32 - read-write - 0x0 - 0xFFFF - - - CNT - desc CNT - 15 - 0 - read-write - - - - - PSC - desc PSC - 0x28 - 32 - read-write - 0x0 - 0xFFFF - - - PSC - desc PSC - 15 - 0 - read-write - - - - - ARR - desc ARR - 0x2C - 32 - read-write - 0xFFFF - 0xFFFF - - - ARR - desc ARR - 15 - 0 - read-write - - - - - RCR - desc RCR - 0x30 - 32 - read-write - 0xFFFF - 0xFFFF - - - REP - desc REP - 7 - 0 - read-write - - - - - CCR1 - desc CCR1 - 0x34 - 32 - read-write - 0x0 - 0xFFFF - - - CCR1 - desc CCR1 - 15 - 0 - read-write - - - - - CCR2 - desc CCR2 - 0x38 - 32 - read-write - 0x0 - 0xFFFF - - - CCR2 - desc CCR2 - 15 - 0 - read-write - - - - - BDTR - desc BDTR - 0x44 - 32 - read-write - 0x0 - 0xFFFF - - - DTG - desc DTG - 7 - 0 - read-write - - - LOCK - desc LOCK - 9 - 8 - read-write - - - OSSI - desc OSSI - 10 - 10 - read-write - - - OSSR - desc OSSR - 11 - 11 - read-write - - - BKE - desc BKE - 12 - 12 - read-write - - - BKP - desc BKP - 13 - 13 - read-write - - - AOE - desc AOE - 14 - 14 - read-write - - - MOE - desc MOE - 15 - 15 - read-write - - - - - DCR - desc DCR - 0x48 - 32 - read-write - 0x0 - 0x1F1F - - - DBA - desc DBA - 4 - 0 - read-write - - - DBL - desc DBL - 12 - 8 - read-write - - - - - DMAR - desc DMAR - 0x4C - 32 - read-write - 0x0 - 0xFFFF - - - DMAB - desc DMAB - 15 - 0 - read-write - - - - - - - TIM16 - General purpose timer - TIM - 0x40014400 - - 0x00 - 0x400 - registers - - - TIM16 - TIM16 global Interrupt - 21 - - - - CR1 - desc CR1 - 0x0 - 32 - read-write - 0x0 - 0x3FF - - - CEN - desc CEN - 0 - 0 - read-write - - - UDIS - desc UDIS - 1 - 1 - read-write - - - URS - desc URS - 2 - 2 - read-write - - - OPM - desc OPM - 3 - 3 - read-write - - - DIR - desc DIR - 4 - 4 - read-write - - - CMS - desc CMS - 6 - 5 - read-write - - - ARPE - desc ARPE - 7 - 7 - read-write - - - CKD - desc CKD - 9 - 8 - read-write - - - - - CR2 - desc CR2 - 0x4 - 32 - read-write - 0x0 - 0xF8 - - - CCDS - desc CCDS - 3 - 3 - read-write - - - MMS - desc MMS - 6 - 4 - read-write - - - TI1S - desc TI1S - 7 - 7 - read-write - - - - - DIER - desc DIER - 0xC - 32 - read-write - 0x0 - 0x5F5F - - - UIE - desc UIE - 0 - 0 - read-write - - - CC1IE - desc CC1IE - 1 - 1 - read-write - - - CC2IE - desc CC2IE - 2 - 2 - read-write - - - CC3IE - desc CC3IE - 3 - 3 - read-write - - - CC4IE - desc CC4IE - 4 - 4 - read-write - - - TIE - desc TIE - 6 - 6 - read-write - - - UDE - desc UDE - 8 - 8 - read-write - - - CC1DE - desc CC1DE - 9 - 9 - read-write - - - CC2DE - desc CC2DE - 10 - 10 - read-write - - - CC3DE - desc CC3DE - 11 - 11 - read-write - - - CC4DE - desc CC4DE - 12 - 12 - read-write - - - TDE - desc TDE - 14 - 14 - read-write - - - - - SR - desc SR - 0x10 - 32 - read-write - 0x0 - 0x1E5F - - - UIF - desc UIF - 0 - 0 - read-write - - - CC1IF - desc CC1IF - 1 - 1 - read-write - - - CC2IF - desc CC2IF - 2 - 2 - read-write - - - CC3IF - desc CC3IF - 3 - 3 - read-write - - - CC4IF - desc CC4IF - 4 - 4 - read-write - - - COMIF - desc COMIF - 5 - 5 - read-write - - - TIF - desc TIF - 6 - 6 - read-write - - - BIF - desc BIF - 7 - 7 - read-write - - - CC1OF - desc CC1OF - 9 - 9 - read-write - - - CC2OF - desc CC2OF - 10 - 10 - read-write - - - CC3OF - desc CC3OF - 11 - 11 - read-write - - - CC4OF - desc CC4OF - 12 - 12 - read-write - - - IC1IR - desc IC1IR - 16 - 16 - read-write - - - IC2IR - desc IC2IR - 17 - 17 - read-write - - - IC3IR - desc IC3IR - 18 - 18 - read-write - - - IC4IR - desc IC3IR - 19 - 19 - read-write - - - IC1IF - desc IC1IF - 20 - 20 - read-write - - - IC2IF - desc IC2IF - 21 - 21 - read-write - - - IC3IF - desc IC3IF - 22 - 22 - read-write - - - IC4IF - desc IC3IF - 23 - 23 - read-write - - - - - EGR - desc EGR - 0x14 - 32 - write-only - 0x0 - 0x5F - - - UG - desc UG - 0 - 0 - write-only - - - CC1G - Capture/Compare 1 Generation - 1 - 1 - write-only - - - CC2G - desc CC2G - 2 - 2 - write-only - - - CC3G - desc CC3G - 3 - 3 - write-only - - - CC4G - desc CC4G - 4 - 4 - write-only - - - TG - desc TG - 6 - 6 - write-only - - - - - CCMR1_OUTPUT - desc CCMR1:OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - OC1FE - desc OC1FE - 2 - 2 - read-write - - - OC1PE - desc OC1PE - 3 - 3 - read-write - - - OC1M - desc OC1M - 6 - 4 - read-write - - - OC1CE - desc OC1CE - 7 - 7 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - OC2FE - desc OC2FE - 10 - 10 - read-write - - - OC2PE - desc OC2PE - 11 - 11 - read-write - - - OC2M - desc OC2M - 14 - 12 - read-write - - - OC2CE - desc OC2CE - 15 - 15 - read-write - - - - - CCMR1_INPUT - desc CCMR1:INPUT - CCMR1_OUTPUT - 0x18 - 32 - read-write - 0x0 - 0xFFFF - - - CC1S - desc CC1S - 1 - 0 - read-write - - - IC1PSC - desc IC1PSC - 3 - 2 - read-write - - - IC1F - desc IC1F - 7 - 4 - read-write - - - CC2S - desc CC2S - 9 - 8 - read-write - - - IC2PSC - desc IC2PSC - 11 - 10 - read-write - - - IC2F - desc IC2F - 15 - 12 - read-write - - - - - CCER - desc CCER - 0x20 - 32 - read-write - 0x0 - 0x3333 - - - CC1E - desc CC1E - 0 - 0 - read-write - - - CC1P - desc CC1P - 1 - 1 - read-write - - - CC2E - desc CC2E - 4 - 4 - read-write - - - CC2P - desc CC2P - 5 - 5 - read-write - - - CC3E - desc CC3E - 8 - 8 - read-write - - - CC3P - desc CC3P - 9 - 9 - read-write - - - CC4E - desc CC4E - 12 - 12 - read-write - - - CC4P - desc CC4P - 13 - 13 - read-write - - - - - CNT - desc CNT - 0x24 - 32 - read-write - 0x0 - 0xFFFF - - - CNT - desc CNT - 15 - 0 - read-write - - - - - PSC - desc PSC - 0x28 - 32 - read-write - 0x0 - 0xFFFF - - - PSC - desc PSC - 15 - 0 - read-write - - - - - ARR - desc ARR - 0x2C - 32 - read-write - 0xFFFF - 0xFFFF - - - ARR - desc ARR - 15 - 0 - read-write - - - - - RCR - desc RCR - 0x30 - 32 - read-write - 0xFFFF - 0xFFFF - - - REP - desc REP - 7 - 0 - read-write - - - - - CCR1 - desc CCR1 - 0x34 - 32 - read-write - 0x0 - 0xFFFF - - - CCR1 - desc CCR1 - 15 - 0 - read-write - - - - - BDTR - desc BDTR - 0x44 - 32 - read-write - 0x0 - 0xFFFF - - - DTG - desc DTG - 7 - 0 - read-write - - - LOCK - desc LOCK - 9 - 8 - read-write - - - OSSI - desc OSSI - 10 - 10 - read-write - - - OSSR - desc OSSR - 11 - 11 - read-write - - - BKE - desc BKE - 12 - 12 - read-write - - - BKP - desc BKP - 13 - 13 - read-write - - - AOE - desc AOE - 14 - 14 - read-write - - - MOE - desc MOE - 15 - 15 - read-write - - - - - DCR - desc DCR - 0x48 - 32 - read-write - 0x0 - 0x1F1F - - - DBA - desc DBA - 4 - 0 - read-write - - - DBL - desc DBL - 12 - 8 - read-write - - - - - DMAR - desc DMAR - 0x4C - 32 - read-write - 0x0 - 0xFFFF - - - DMAB - desc DMAB - 15 - 0 - read-write - - - - - - - TIM17 - 0x40014800 - - TIM17 - TIM17 global Interrupt - 22 - - - - USART1 - - Universal synchronous asynchronous receiver - transmitter - - USART - 0x40013800 - - 0x0 - 0x400 - registers - - - USART1 - USART1 global Interrupt - 27 - - - - SR - desc SR - 0x0 - 32 - read-write - 0xC0 - - - PE - desc PE - 0 - 0 - read-only - - - FE - desc FE - 1 - 1 - read-only - - - NE - desc NE - 2 - 2 - read-only - - - ORE - desc ORE - 3 - 3 - read-only - - - IDLE - desc IDLE - 4 - 4 - read-only - - - RXNE - desc RXNE - 5 - 5 - read-write - - - TC - desc TC - 6 - 6 - read-write - - - TXE - desc TXE - 7 - 7 - read-only - - - LBD - desc LBD - 8 - 8 - read-write - - - CTS - desc CTS - 9 - 9 - read-write - - - ABRF - desc ABRF - 10 - 10 - read-only - - - ABRE - desc ABRE - 11 - 11 - read-only - - - ABRRQ - desc ABRRQ - 12 - 12 - write-only - - - - - DR - desc DR - 0x4 - 32 - read-write - 0x0 - - - DR - desc DR - 8 - 0 - read-write - - - - - BRR - desc BRR - 0x8 - 32 - read-write - 0x0 - - - DIV_FRACTION - desc DIV_Fraction - 3 - 0 - read-write - - - DIV_MANTISSA - desc DIV_Mantissa - 15 - 4 - read-write - - - - - CR1 - desc CR1 - 0xC - 32 - read-write - 0x0 - - - SBK - desc SBK - 0 - 0 - read-write - - - RWU - desc RWU - 1 - 1 - read-write - - - RE - desc RE - 2 - 2 - read-write - - - TE - desc TE - 3 - 3 - read-write - - - IDLEIE - desc IDLEIE - 4 - 4 - read-write - - - RXNEIE - desc RXNEIE - 5 - 5 - read-write - - - TCIE - desc TCIE - 6 - 6 - read-write - - - TXEIE - desc TXEIE - 7 - 7 - read-write - - - PEIE - desc PEIE - 8 - 8 - read-write - - - PS - desc PS - 9 - 9 - read-write - - - PCE - desc PCE - 10 - 10 - read-write - - - WAKE - desc WAKE - 11 - 11 - read-write - - - M - desc M - 12 - 12 - read-write - - - UE - desc UE - 13 - 13 - read-write - - - - - CR2 - desc CR2 - 0x10 - 32 - read-write - 0x0 - - - ADD - desc ADD - 3 - 0 - read-write - - - LBDL - desc LBDL - 5 - 5 - read-write - - - LBDIE - desc LBDIE - 6 - 6 - read-write - - - LBCL - desc LBCL - 8 - 8 - read-write - - - CPHA - desc CPHA - 9 - 9 - read-write - - - CPOL - desc CPOL - 10 - 10 - read-write - - - CLKEN - desc CLKEN - 11 - 11 - read-write - - - STOP - desc STOP - 13 - 12 - read-write - - - LINEN - desc LINEN - 14 - 14 - read-write - - - - - CR3 - desc CR3 - 0x14 - 32 - read-write - 0x0 - - - EIE - desc EIE - 0 - 0 - read-write - - - IREN - desc IREN - 1 - 1 - read-write - - - IRLP - desc IRLP - 2 - 2 - read-write - - - HDSEL - desc HDSEL - 3 - 3 - read-write - - - NACK - desc NACK - 4 - 4 - read-write - - - SCEN - desc SCEN - 5 - 5 - read-write - - - DMAR - desc DMAR - 6 - 6 - read-write - - - DMAT - desc DMAT - 7 - 7 - read-write - - - RTSE - desc RTSE - 8 - 8 - read-write - - - CTSE - desc CTSE - 9 - 9 - read-write - - - CTSIE - desc CTSIE - 10 - 10 - read-write - - - OVER8 - desc OVER8 - 11 - 11 - read-write - - - ABREN - desc ABREN - 12 - 12 - read-write - - - ABRMODE - desc ABRMODE - 14 - 13 - read-write - - - - - GTPR - desc GTPR - 0x18 - 32 - read-write - 0x0 - - - PSC - desc PSC - 7 - 0 - read-write - - - GT - desc GT - 15 - 8 - read-write - - - - - - - USART2 - 0x40004400 - - USART2 - USART2 global Interrupt - 28 - - - - USART3 - desc USART - USART - 0x40004800 - - 0x0 - 0x400 - registers - - - USART3_4 - USART3, 4 global Interrupts - 29 - - - - USART4 - desc USART - USART - 0x40004C00 - - 0x0 - 0x400 - registers - - - USART3_4 - USART3, 4 global Interrupts - 29 - - - - USB - USB - USB - 0x40005C00 - - 0x0 - 0x400 - registers - - - USB - USB global Interrupts - 31 - - - - CR - CR - CR - 0x0 - 0x20 - read-write - 0xFFFFFFFF - - - ADD - ADD - 0 - 7 - - - UPDATE - UPDATE - 7 - 1 - - - Enable_Suspend - Enable_Suspend - 8 - 1 - - - Suspend_Mode - Suspend_Mode - 9 - 1 - - - Resume - Resume - 10 - 1 - - - Reset - Reset - 11 - 1 - - - ISO_Update - ISO_Update - 15 - 1 - - - - - INTR - INTR - INTR - 0x4 - 0x20 - read-write - 0x00000000 - - - Suspend - Suspend - 0 - 1 - - - Resume - Resume - 1 - 1 - - - Reset - Reset - 2 - 1 - - - SOF - SOF - 3 - 1 - - - EP1OUT - EP1OUT - 9 - 1 - - - EP2OUT - EP2OUT - 10 - 1 - - - EP3OUT - EP3OUT - 11 - 1 - - - EP4OUT - EP4OUT - 12 - 1 - - - EP5OUT - EP5OUT - 13 - 1 - - - EP0 - EP0 - 16 - 1 - - - EP1IN - EP1IN - 17 - 1 - - - EP2IN - EP2IN - 18 - 1 - - - EP3IN - EP3IN - 19 - 1 - - - EP4IN - EP4IN - 20 - 1 - - - EP5IN - EP5IN - 21 - 1 - - - - - INTRE - INTRE - INTRE - 0x8 - 0x20 - read-write - 0x00000000 - - - EN_Suspend - EN_Suspend - 0 - 1 - - - EN_Resume - EN_Resume - 1 - 1 - - - EN_Reset - EN_Reset - 2 - 1 - - - EN_SOF - EN_SOF - 3 - 1 - - - EP1OUTE - EP1OUTE - 9 - 1 - - - EP2OUTE - EP2OUTE - 10 - 1 - - - EP3OUTE - EP3OUTE - 11 - 1 - - - EP4OUTE - EP4OUTE - 12 - 1 - - - EP5OUTE - EP5OUTE - 13 - 1 - - - EP0 - EP0 - 16 - 1 - - - EP1INE - EP1INE - 17 - 1 - - - EP2INE - EP2INE - 18 - 1 - - - EP3INE - EP3INE - 19 - 1 - - - EP4INE - EP4INE - 20 - 1 - - - EP5INE - EP5INE - 21 - 1 - - - - - FRAME - FRAME - FRAME - 0xC - 0x20 - write-only - 0x00000000 - - - FramNUM - FramNUM - 0 - 11 - - - INDEX - INDEX - 16 - 4 - - - - - EP0CSR - EP0CSR - EP0CSR - 0x10 - 0x20 - write-only - 0x00000000 - - - OutPktRdy - OutPktRdy - 0 - 1 - - - InPktRdy - InPktRdy - 1 - 1 - - - SentStall - SentStall - 2 - 1 - - - DataEnd - DataEnd - 3 - 1 - - - SetupEnd - SetupEnd - 4 - 1 - - - SendStall - OutPktRdy - 5 - 1 - - - ServicedOutPktRdy - ServicedOutPktRdy - 6 - 1 - - - ServicedSetupEnd - ServicedSetupEnd - 7 - 1 - - - COUNT0 - COUNT0 - 8 - 1 - - - - - INEPxCSR - INEPxCSR - INEPxCSR - 0x14 - 0x20 - write-only - 0x00000000 - - - FrcDataTog - FrcDataTog - 3 - 1 - - - DMAEnab - DMAEnab - 4 - 1 - - - Mode - Mode - 5 - 1 - - - ISO - ISO - 6 - 1 - - - AutoSet - AutoSet - 7 - 1 - - - InPktRdy - InPktRdy - 8 - 1 - - - FIFONotEmpty - FIFONotEmpty - 9 - 1 - - - UnderRun - UnderRun - 10 - 1 - - - FlushFIFO - FlushFIFO - 11 - 1 - - - SendStall - SendStall - 12 - 1 - - - SentStall - SentStall - 13 - 1 - - - ClrDataTog - ClrDataTog - 14 - 1 - - - INMAXP - INMAXP - 16 - 1 - - - - - OUTEPxCSR - OUTEPxCSR - OUTEPxCSR - 0x18 - 0x20 - write-only - 0x00000000 - - - DMAMode - DMAMode - 4 - 1 - - - DMAEnab - DMAEnab - 5 - 1 - - - ISO - ISO - 6 - 1 - - - AutoClear - AutoClear - 7 - 1 - - - OutPktRdy - OutPktRdy - 8 - 1 - - - FIFOFull - FIFOFull - 9 - 1 - - - OverRun - OverRun - 10 - 1 - - - DataError - DataError - 11 - 1 - - - FlushFIFO - FlushFIFO - 12 - 1 - - - SendStall - SendStall - 13 - 1 - - - SentStall - SentStall - 14 - 1 - - - ClrDataTog - ClrDataTog - 15 - 1 - - - INMAXP - INMAXP - 16 - 1 - - - - - OUTCOUNT - OUTCOUNT - OUTCOUNT - 0x1C - 0x20 - write-only - 0x00000000 - - - OUTCOUNT - OUTCOUNT - 0 - 10 - - - - - - - WWDG - Window watchdog - WWDG - 0x40002C00 - - 0x0 - 0x400 - registers - - - WWDG - Window WatchDog Interrupt - 0 - - - - CR - CR - Control register (WWDG_CR) - 0x0 - 0x20 - read-write - 0x0000007F - - - WDGA - Activation bit - 7 - 1 - - - T - 7-bit counter (MSB to LSB) - 0 - 7 - - - - - CFR - CFR - - Configuration register - (WWDG_CFR) - - 0x4 - 0x20 - read-write - 0x0000007F - - - EWI - Early Wakeup Interrupt - 9 - 1 - - - WDGTB - Timer Base - 7 - 2 - - - W - 7-bit window value - 0 - 7 - - - - - SR - SR - Status register (WWDG_SR) - 0x8 - 0x20 - read-write - 0x00000000 - - - EWIF - Early Wakeup Interrupt flag - 0 - 1 - - - - - - - + + + + Puya + Puya + PY32F0xx_DFP + + PY32F0 + 1.0.0 + Arm 32-bit Cortex-M0+ Microcontroller based device, CPU clock up to 48 MHz. + + + + CM0+ + r0p1 + little + false + false + 4 + false + + + + 8 + + 32 + + + 32 + + read-write + + 0x00000000 + + 0xFFFFFFFF + + + + ADC + Analog to Digital Converter + ADC + 0x40012400 + + 0x0 + 0x400 + registers + + + ADC_COMP + ADC and COMP Interrupt through EXTI Lines 17 and 18 + 12 + + + + SR + desc SR + 0x0 + 32 + read-write + 0x0 + + + AWD + desc AWD + 0 + 0 + read-write + + + EOC + desc EOC + 1 + 1 + read-write + + + JEOC + desc JEOC + 2 + 2 + read-write + + + JSTRT + desc JSTRT + 3 + 3 + read-write + + + STRT + desc STRT + 4 + 4 + read-write + + + OVER + desc OVER + 5 + 5 + read-write + + + + + CR1 + desc CR1 + 0x4 + 32 + read-write + 0x0 + + + AWDCH + desc AWDCH + 4 + 0 + read-write + + + EOCIE + desc EOCIE + 5 + 5 + read-write + + + AWDIE + desc AWDIE + 6 + 6 + read-write + + + JEOCIE + desc JEOCIE + 7 + 7 + read-write + + + SCAN + desc SCAN + 8 + 8 + read-write + + + AWDSGL + desc AWDSGL + 9 + 9 + read-write + + + JAUTO + desc JAUTO + 10 + 10 + read-write + + + DISCEN + desc DISCEN + 11 + 11 + read-write + + + JDISCEN + desc JDISCEN + 12 + 12 + read-write + + + DISCNUM + desc DISCNUM + 15 + 13 + read-write + + + JAWDEN + desc JAWDEN + 22 + 22 + read-write + + + AWDEN + desc AWDEN + 23 + 23 + read-write + + + RESSEL + desc RESSEL + 25 + 24 + read-write + + + ADSTP + desc ADSTP + 27 + 27 + read-write + + + MSBSEL + desc MSBSEL + 28 + 28 + read-write + + + OVETIE + desc OVETIE + 29 + 29 + read-write + + + + + CR2 + desc CR2 + 0x8 + 32 + read-write + 0x0 + + + ADON + desc ADON + 0 + 0 + read-write + + + CONT + desc CONT + 1 + 1 + read-write + + + CAL + desc CAL + 2 + 2 + read-write + + + RSTCAL + desc RSTCAL + 3 + 3 + read-write + + + DMA + desc DMA + 8 + 8 + read-write + + + ALIGN + desc ALIGN + 11 + 11 + read-write + + + JEXTSEL + desc JEXTSEL + 14 + 12 + read-write + + + JEXTTRIG + desc JEXTTRIG + 15 + 15 + read-write + + + EXTSEL + desc EXTSEL + 19 + 17 + read-write + + + EXTTRIG + desc EXTTRIG + 20 + 20 + read-write + + + JSWSTART + desc JSWSTART + 21 + 21 + read-write + + + SWSTART + desc SWSTART + 22 + 22 + read-write + + + TSVREFE + desc TSVREFE + 23 + 23 + read-write + + + VERFBUFFEREN + desc VERFBUFFEREN + 25 + 25 + read-write + + + VERFBUFFERSEL + desc VERFBUFFERSEL + 27 + 26 + read-write + + + + + SMPR1 + desc SMPR1 + 0xC + 32 + read-write + 0x0 + + + SMP20 + desc SMP20 + 2 + 0 + read-write + + + SMP21 + desc SMP21 + 5 + 3 + read-write + + + SMP22 + desc SMP22 + 8 + 6 + read-write + + + SMP23 + desc SMP23 + 11 + 9 + read-write + + + + + SMPR2 + desc SMPR2 + 0x10 + 32 + read-write + 0x0 + + + SMP10 + desc SMP10 + 2 + 0 + read-write + + + SMP11 + desc SMP11 + 5 + 3 + read-write + + + SMP12 + desc SMP12 + 8 + 6 + read-write + + + SMP13 + desc SMP13 + 11 + 9 + read-write + + + SMP14 + desc SMP14 + 14 + 12 + read-write + + + SMP15 + desc SMP15 + 17 + 15 + read-write + + + SMP16 + desc SMP16 + 20 + 18 + read-write + + + SMP17 + desc SMP17 + 23 + 21 + read-write + + + SMP18 + desc SMP18 + 26 + 24 + read-write + + + SMP19 + desc SMP19 + 29 + 27 + read-write + + + + + SMPR3 + desc SMPR2 + 0x14 + 32 + read-write + 0x0 + + + SMP0 + desc SMP0 + 2 + 0 + read-write + + + SMP1 + desc SMP1 + 5 + 3 + read-write + + + SMP2 + desc SMP2 + 8 + 6 + read-write + + + SMP3 + desc SMP3 + 11 + 9 + read-write + + + SMP4 + desc SMP4 + 14 + 12 + read-write + + + SMP5 + desc SMP5 + 17 + 15 + read-write + + + SMP6 + desc SMP6 + 20 + 18 + read-write + + + SMP7 + desc SMP7 + 23 + 21 + read-write + + + SMP8 + desc SMP8 + 26 + 24 + read-write + + + SMP9 + desc SMP9 + 29 + 27 + read-write + + + + + JOFR1 + desc JOFR1 + 0x18 + 32 + read-write + 0x0 + + + JOFFSET1 + desc JOFFSET1 + 11 + 0 + read-write + + + + + JOFR2 + desc JOFR2 + 0x1C + 32 + read-write + 0x0 + + + JOFFSET2 + desc JOFFSET2 + 11 + 0 + read-write + + + + + JOFR3 + desc JOFR3 + 0x20 + 32 + read-write + 0x0 + + + JOFFSET3 + desc JOFFSET3 + 11 + 0 + read-write + + + + + JOFR4 + desc JOFR4 + 0x24 + 32 + read-write + 0x0 + + + JOFFSET4 + desc JOFFSET4 + 11 + 0 + read-write + + + + + HTR + desc HTR + 0x28 + 32 + read-write + 0x0 + + + HT + desc HT + 11 + 0 + read-write + + + + + LTR + desc LTR + 0x2C + 32 + read-write + 0x0 + + + LT + desc LT + 11 + 0 + read-write + + + + + SQR1 + desc SQR1 + 0x30 + 32 + read-write + 0x0 + + + SQ13 + desc SQ13 + 4 + 0 + read-write + + + SQ14 + desc SQ14 + 9 + 5 + read-write + + + SQ15 + desc SQ15 + 14 + 10 + read-write + + + SQ16 + desc SQ16 + 19 + 15 + read-write + + + L + desc L + 23 + 20 + read-write + + + + + SQR2 + desc SQR2 + 0x34 + 32 + read-write + 0x0 + + + SQ7 + desc SQ7 + 4 + 0 + read-write + + + SQ8 + desc SQ8 + 9 + 5 + read-write + + + SQ9 + desc SQ9 + 14 + 10 + read-write + + + SQ10 + desc SQ10 + 19 + 15 + read-write + + + SQ11 + desc SQ11 + 24 + 20 + read-write + + + SQ12 + desc SQ12 + 29 + 25 + read-write + + + + + SQR3 + desc SQR3 + 0x38 + 32 + read-write + 0x0 + + + SQ1 + desc SQ1 + 4 + 0 + read-write + + + SQ2 + desc SQ2 + 9 + 5 + read-write + + + SQ3 + desc SQ3 + 14 + 10 + read-write + + + SQ4 + desc SQ4 + 19 + 15 + read-write + + + SQ5 + desc SQ5 + 24 + 20 + read-write + + + SQ6 + desc SQ6 + 29 + 25 + read-write + + + + + JSQR + desc JSQR + 0x3C + 32 + read-write + 0x0 + + + JSQ1 + desc JSQ1 + 4 + 0 + read-write + + + JSQ2 + desc JSQ2 + 9 + 5 + read-write + + + JSQ3 + desc JSQ3 + 14 + 10 + read-write + + + JSQ4 + desc JSQ4 + 19 + 15 + read-write + + + JL + desc JL + 21 + 20 + read-write + + + + + JDR1 + desc JDR1 + 0x40 + 32 + read-only + 0x0 + + + JDR1 + desc JDR1 + 15 + 0 + read-only + + + + + JDR2 + desc JDR2 + 0x44 + 32 + read-only + 0x0 + + + JDR2 + desc JDR2 + 15 + 0 + read-only + + + + + JDR3 + desc JDR3 + 0x48 + 32 + read-only + 0x0 + + + JDR3 + desc JDR3 + 15 + 0 + read-only + + + + + JDR4 + desc JDR4 + 0x4C + 32 + read-only + 0x0 + + + JDR4 + desc JDR4 + 15 + 0 + read-only + + + + + DR + desc DR + 0x50 + 32 + read-only + 0x0 + + + DATA + desc DATA + 15 + 0 + read-only + + + + + CCSR + desc CCSR + 0x54 + 32 + read-write + 0x0 + + + CALSEL + desc CALSEL + 11 + 11 + read-write + + + CALSMP + desc CALSMP + 13 + 12 + read-write + + + CALBYP + desc CALBYP + 14 + 14 + read-write + + + CALSET + desc CALSET + 15 + 15 + read-write + + + CALFAIL + desc CALFAIL + 30 + 30 + read-write + + + CALON + desc CALON + 31 + 31 + read-only + + + + + CALRR1 + desc CALRR1 + 0x58 + 32 + read-only + 0x0 + + + CALC10OUT + desc CALC10OUT + 7 + 0 + read-only + + + CALC11OUT + desc CALC11OUT + 15 + 8 + read-only + + + CALBOUT + desc CALBOUT + 23 + 16 + read-only + + + + + CALRR2 + desc CALRR2 + 0x5C + 32 + read-only + 0x0 + + + CALC6OUT + desc CALC6OUT + 7 + 0 + read-only + + + CALC7OUT + desc CALC7OUT + 15 + 8 + read-only + + + CALC8OUT + desc CALC8OUT + 23 + 16 + read-only + + + CALC9OUT + desc CALC9OUT + 31 + 24 + read-only + + + + + CALFIR1 + desc CALFIR1 + 0x60 + 32 + read-write + 0x0 + + + CALC10IO + desc CALC10IO + 7 + 0 + read-write + + + CALC11IO + desc CALC11IO + 15 + 8 + read-write + + + CALBIO + desc CALBIO + 23 + 16 + read-write + + + + + CALFIR2 + desc CALFIR2 + 0x64 + 32 + read-write + 0x0 + + + CALC6IO + desc CALC6IO + 7 + 0 + read-write + + + CALC7IO + desc CALC7IO + 15 + 8 + read-write + + + CALC8IO + desc CALC8IO + 23 + 16 + read-write + + + CALC9IO + desc CALC9IO + 31 + 24 + read-write + + + + + + + CAN + desc CAN + CAN + 0x40006400 + + 0x0 + 0x400 + registers + + + CAN + CAN global Interrupt + 30 + + + + TSNCR + desc TSNCR + 0x0 + 32 + read-write + 0x2010801 + + + VERSION + desc VERSION + 15 + 0 + read-only + + + CES + desc CES + 16 + 16 + read-write + + + ROP + desc ROP + 17 + 17 + read-write + + + TMSE + desc TMSE + 18 + 18 + read-write + + + TSEN + desc TSEN + 24 + 24 + read-write + + + TSPOS + desc TSPOS + 25 + 25 + read-write + + + + + ACBTR + desc ACBTR + 0x4 + 32 + read-write + 0x5050008 + + + AC_SEG_1 + desc AC_SEG_1 + 8 + 0 + read-write + + + AC_SEG_2 + desc AC_SEG_2 + 22 + 16 + read-write + + + AC_SJW + desc AC_SJW + 30 + 24 + read-write + + + + + FDBTR + desc FDBTR + 0x8 + 32 + read-write + 0x2020003 + + + FD_SEG_1 + desc FD_SEG_1 + 7 + 0 + read-write + + + FD_SEG_2 + desc FD_SEG_2 + 22 + 16 + read-write + + + FD_SJW + desc FD_SJW + 30 + 24 + read-write + + + + + XLBTR + desc XLBTR + 0xC + 32 + read-write + 0x2020003 + + + XL_SEG_1 + desc XL_SEG_1 + 7 + 0 + read-write + + + XL_SEG_2 + desc XL_SEG_2 + 22 + 16 + read-write + + + XL_SJW + desc XL_SJW + 30 + 24 + read-write + + + + + RLSSP + desc RLSSP + 0x10 + 32 + read-write + 0x77000000 + + + PRESC + desc PRESC + 4 + 0 + read-write + + + FD_SSPOFF + desc FD_SSPOFF + 15 + 8 + read-write + + + XL_SSPOFF + desc XL_SSPOFF + 23 + 16 + read-write + + + REALIM + desc REALIM + 26 + 24 + read-write + + + RETLIM + desc RETLIM + 30 + 28 + read-write + + + + + IFR + desc IFR + 0x14 + 32 + read-write + 0x0 + + + AIF + desc AIF + 0 + 0 + read-write + + + EIF + desc EIF + 1 + 1 + read-write + + + TSIF + desc TSIF + 2 + 2 + read-write + + + TPIF + desc TPIF + 3 + 3 + read-write + + + RAFIF + desc RAFIF + 4 + 4 + read-write + + + RFIF + desc RFIF + 5 + 5 + read-write + + + ROIF + desc ROIF + 6 + 6 + read-write + + + RIF + desc RIF + 7 + 7 + read-write + + + BEIF + desc BEIF + 8 + 8 + read-write + + + ALIF + desc ALIF + 9 + 9 + read-write + + + EPIF + desc EPIF + 10 + 10 + read-write + + + TTIF + desc TTIF + 11 + 11 + read-write + + + TEIF + desc TEIF + 12 + 12 + read-write + + + WTIF + desc WTIF + 13 + 13 + read-write + + + MDWIF + desc MDWIF + 14 + 14 + read-write + + + MDEIF + desc MDEIF + 15 + 15 + read-write + + + MAEIF + desc MAEIF + 16 + 16 + read-write + + + SEIF + desc SEIF + 17 + 17 + read-write + + + SWIF + desc SWIF + 18 + 18 + read-write + + + EPASS + desc EPASS + 30 + 30 + read-only + + + EWARN + desc EWARN + 31 + 31 + read-only + + + + + IER + desc IER + 0x18 + 32 + read-write + 0x468FE + + + EIE + desc EIE + 1 + 1 + read-write + + + TSIE + desc TSIE + 2 + 2 + read-write + + + TPIE + desc TPIE + 3 + 3 + read-write + + + RAFIE + desc RAFIE + 4 + 4 + read-write + + + RFIE + desc RFIE + 5 + 5 + read-write + + + ROIE + desc ROIE + 6 + 6 + read-write + + + RIE + desc RIE + 7 + 7 + read-write + + + BEIE + desc BEIE + 8 + 8 + read-write + + + ALIE + desc ALIE + 9 + 9 + read-write + + + EPIE + desc EPIE + 10 + 10 + read-write + + + TTIE + desc TTIE + 11 + 11 + read-write + + + WTIE + desc WTIE + 13 + 13 + read-write + + + MDWIE + desc MDWIE + 14 + 14 + read-write + + + SWIE + desc SWIE + 18 + 18 + read-write + + + + + TSR + desc TSR + 0x1C + 32 + read-only + 0x0 + + + HANDLE_L + desc HANDLE_L + 7 + 0 + read-only + + + TSTAT_L + desc TSTAT_L + 10 + 8 + read-only + + + HANDLE_H + desc HANDLE_H + 23 + 16 + read-only + + + TSTAT_H + desc TSTAT_H + 26 + 24 + read-only + + + + + TTSL + desc TTSL + 0x20 + 32 + read-only + 0x2000000 + + + TTS + desc TTS + 31 + 0 + read-only + + + + + TTSH + desc TTSH + 0x24 + 32 + read-only + 0x2000000 + + + TTS + desc TTS + 31 + 0 + read-only + + + + + MCR + desc MCR + 0x28 + 32 + read-write + 0x900080 + + + BUSOFF + desc BUSOFF + 0 + 0 + read-write + + + LBMI + desc LBMI + 5 + 5 + read-write + + + LBME + desc LBME + 6 + 6 + read-write + + + RESET + desc RESET + 7 + 7 + read-write + + + TSA + desc TSA + 8 + 8 + read-write + + + TSALL + desc TSALL + 9 + 9 + read-write + + + TSONE + desc TSONE + 10 + 10 + read-write + + + TPA + desc TPA + 11 + 11 + read-write + + + TPE + desc TPE + 12 + 12 + read-write + + + STBY + desc STBY + 13 + 13 + read-write + + + LOM + desc LOM + 14 + 14 + read-write + + + TBSEL + desc TBSEL + 15 + 15 + read-write + + + TSSTAT + desc TSSTAT + 17 + 16 + read-only + + + TSFF + desc TSFF + 18 + 18 + read-only + + + TTTBM + desc TTTBM + 20 + 20 + read-write + + + TSMODE + desc TSMODE + 21 + 21 + read-write + + + TSNEXT + desc TSNEXT + 22 + 22 + read-write + + + FD_ISO + desc FD_ISO + 23 + 23 + read-write + + + RSTAT + desc RSTAT + 25 + 24 + read-only + + + RBALL + desc RBALL + 27 + 27 + read-write + + + RREL + desc RREL + 28 + 28 + read-write + + + ROV + desc ROV + 29 + 29 + read-only + + + ROM + desc ROM + 30 + 30 + read-write + + + SACK + desc SACK + 31 + 31 + read-write + + + + + WECR + desc WECR + 0x2C + 32 + read-write + 0x1B + + + EWL + desc EWL + 3 + 0 + read-write + + + AFWL + desc AFWL + 7 + 4 + read-write + + + ALC + desc ALC + 12 + 8 + read-only + + + KOER + desc KOER + 15 + 13 + read-only + + + RECNT + desc RECNT + 23 + 16 + read-only + + + TECNT + desc TECNT + 31 + 24 + read-only + + + + + REFMSG + desc REFMSG + 0x30 + 32 + read-write + 0x0 + + + REF_ID + desc REF_ID + 28 + 0 + read-write + + + REF_IDE + desc REF_IDE + 31 + 31 + read-write + + + + + TTCR + desc TTCR + 0x34 + 32 + read-write + 0x0 + + + TTPTR + desc TTPTR + 5 + 0 + read-write + + + TTYPE + desc TTYPE + 10 + 8 + read-write + + + TEW + desc TEW + 15 + 12 + read-write + + + TBPTR + desc TBPTR + 21 + 16 + read-write + + + TBF + desc TBF + 22 + 22 + read-write + + + TBE + desc TBE + 23 + 23 + read-write + + + TTEN + desc TTEN + 24 + 24 + read-write + + + T_PRESC + desc T_PRESC + 26 + 25 + read-write + + + + + TTTR + desc TTTR + 0x38 + 32 + read-write + 0xFFFF0000 + + + TT_TRIG + desc TT_TRIG + 15 + 0 + read-write + + + TT_WTRIG + desc TT_WTRIG + 31 + 16 + read-write + + + + + SCMS + desc SCMS + 0x3C + 32 + read-write + 0x0 + + + XMREN + desc XMREN + 0 + 0 + read-write + + + FSTIM + desc FSTIM + 3 + 1 + read-write + + + ACFA + desc ACFA + 24 + 24 + read-write + + + TXS + desc TXS + 25 + 25 + read-only + + + TXB + desc TXB + 26 + 26 + read-only + + + HELOC + desc HELOC + 28 + 27 + read-only + + + MPEN + desc MPEN + 31 + 31 + read-write + + + + + MESR + desc MESR + 0x40 + 32 + read-write + 0x0 + + + MEBP1 + desc MEBP1 + 5 + 0 + read-write + + + ME1EE + desc ME1EE + 6 + 6 + read-write + + + MEAEE + desc MEAEE + 7 + 7 + read-write + + + MEBP2 + desc MEBP2 + 13 + 8 + read-write + + + ME2EE + desc ME2EE + 14 + 14 + read-write + + + MEEEC + desc MEEEC + 19 + 16 + read-write + + + MENEC + desc MENEC + 23 + 20 + read-write + + + MEL + desc MEL + 25 + 24 + read-write + + + MES + desc MES + 26 + 26 + read-write + + + + + ACFCR + desc ACFCR + 0x44 + 32 + read-write + 0x10000 + + + ACFADR + desc ACFADR + 3 + 0 + read-write + + + AE_0 + desc AE_0 + 16 + 16 + read-write + + + AE_1 + desc AE_1 + 17 + 17 + read-write + + + AE_2 + desc AE_2 + 18 + 18 + read-write + + + AE_3 + desc AE_3 + 19 + 19 + read-write + + + AE_4 + desc AE_4 + 20 + 20 + read-write + + + AE_5 + desc AE_5 + 21 + 21 + read-write + + + AE_6 + desc AE_6 + 22 + 22 + read-write + + + AE_7 + desc AE_7 + 23 + 23 + read-write + + + AE_8 + desc AE_8 + 24 + 24 + read-write + + + AE_9 + desc AE_9 + 25 + 25 + read-write + + + AE_10 + desc AE_10 + 26 + 26 + read-write + + + AE_11 + desc AE_11 + 27 + 27 + read-write + + + AE_12 + desc AE_12 + 28 + 28 + read-write + + + AE_13 + desc AE_13 + 29 + 29 + read-write + + + AE_14 + desc AE_14 + 30 + 30 + read-write + + + AE_15 + desc AE_15 + 31 + 31 + read-write + + + + + PWMCR + desc PWMCR + 0xB8 + 32 + read-write + 0x2080400 + + + PWMO + desc PWMO + 5 + 0 + read-write + + + PWMS + desc PWMS + 13 + 8 + read-write + + + PWML + desc PWML + 21 + 16 + read-write + + + + + + + COMP1 + Comparator 1 + COMP + 0x40010200 + + 0x0 + 0x10 + registers + + + ADC_COMP + ADC and COMP Interrupt through EXTI Lines 17 and 18 + 12 + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + COMP_OUT + Comparator output status + 30 + 1 + + + VCSEL + VCSEL + 27 + 1 + + + VCDIV_EN + VCDIV_EN + 26 + 1 + + + VCDIV + VCDIV + 20 + 6 + + + PWRMODE + + Comparator power mode + selector + + 18 + 2 + + + HYST + + Comparator hysteresis enable + selector + + 16 + 1 + + + POLARITY + + Comparator polarity + selector + + 15 + 1 + + + WINMODE + + Comparator non-inverting input + selector for window mode + + 11 + 1 + + + INPSEL + + Comparator signal selector for + non-inverting input + + 6 + 4 + + + INMSEL + + Comparator signal selector for + inverting input INM + + 2 + 4 + + + EN + COMP enable bit + 0 + 1 + + + + + FR + FR + + Comparator Filter + register + + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT1 + Comparator filter and counter + 16 + 16 + + + FLTEN1 + Filter enable bit + 0 + 1 + + + + + + + COMP2 + Comparator2 + COMP + 0x40010210 + + 0x0 + 0x10 + registers + + + ADC_COMP + ADC and COMP Interrupt through EXTI Lines 17 and 18 + 12 + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + + Comparator power mode + selector + + 18 + 2 + + + POLARITY + + Comparator polarity + selector + + 15 + 1 + + + WINMODE + + Comparator non-inverting input + selector for window mode + + 11 + 1 + + + INPSEL + + Comparator signal selector for + non-inverting input + + 6 + 4 + + + INMSEL + + Comparator signal selector for + inverting input INM + + 2 + 4 + + + HYST + + Comparator hysteresis enable + selector + + 1 + 1 + + + EN + COMP enable bit + 0 + 1 + + + + + FR + FR + + Comparator Filter + register + + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT2 + Comparator filter and counter + 16 + 16 + + + FLTEN2 + Filter enable bit + 0 + 1 + + + + + + + COMP3 + Comparator3 + COMP + 0x40010220 + + 0x0 + 0x10 + registers + + + ADC_COMP + ADC and COMP Interrupt through EXTI Lines 17 and 18 + 12 + + + + CSR + CSR + COMP control and status register + 0x0 + 0x20 + read-write + 0x00000000 + + + COMP_OUT + Comparator output status + 30 + 1 + + + PWRMODE + + Comparator power mode + selector + + 18 + 2 + + + POLARITY + + Comparator polarity + selector + + 15 + 1 + + + INPSEL + + Comparator signal selector for + non-inverting input + + 6 + 4 + + + INMSEL + + Comparator signal selector for + inverting input INM + + 2 + 4 + + + HYST + + Comparator hysteresis enable + selector + + 1 + 1 + + + EN + COMP enable bit + 0 + 1 + + + + + FR + FR + + Comparator Filter + register + + 0x4 + 0x20 + read-write + 0x00000000 + + + FLTCNT3 + Comparator filter and counter + 16 + 16 + + + FLTEN3 + Filter enable bit + 0 + 1 + + + + + + + CRC + CRC calculation unit + CRC + 0x40023000 + + 0x0 + 0x400 + registers + + + + DR + DR + Data register + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + DR + Data Register + 0 + 32 + + + + + IDR + IDR + Independent Data register + 0x4 + 0x20 + read-write + 0x00000000 + + + IDR + Independent Data register + 0 + 8 + + + + + CR + CR + Control register + 0x8 + 0x20 + write-only + 0x00000000 + + + RESET + Reset bit + 0 + 1 + + + + + + + CTC + desc CTC + CTC + 0x40006C00 + + 0x0 + 0x400 + registers + + + RCC_CTC + RCC and CTC global Interrupts + 4 + + + + CTL0 + desc CTL0 + 0x0 + 32 + read-write + 0x2000 + + + CKOKIE + desc CKOKIE + 0 + 0 + read-write + + + CKWARNIE + desc CKWARNIE + 1 + 1 + read-write + + + ERRIE + desc ERRIE + 2 + 2 + read-write + + + EREFIE + desc EREFIE + 3 + 3 + read-write + + + CNTEN + desc CNTEN + 5 + 5 + read-write + + + AUTOTRIM + desc AUTOTRIM + 6 + 6 + read-write + + + SWREFPUL + desc SWREFPUL + 7 + 7 + write-only + + + TRIMVALUE + desc TRIMVALUE + 13 + 8 + read-write + + + + + CTL1 + desc CTL1 + 0x4 + 32 + read-write + 0x2022BB7F + + + RLVALUE + desc RLVALUE + 15 + 0 + read-write + + + CKLIM + desc CKLIM + 23 + 16 + read-write + + + REFPSC + desc REFPSC + 26 + 24 + read-write + + + REFSEL + desc REFSEL + 29 + 28 + read-write + + + REFPOL + desc REFPOL + 31 + 31 + read-write + + + + + SR + desc SR + 0x8 + 32 + read-only + 0x0 + + + CKOKIF + desc CKOKIF + 0 + 0 + read-only + + + CKWARNIF + desc CKWARNIF + 1 + 1 + read-only + + + ERRIF + desc ERRIF + 2 + 2 + read-only + + + EREFIF + desc EREFIF + 3 + 3 + read-only + + + CKERR + desc CKERR + 8 + 8 + read-only + + + REFMISS + desc REFMISS + 9 + 9 + read-only + + + TRIMERR + desc TRIMERR + 10 + 10 + read-only + + + REFDIR + desc REFDIR + 15 + 15 + read-only + + + REFCAP + desc REFCAP + 31 + 16 + read-only + + + + + INTC + desc INTC + 0xC + 32 + write-only + 0x0 + + + CKOKIC + desc CKOKIC + 0 + 0 + write-only + + + CKWARNIC + desc CKWARNIC + 1 + 1 + write-only + + + ERRIC + desc ERRIC + 2 + 2 + write-only + + + EREFIC + desc EREFIC + 3 + 3 + write-only + + + + + + + DAC + desc DAC + DAC + 0x40007400 + + 0x0 + 0x400 + registers + + + TIM6_LPTIM1_DAC + TIM6, LPTIM1, DAC global Interrupts + 17 + + + + CR + desc CR + 0x0 + 32 + read-write + 0x0 + + + EN1 + desc EN1 + 0 + 0 + read-write + + + BOFF1 + desc BOFF1 + 1 + 1 + read-write + + + TEN1 + desc TEN1 + 2 + 2 + read-write + + + TSEL1 + desc TSEL1 + 5 + 3 + read-write + + + WAVE1 + desc WAVE1 + 7 + 6 + read-write + + + MAMP1 + desc MAMP1 + 11 + 8 + read-write + + + DMAEN1 + desc DMAEN1 + 12 + 12 + read-write + + + DMAUDRIE1 + desc DMAUDRIE1 + 13 + 13 + read-write + + + DAC1CEN + desc DAC1CEN + 14 + 14 + read-write + + + EN2 + desc EN2 + 16 + 16 + read-write + + + BOFF2 + desc BOFF2 + 17 + 17 + read-write + + + TEN2 + desc TEN2 + 18 + 18 + read-write + + + TSEL2 + desc TSEL2 + 21 + 19 + read-write + + + WAVE2 + desc WAVE2 + 23 + 22 + read-write + + + MAMP2 + desc MAMP2 + 27 + 24 + read-write + + + DMAEN2 + desc DMAEN2 + 28 + 28 + read-write + + + DMAUDRIE2 + desc DMAUDRIE2 + 29 + 29 + read-write + + + DAC2CEN + desc DAC2CEN + 30 + 30 + read-write + + + + + SWTRIGR + desc SWTRIGR + 0x4 + 32 + write-only + 0x0 + + + SWTRIG1 + desc SWTRIG1 + 0 + 0 + write-only + + + SWTRIG2 + desc SWTRIG2 + 1 + 1 + write-only + + + + + DHR12R1 + desc DHR12R1 + 0x8 + 32 + read-write + 0x0 + + + DACC1DHR + desc DACC1DHR + 11 + 0 + read-write + + + + + DHR12L1 + desc DHR12L1 + 0xC + 32 + read-write + 0x0 + + + DACC1DHR + desc DACC1DHR + 14 + 3 + read-write + + + + + DHR8R1 + desc DHR8R1 + 0x10 + 32 + read-write + 0x0 + + + DACC1DHR + desc DACC1DHR + 7 + 0 + read-write + + + + + DHR12R2 + desc DHR12R2 + 0x14 + 32 + read-write + 0x0 + + + DACC2DHR + desc DACC2DHR + 11 + 0 + read-write + + + + + DHR12L2 + desc DHR12L2 + 0x18 + 32 + read-write + 0x0 + + + DACC2DHR + desc DACC2DHR + 15 + 4 + read-write + + + + + DHR8R2 + desc DHR8R2 + 0x1C + 32 + read-write + 0x0 + + + DACC2DHR + desc DACC2DHR + 7 + 0 + read-write + + + + + DHR12RD + desc DHR12RD + 0x20 + 32 + read-write + 0x0 + + + DACC1DHR + desc DACC1DHR + 11 + 0 + read-write + + + DACC2DHR + desc DACC2DHR + 27 + 16 + read-write + + + + + DHR12LD + desc DHR12LD + 0x24 + 32 + read-write + 0x0 + + + DACC1DHR + desc DACC1DHR + 15 + 4 + read-write + + + DACC2DHR + desc DACC2DHR + 31 + 20 + read-write + + + + + DHR8RD + desc DHR8RD + 0x28 + 32 + read-write + 0x0 + + + DACC1DHR + desc DACC1DHR + 7 + 0 + read-write + + + DACC2DHR + desc DACC2DHR + 15 + 8 + read-write + + + + + DOR1 + desc DOR1 + 0x2C + 32 + read-only + 0x0 + + + DACC1DOR + desc DACC1DOR + 11 + 0 + read-only + + + + + DOR2 + desc DOR2 + 0x30 + 32 + read-only + 0x0 + + + DACC2DOR + desc DACC2DOR + 11 + 0 + read-only + + + + + SR + desc SR + 0x34 + 32 + read-only + 0x0 + + + DMAUDR1 + desc DMAUDR1 + 13 + 13 + read-only + + + DMAUDR2 + desc DMAUDR2 + 29 + 29 + read-only + + + + + + + DBGMCU + Debug support + DBGMCU + 0x40015800 + + 0x0 + 0x400 + registers + + + + IDCODE + IDCODE + MCU Device ID Code Register + 0x0 + 0x20 + read-only + 0x0 + + + DBG_ID + DBG_ID + 0 + 16 + + + + + CR + CR + + Debug MCU Configuration + Register + + 0x4 + 0x20 + read-write + 0x0 + + + DBG_SLEEP + Debug Sleep Mode + 0 + 1 + + + DBG_STOP + Debug Stop Mode + 1 + 1 + + + + + APB_FZ1 + APB_FZ1 + APB Freeze Register1 + 0x8 + 0x20 + read-write + 0x0 + + + DBG_TIMER2_STOP + + Debug Timer 2 stopped when Core is + halted + + 0 + 1 + + + DBG_TIMER3_STOP + + Debug Timer 3 stopped when Core is + halted + + 1 + 1 + + + DBG_TIMER6_STOP + + Debug Timer 6 stopped when Core is + halted + + 4 + 1 + + + DBG_TIMER7_STOP + + Debug Timer 7 stopped when Core is + halted + + 5 + 1 + + + DBG_RTC_STOP + + Debug RTC stopped when Core is + halted + + 10 + 1 + + + DBG_WWDG_STOP + + Debug Window Wachdog stopped when Core + is halted + + 11 + 1 + + + DBG_IWDG_STOP + + Debug Independent Wachdog stopped when + Core is halted + + 12 + 1 + + + DBG_CAN_STOP + DBG_CAN_STOP + 19 + 1 + + + DBG_I2C1_SMBUS_TIMEOUT + DBG_I2C1_SMBUS_TIMEOUT + 21 + 1 + + + DBG_I2C2_SMBUS_TIMEOUT + DBG_I2C2_SMBUS_TIMEOUT + 22 + 1 + read-only + + + DBG_LPTIM_STOP + + Debug LPTIM stopped when Core is + halted + + 31 + 1 + + + + + APB_FZ2 + APB_FZ2 + APB Freeze Register2 + 0xC + 0x20 + read-write + 0x0 + + + DBG_TIMER1_STOP + + Debug Timer 1 stopped when Core is + halted + + 11 + 1 + + + DBG_TIMER14_STOP + + Debug Timer 14 stopped when Core is + halted + + 15 + 1 + + + DBG_TIMER15_STOP + + Debug Timer 15 stopped when Core is + halted + + 16 + 1 + + + DBG_TIMER16_STOP + + Debug Timer 16 stopped when Core is + halted + + 17 + 1 + + + DBG_TIMER17_STOP + + Debug Timer 17 stopped when Core is + halted + + 18 + 1 + + + + + + + DV + Divider + DV + 0x40023800 + + 0x0 + 0x400 + registers + + + + DEND + DEND + Dividend + 0x0 + 0x20 + read-write + 0x0 + + + DEND + Dividend + 0 + 32 + + + + + SOR + SOR + Divisor + 0x4 + 0x20 + read-write + 0x0 + + + SOR + Divisor + 0 + 32 + + + + + QUOT + QUOT + Quotient + 0x8 + 0x20 + read-only + 0x0 + + + QUOT + Quotient + 0 + 32 + + + + + REMA + REMA + Remainder + 0xC + 0x20 + read-only + 0x0 + + + REMA + Remainder + 0 + 32 + read-only + + + + + SIGN + SIGN + des SIGN + 0x10 + 0x20 + read-write + 0x0 + + + DIV_SIGN + des DIV_SIGN + 0 + 1 + + + + + STAT + STAT + des SIGN + 0x14 + 0x20 + read-write + 0x0 + + + DIV_END + des DIV_END + 0 + 1 + + + DIV_ZERO + des DIV_ZERO + 1 + 1 + + + + + + + DMA + Direct memory access + DMA + 0x40020000 + + 0x0 + 0x400 + registers + + + DMA1_Channel1 + DMA1 Channel 1 Interrupt + 9 + + + DMA1_Channel2_3 + DMA1 Channel 2 and Channel 3 Interrupt + 10 + + + DMA1_Channel4_5_6_7 + DMA1 Channel 4, 5, 6, 7 Interrupts + 11 + + + + ISR + desc ISR + 0x0 + 32 + read-only + 0x0 + + + GIF1 + desc GIF1 + 0 + 0 + read-only + + + TCIF1 + desc TCIF1 + 1 + 1 + read-only + + + HTIF1 + desc HTIF1 + 2 + 2 + read-only + + + TEIF1 + desc TEIF1 + 3 + 3 + read-only + + + GIF2 + desc GIF2 + 4 + 4 + read-only + + + TCIF2 + desc TCIF2 + 5 + 5 + read-only + + + HTIF2 + desc HTIF2 + 6 + 6 + read-only + + + TEIF2 + desc TEIF2 + 7 + 7 + read-only + + + GIF3 + desc GIF3 + 8 + 8 + read-only + + + TCIF3 + desc TCIF3 + 9 + 9 + read-only + + + HTIF3 + desc HTIF3 + 10 + 10 + read-only + + + TEIF3 + desc TEIF3 + 11 + 11 + read-only + + + GIF4 + desc GIF4 + 12 + 12 + read-only + + + TCIF4 + desc TCIF4 + 13 + 13 + read-only + + + HTIF4 + desc HTIF4 + 14 + 14 + read-only + + + TEIF4 + desc TEIF4 + 15 + 15 + read-only + + + GIF5 + desc GIF5 + 16 + 16 + read-only + + + TCIF5 + desc TCIF5 + 17 + 17 + read-only + + + HTIF5 + desc HTIF5 + 18 + 18 + read-only + + + TEIF5 + desc TEIF5 + 19 + 19 + read-only + + + GIF6 + desc GIF6 + 20 + 20 + read-only + + + TCIF6 + desc TCIF6 + 21 + 21 + read-only + + + HTIF6 + desc HTIF6 + 22 + 22 + read-only + + + TEIF6 + desc TEIF6 + 23 + 23 + read-only + + + GIF7 + desc GIF7 + 24 + 24 + read-only + + + TCIF7 + desc TCIF7 + 25 + 25 + read-only + + + HTIF7 + desc HTIF7 + 26 + 26 + read-only + + + TEIF7 + desc TEIF7 + 27 + 27 + read-only + + + + + IFCR + desc IFCR + 0x4 + 32 + write-only + 0x0 + + + CGIF1 + desc CGIF1 + 0 + 0 + write-only + + + CTCIF1 + desc CTCIF1 + 1 + 1 + write-only + + + CHTIF1 + desc CHTIF1 + 2 + 2 + write-only + + + CTEIF1 + desc CTEIF1 + 3 + 3 + write-only + + + CGIF2 + desc CGIF2 + 4 + 4 + write-only + + + CTCIF2 + desc CTCIF2 + 5 + 5 + write-only + + + CHTIF2 + desc CHTIF2 + 6 + 6 + write-only + + + CTEIF2 + desc CTEIF2 + 7 + 7 + write-only + + + CGIF3 + desc CGIF3 + 8 + 8 + write-only + + + CTCIF3 + desc CTCIF3 + 9 + 9 + write-only + + + CHTIF3 + desc CHTIF3 + 10 + 10 + write-only + + + CTEIF3 + desc CTEIF3 + 11 + 11 + write-only + + + CGIF4 + desc CGIF4 + 12 + 12 + write-only + + + CTCIF4 + desc CTCIF4 + 13 + 13 + write-only + + + CHTIF4 + desc CHTIF4 + 14 + 14 + write-only + + + CTEIF4 + desc CTEIF4 + 15 + 15 + write-only + + + CGIF5 + desc CGIF5 + 16 + 16 + write-only + + + CTCIF5 + desc CTCIF5 + 17 + 17 + write-only + + + CHTIF5 + desc CHTIF5 + 18 + 18 + write-only + + + CTEIF5 + desc CTEIF5 + 19 + 19 + write-only + + + CGIF6 + desc CGIF6 + 20 + 20 + write-only + + + CTCIF6 + desc CTCIF6 + 21 + 21 + write-only + + + CHTIF6 + desc CHTIF6 + 22 + 22 + write-only + + + CTEIF6 + desc CTEIF6 + 23 + 23 + write-only + + + CGIF7 + desc CGIF7 + 24 + 24 + write-only + + + CTCIF7 + desc CTCIF7 + 25 + 25 + write-only + + + CHTIF7 + desc CHTIF7 + 26 + 26 + write-only + + + CTEIF7 + desc CTEIF7 + 27 + 27 + write-only + + + + + CCR1 + desc CCR1 + 0x8 + 32 + read-write + 0x0 + + + EN + desc EN + 0 + 0 + read-write + + + TCIE + desc TCIE + 1 + 1 + read-write + + + HTIE + desc HTIE + 2 + 2 + read-write + + + TEIE + desc TEIE + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CIRC + desc CIRC + 5 + 5 + read-write + + + PINC + desc PINC + 6 + 6 + read-write + + + MINC + desc MINC + 7 + 7 + read-write + + + PSIZE + desc PSIZE + 9 + 8 + read-write + + + MSIZE + desc MSIZE + 11 + 10 + read-write + + + PL + desc PL + 13 + 12 + read-write + + + MEM2MEM + desc MEM2MEM + 14 + 14 + read-write + + + + + CNDTR1 + desc CNDTR1 + 0xC + 32 + read-write + 0x0 + + + NDT + desc NDT + 15 + 0 + read-write + + + + + CPAR1 + desc CPAR1 + 0x10 + 32 + read-write + 0x0 + + + PA + desc PA + 31 + 0 + read-write + + + + + CMAR1 + desc CMAR1 + 0x14 + 32 + read-write + 0x0 + + + MA + desc MA + 31 + 0 + read-write + + + + + CCR2 + desc CCR2 + 0x1C + 32 + read-write + 0x0 + + + EN + desc EN + 0 + 0 + read-write + + + TCIE + desc TCIE + 1 + 1 + read-write + + + HTIE + desc HTIE + 2 + 2 + read-write + + + TEIE + desc TEIE + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CIRC + desc CIRC + 5 + 5 + read-write + + + PINC + desc PINC + 6 + 6 + read-write + + + MINC + desc MINC + 7 + 7 + read-write + + + PSIZE + desc PSIZE + 9 + 8 + read-write + + + MSIZE + desc MSIZE + 11 + 10 + read-write + + + PL + desc PL + 13 + 12 + read-write + + + MEM2MEM + desc MEM2MEM + 14 + 14 + read-write + + + + + CNDTR2 + desc CNDTR2 + 0x20 + 32 + read-write + 0x0 + + + NDT + desc NDT + 15 + 0 + read-write + + + + + CPAR2 + desc CPAR2 + 0x24 + 32 + read-write + 0x0 + + + PA + desc PA + 31 + 0 + read-write + + + + + CMAR2 + desc CMAR2 + 0x28 + 32 + read-write + 0x0 + + + MA + desc MA + 31 + 0 + read-write + + + + + CCR3 + desc CCR3 + 0x30 + 32 + read-write + 0x0 + + + EN + desc EN + 0 + 0 + read-write + + + TCIE + desc TCIE + 1 + 1 + read-write + + + HTIE + desc HTIE + 2 + 2 + read-write + + + TEIE + desc TEIE + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CIRC + desc CIRC + 5 + 5 + read-write + + + PINC + desc PINC + 6 + 6 + read-write + + + MINC + desc MINC + 7 + 7 + read-write + + + PSIZE + desc PSIZE + 9 + 8 + read-write + + + MSIZE + desc MSIZE + 11 + 10 + read-write + + + PL + desc PL + 13 + 12 + read-write + + + MEM2MEM + desc MEM2MEM + 14 + 14 + read-write + + + + + CNDTR3 + desc CNDTR3 + 0x34 + 32 + read-write + 0x0 + + + NDT + desc NDT + 15 + 0 + read-write + + + + + CPAR3 + desc CPAR3 + 0x38 + 32 + read-write + 0x0 + + + PA + desc PA + 31 + 0 + read-write + + + + + CMAR3 + desc CMAR3 + 0x3C + 32 + read-write + 0x0 + + + MA + desc MA + 31 + 0 + read-write + + + + + CCR4 + desc CCR4 + 0x44 + 32 + read-write + 0x0 + + + EN + desc EN + 0 + 0 + read-write + + + TCIE + desc TCIE + 1 + 1 + read-write + + + HTIE + desc HTIE + 2 + 2 + read-write + + + TEIE + desc TEIE + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CIRC + desc CIRC + 5 + 5 + read-write + + + PINC + desc PINC + 6 + 6 + read-write + + + MINC + desc MINC + 7 + 7 + read-write + + + PSIZE + desc PSIZE + 9 + 8 + read-write + + + MSIZE + desc MSIZE + 11 + 10 + read-write + + + PL + desc PL + 13 + 12 + read-write + + + MEM2MEM + desc MEM2MEM + 14 + 14 + read-write + + + + + CNDTR4 + desc CNDTR4 + 0x48 + 32 + read-write + 0x0 + + + NDT + desc NDT + 15 + 0 + read-write + + + + + CPAR4 + desc CPAR4 + 0x4C + 32 + read-write + 0x0 + + + PA + desc PA + 31 + 0 + read-write + + + + + CMAR4 + desc CMAR4 + 0x50 + 32 + read-write + 0x0 + + + MA + desc MA + 31 + 0 + read-write + + + + + CCR5 + desc CCR5 + 0x58 + 32 + read-write + 0x0 + + + EN + desc EN + 0 + 0 + read-write + + + TCIE + desc TCIE + 1 + 1 + read-write + + + HTIE + desc HTIE + 2 + 2 + read-write + + + TEIE + desc TEIE + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CIRC + desc CIRC + 5 + 5 + read-write + + + PINC + desc PINC + 6 + 6 + read-write + + + MINC + desc MINC + 7 + 7 + read-write + + + PSIZE + desc PSIZE + 9 + 8 + read-write + + + MSIZE + desc MSIZE + 11 + 10 + read-write + + + PL + desc PL + 13 + 12 + read-write + + + MEM2MEM + desc MEM2MEM + 14 + 14 + read-write + + + + + CNDTR5 + desc CNDTR5 + 0x5C + 32 + read-write + 0x0 + + + NDT + desc NDT + 15 + 0 + read-write + + + + + CPAR5 + desc CPAR5 + 0x60 + 32 + read-write + 0x0 + + + PA + desc PA + 31 + 0 + read-write + + + + + CMAR5 + desc CMAR5 + 0x64 + 32 + read-write + 0x0 + + + MA + desc MA + 31 + 0 + read-write + + + + + CCR6 + desc CCR6 + 0x6C + 32 + read-write + 0x0 + + + EN + desc EN + 0 + 0 + read-write + + + TCIE + desc TCIE + 1 + 1 + read-write + + + HTIE + desc HTIE + 2 + 2 + read-write + + + TEIE + desc TEIE + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CIRC + desc CIRC + 5 + 5 + read-write + + + PINC + desc PINC + 6 + 6 + read-write + + + MINC + desc MINC + 7 + 7 + read-write + + + PSIZE + desc PSIZE + 9 + 8 + read-write + + + MSIZE + desc MSIZE + 11 + 10 + read-write + + + PL + desc PL + 13 + 12 + read-write + + + MEM2MEM + desc MEM2MEM + 14 + 14 + read-write + + + + + CNDTR6 + desc CNDTR6 + 0x70 + 32 + read-write + 0x0 + + + NDT + desc NDT + 15 + 0 + read-write + + + + + CPAR6 + desc CPAR6 + 0x74 + 32 + read-write + 0x0 + + + PA + desc PA + 31 + 0 + read-write + + + + + CMAR6 + desc CMAR6 + 0x78 + 32 + read-write + 0x0 + + + MA + desc MA + 31 + 0 + read-write + + + + + CCR7 + desc CCR7 + 0x80 + 32 + read-write + 0x0 + + + EN + desc EN + 0 + 0 + read-write + + + TCIE + desc TCIE + 1 + 1 + read-write + + + HTIE + desc HTIE + 2 + 2 + read-write + + + TEIE + desc TEIE + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CIRC + desc CIRC + 5 + 5 + read-write + + + PINC + desc PINC + 6 + 6 + read-write + + + MINC + desc MINC + 7 + 7 + read-write + + + PSIZE + desc PSIZE + 9 + 8 + read-write + + + MSIZE + desc MSIZE + 11 + 10 + read-write + + + PL + desc PL + 13 + 12 + read-write + + + MEM2MEM + desc MEM2MEM + 14 + 14 + read-write + + + + + CNDTR7 + desc CNDTR7 + 0x84 + 32 + read-write + 0x0 + + + NDT + desc NDT + 15 + 0 + read-write + + + + + CPAR7 + desc CPAR7 + 0x88 + 32 + read-write + 0x0 + + + PA + desc PA + 31 + 0 + read-write + + + + + CMAR7 + desc CMAR7 + 0x8C + 32 + read-write + 0x0 + + + MA + desc MA + 31 + 0 + read-write + + + + + + + EXTI + + External interrupt/event + controller + + EXTI + 0x40021800 + + 0x0 + 0x400 + registers + + + PVD + PVD Interrupt through EXTI Lines 16 + 1 + + + EXTI0_1 + EXTI Line 0 and 1 Interrupt + 5 + + + EXTI2_3 + EXTI Line 2 and 3 Interrupt + 6 + + + EXTI4_15 + EXTI Line 4 to 15 Interrupt + 7 + + + + RTSR + RTSR + + EXTI rising trigger selection + register + + 0x0 + 0x20 + read-write + 0x00000000 + + + RT20 + + Rising trigger event configuration bit + of Configurable Event input + + 20 + 1 + + + RT19 + + Rising trigger event configuration bit + of Configurable Event input + + 19 + 1 + + + RT18 + + Rising trigger event configuration bit + of Configurable Event input + + 18 + 1 + + + RT17 + + Rising trigger event configuration bit + of Configurable Event input + + 17 + 1 + + + RT16 + + Rising trigger event configuration bit + of Configurable Event input + + 16 + 1 + + + RT15 + + Rising trigger event configuration bit + of Configurable Event input + + 15 + 1 + + + RT14 + + Rising trigger event configuration bit + of Configurable Event input + + 14 + 1 + + + RT13 + + Rising trigger event configuration bit + of Configurable Event input + + 13 + 1 + + + RT12 + + Rising trigger event configuration bit + of Configurable Event input + + 12 + 1 + + + RT11 + + Rising trigger event configuration bit + of Configurable Event input + + 11 + 1 + + + RT10 + + Rising trigger event configuration bit + of Configurable Event input + + 10 + 1 + + + RT9 + + Rising trigger event configuration bit + of Configurable Event input + + 9 + 1 + + + RT8 + + Rising trigger event configuration bit + of Configurable Event input + + 8 + 1 + + + RT7 + + Rising trigger event configuration bit + of Configurable Event input + + 7 + 1 + + + RT6 + + Rising trigger event configuration bit + of Configurable Event input + + 6 + 1 + + + RT5 + + Rising trigger event configuration bit + of Configurable Event input + + 5 + 1 + + + RT4 + + Rising trigger event configuration bit + of Configurable Event input + + 4 + 1 + + + RT3 + + Rising trigger event configuration bit + of Configurable Event input + + 3 + 1 + + + RT2 + + Rising trigger event configuration bit + of Configurable Event input + + 2 + 1 + + + RT1 + + Rising trigger event configuration bit + of Configurable Event input + + 1 + 1 + + + RT0 + + Rising trigger event configuration bit + of Configurable Event input + + 0 + 1 + + + + + FTSR + FTSR + + EXTI falling trigger selection + register + + 0x4 + 0x20 + read-write + 0x00000000 + + + FT20 + + Falling trigger event configuration bit + of Configurable Event input + + 20 + 1 + + + FT19 + + Falling trigger event configuration bit + of Configurable Event input + + 19 + 1 + + + FT18 + + Falling trigger event configuration bit + of Configurable Event input + + 18 + 1 + + + FT17 + + Falling trigger event configuration bit + of Configurable Event input + + 17 + 1 + + + FT16 + + Falling trigger event configuration bit + of Configurable Event input + + 16 + 1 + + + FT15 + + Falling trigger event configuration bit + of Configurable Event input + + 15 + 1 + + + FT14 + + Falling trigger event configuration bit + of Configurable Event input + + 14 + 1 + + + FT13 + + Falling trigger event configuration bit + of Configurable Event input + + 13 + 1 + + + FT12 + + Falling trigger event configuration bit + of Configurable Event input + + 12 + 1 + + + FT11 + + Falling trigger event configuration bit + of Configurable Event input + + 11 + 1 + + + FT10 + + Falling trigger event configuration bit + of Configurable Event input + + 10 + 1 + + + FT9 + + Falling trigger event configuration bit + of Configurable Event input + + 9 + 1 + + + FT8 + + Falling trigger event configuration bit + of Configurable Event input + + 8 + 1 + + + FT7 + + Falling trigger event configuration bit + of Configurable Event input + + 7 + 1 + + + FT6 + + Falling trigger event configuration bit + of Configurable Event input + + 6 + 1 + + + FT5 + + Falling trigger event configuration bit + of Configurable Event input + + 5 + 1 + + + FT4 + + Falling trigger event configuration bit + of Configurable Event input + + 4 + 1 + + + FT3 + + Falling trigger event configuration bit + of Configurable Event input + + 3 + 1 + + + FT2 + + Falling trigger event configuration bit + of Configurable Event input + + 2 + 1 + + + FT1 + + Falling trigger event configuration bit + of Configurable Event input + + 1 + 1 + + + FT0 + + Falling trigger event configuration bit + of Configurable Event input + + 0 + 1 + + + + + SWIER + SWIER + + EXTI software interrupt event + register + + 0x8 + 0x20 + read-write + 0x00000000 + + + SWI20 + + Rising trigger event configuration bit + of Configurable Event input + + 20 + 1 + + + SWI19 + + Rising trigger event configuration bit + of Configurable Event input + + 19 + 1 + + + SWI18 + + Rising trigger event configuration bit + of Configurable Event input + + 18 + 1 + + + SWI17 + + Rising trigger event configuration bit + of Configurable Event input + + 17 + 1 + + + SWI16 + + Rising trigger event configuration bit + of Configurable Event input + + 16 + 1 + + + SWI15 + + Rising trigger event configuration bit + of Configurable Event input + + 15 + 1 + + + SWI14 + + Rising trigger event configuration bit + of Configurable Event input + + 14 + 1 + + + SWI13 + + Rising trigger event configuration bit + of Configurable Event input + + 13 + 1 + + + SWI12 + + Rising trigger event configuration bit + of Configurable Event input + + 12 + 1 + + + SWI11 + + Rising trigger event configuration bit + of Configurable Event input + + 11 + 1 + + + SWI10 + + Rising trigger event configuration bit + of Configurable Event input + + 10 + 1 + + + SWI9 + + Rising trigger event configuration bit + of Configurable Event input + + 9 + 1 + + + SWI8 + + Rising trigger event configuration bit + of Configurable Event input + + 8 + 1 + + + SWI7 + + Rising trigger event configuration bit + of Configurable Event input + + 7 + 1 + + + SWI6 + + Rising trigger event configuration bit + of Configurable Event input + + 6 + 1 + + + SWI5 + + Rising trigger event configuration bit + of Configurable Event input + + 5 + 1 + + + SWI4 + + Rising trigger event configuration bit + of Configurable Event input + + 4 + 1 + + + SWI3 + + Rising trigger event configuration bit + of Configurable Event input + + 3 + 1 + + + SWI2 + + Rising trigger event configuration bit + of Configurable Event input + + 2 + 1 + + + SWI1 + + Rising trigger event configuration bit + of Configurable Event input + + 1 + 1 + + + SWI0 + + Rising trigger event configuration bit + of Configurable Event input + + 0 + 1 + + + + + PR + PR + + EXTI pending register + + 0xC + 0x20 + read-write + 0x00000000 + + + PR20 + + configurable event inputs x rising edge + Pending bit. + + 20 + 1 + + + PR19 + + configurable event inputs x rising edge + Pending bit. + + 19 + 1 + + + PR18 + + configurable event inputs x rising edge + Pending bit. + + 18 + 1 + + + PR17 + + configurable event inputs x rising edge + Pending bit. + + 17 + 1 + + + PR16 + + configurable event inputs x rising edge + Pending bit. + + 16 + 1 + + + PR15 + + configurable event inputs x rising edge + Pending bit. + + 15 + 1 + + + PR14 + + configurable event inputs x rising edge + Pending bit. + + 14 + 1 + + + PR13 + + configurable event inputs x rising edge + Pending bit + + 13 + 1 + + + PR12 + + configurable event inputs x rising edge + Pending bit. + + 12 + 1 + + + PR11 + + configurable event inputs x rising edge + Pending bit. + + 11 + 1 + + + PR10 + + configurable event inputs x rising edge + Pending bit. + + 10 + 1 + + + PR9 + + configurable event inputs x rising edge + Pending bit. + + 9 + 1 + + + PR8 + + configurable event inputs x rising edge + Pending bit. + + 8 + 1 + + + PR7 + + configurable event inputs x rising edge + Pending bit. + + 7 + 1 + + + PR6 + + configurable event inputs x rising edge + Pending bit. + + 6 + 1 + + + PR5 + + configurable event inputs x rising edge + Pending bit. + + 5 + 1 + + + PR4 + + configurable event inputs x rising edge + Pending bit. + + 4 + 1 + + + PR3 + + configurable event inputs x rising edge + Pending bit. + + 3 + 1 + + + PR2 + + configurable event inputs x rising edge + Pending bit. + + 2 + 1 + + + PR1 + + configurable event inputs x rising edge + Pending bit. + + 1 + 1 + + + PR0 + + configurable event inputs x rising edge + Pending bit. + + 0 + 1 + + + + + EXTICR1 + EXTICR1 + + EXTI external interrupt selection + register + + 0x60 + 0x20 + read-write + 0x00000000 + + + EXTI3 + GPIO port selection + 24 + 2 + + + EXTI2 + GPIO port selection + 16 + 2 + + + EXTI1 + GPIO port selection + 8 + 2 + + + EXTI0 + GPIO port selection + 0 + 2 + + + + + EXTICR2 + EXTICR2 + + EXTI external interrupt selection + register + + 0x64 + 0x20 + read-write + 0x00000000 + + + EXTI7 + GPIO port selection + 24 + 2 + + + EXTI6 + GPIO port selection + 16 + 2 + + + EXTI5 + GPIO port selection + 8 + 2 + + + EXTI4 + GPIO port selection + 0 + 2 + + + + + EXTICR3 + EXTICR3 + + EXTI external interrupt selection + register + + 0x68 + 0x20 + read-write + 0x00000000 + + + EXTI11 + GPIO port selection + 24 + 2 + + + EXTI10 + GPIO port selection + 16 + 2 + + + EXTI9 + GPIO port selection + 8 + 2 + + + EXTI8 + GPIO port selection + 0 + 2 + + + + + EXTICR4 + EXTICR4 + + EXTI external interrupt selection + register + + 0x6C + 0x20 + read-write + 0x00000000 + + + EXTI15 + GPIO port selection + 24 + 2 + + + EXTI14 + GPIO port selection + 16 + 2 + + + EXTI13 + GPIO port selection + 8 + 2 + + + EXTI12 + GPIO port selection + 0 + 2 + + + + + IMR + IMR + + EXTI CPU wakeup with interrupt mask + register + + 0x80 + 0x20 + read-write + 0xFFF80000 + + + IM29 + + CPU wakeup with interrupt mask on event + input + + 29 + 1 + + + IM20 + + CPU wakeup with interrupt mask on event + input + + 20 + 1 + + + IM19 + + CPU wakeup with interrupt mask on event + input + + 19 + 1 + + + IM18 + + CPU wakeup with interrupt mask on event + input + + 18 + 1 + + + IM17 + + CPU wakeup with interrupt mask on event + input + + 17 + 1 + + + IM16 + + CPU wakeup with interrupt mask on event + input + + 16 + 1 + + + IM15 + + CPU wakeup with interrupt mask on event + input + + 15 + 1 + + + IM14 + + CPU wakeup with interrupt mask on event + input + + 14 + 1 + + + IM13 + + CPU wakeup with interrupt mask on event + input + + 13 + 1 + + + IM12 + + CPU wakeup with interrupt mask on event + input + + 12 + 1 + + + IM11 + + CPU wakeup with interrupt mask on event + input + + 11 + 1 + + + IM10 + + CPU wakeup with interrupt mask on event + input + + 10 + 1 + + + IM9 + + CPU wakeup with interrupt mask on event + input + + 9 + 1 + + + IM8 + + CPU wakeup with interrupt mask on event + input + + 8 + 1 + + + IM7 + + CPU wakeup with interrupt mask on event + input + + 7 + 1 + + + IM6 + + CPU wakeup with interrupt mask on event + input + + 6 + 1 + + + IM5 + + CPU wakeup with interrupt mask on event + input + + 5 + 1 + + + IM4 + + CPU wakeup with interrupt mask on event + input + + 4 + 1 + + + IM3 + + CPU wakeup with interrupt mask on event + input + + 3 + 1 + + + IM2 + + CPU wakeup with interrupt mask on event + input + + 2 + 1 + + + IM1 + + CPU wakeup with interrupt mask on event + input + + 1 + 1 + + + IM0 + + CPU wakeup with interrupt mask on event + input + + 0 + 1 + + + + + EMR + EMR + + EXTI CPU wakeup with event mask + register + + 0x84 + 0x20 + read-write + 0x00000000 + + + EM29 + + CPU wakeup with event mask on event + input + + 29 + 1 + + + EM20 + + CPU wakeup with event mask on event + input + + 20 + 1 + + + EM19 + + CPU wakeup with event mask on event + input + + 19 + 1 + + + EM18 + + CPU wakeup with event mask on event + input + + 18 + 1 + + + EM17 + + CPU wakeup with event mask on event + input + + 17 + 1 + + + EM16 + + CPU wakeup with event mask on event + input + + 16 + 1 + + + EM15 + + CPU wakeup with event mask on event + input + + 15 + 1 + + + EM14 + + CPU wakeup with event mask on event + input + + 14 + 1 + + + EM13 + + CPU wakeup with event mask on event + input + + 13 + 1 + + + EM12 + + CPU wakeup with event mask on event + input + + 12 + 1 + + + EM11 + + CPU wakeup with event mask on event + input + + 11 + 1 + + + EM10 + + CPU wakeup with event mask on event + input + + 10 + 1 + + + EM9 + + CPU wakeup with event mask on event + input + + 9 + 1 + + + EM8 + + CPU wakeup with event mask on event + input + + 8 + 1 + + + EM7 + + CPU wakeup with event mask on event + input + + 7 + 1 + + + EM6 + + CPU wakeup with event mask on event + input + + 6 + 1 + + + EM5 + + CPU wakeup with event mask on event + input + + 5 + 1 + + + EM4 + + CPU wakeup with event mask on event + input + + 4 + 1 + + + EM3 + + CPU wakeup with event mask on event + input + + 3 + 1 + + + EM2 + + CPU wakeup with event mask on event + input + + 2 + 1 + + + EM1 + + CPU wakeup with event mask on event + input + + 1 + 1 + + + EM0 + + CPU wakeup with event mask on event + input + + 0 + 1 + + + + + + + FLASH + desc FLASH + FLASH + 0x40022000 + + 0x0 + 0x400 + registers + + + FLASH + FLASH global Interrupt + 3 + + + + ACR + desc ACR + 0x0 + 32 + read-write + 0x500 + + + LATENCY + desc LATENCY + 1 + 0 + read-write + + + PRFTEN + desc PRFTEN + 8 + 8 + read-write + + + ICEN + desc ICEN + 9 + 9 + read-write + + + DCEN + desc DCEN + 10 + 10 + read-write + + + + + KEYR + desc KEYR + 0x8 + 32 + write-only + 0x0 + + + KEY + desc KEY + 31 + 0 + write-only + + + + + OPTKEYR + desc OPTKEYR + 0xC + 32 + write-only + 0x0 + + + OPTKEY + desc OPTKEY + 31 + 0 + write-only + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + + + EOP + desc EOP + 0 + 0 + read-write + + + WRPERR + desc WRPERR + 4 + 4 + read-write + + + OPTVERR + desc OPTVERR + 15 + 15 + read-write + + + BSY + desc BSY + 16 + 16 + read-only + + + + + CR + desc CR + 0x14 + 32 + read-write + 0x0 + + + PG + desc PG + 0 + 0 + read-write + + + PER + desc PER + 1 + 1 + read-write + + + MER + desc MER + 2 + 2 + read-write + + + SER + desc SER + 11 + 11 + read-write + + + OPTSTRT + desc OPTSTRT + 17 + 17 + read-write + + + PGSTRT + desc PGSTRT + 19 + 19 + read-write + + + EOPIE + desc EOPIE + 24 + 24 + read-write + + + ERRIE + desc ERRIE + 25 + 25 + read-write + + + OBL_LAUNCH + desc OBL_LAUNCH + 27 + 27 + read-write + + + OPTLOCK + desc OPTLOCK + 30 + 30 + read-write + + + LOCK + desc LOCK + 31 + 31 + read-write + + + + + OPTR + desc OPTR + 0x20 + 32 + read-only + 0x0 + + + RDP + desc RDP + 7 + 0 + read-only + + + IWDG_SW + desc IWDG_SW + 11 + 11 + read-only + + + WWDG_SW + desc WWDG_SW + 12 + 12 + read-only + + + NRST_MODE + desc NRST_MODE + 13 + 13 + read-only + + + NBOOT1 + desc nBOOT1 + 14 + 14 + read-only + + + IWDG_STOP + desc IWDG_STOP + 15 + 15 + read-only + + + + + SDKR + desc SDKR + 0x24 + 32 + read-only + 0x0 + + + SDK_STRT + desc SDK_STRT + 4 + 0 + read-only + + + BOR_EN + desc BOR_EN + 5 + 5 + read-only + + + SDK_END + desc SDK_END + 12 + 8 + read-only + + + BOR_LEV + desc BOR_LEV + 15 + 13 + read-only + + + + + PCK_EN + desc PCK_EN + 0x28 + 32 + read-only + 0x0 + + + USB_CLK_EN + desc USB_CLK_EN + 0 + 0 + read-only + + + CAN_CLK_EN + desc CAN_CLK_EN + 1 + 1 + read-only + + + TIM2_CLK_EN + desc TIM2_CLK_EN + 2 + 2 + read-only + + + TIM3_CLK_EN + desc TIM3_CLK_EN + 3 + 3 + read-only + + + TIM7_CLK_EN + desc TIM7_CLK_EN + 4 + 4 + read-only + + + I2C2_CLK_EN + desc I2C2_CLK_EN + 5 + 5 + read-only + + + USART3_CLK_EN + desc USART3_CLK_EN + 6 + 6 + read-only + + + USART4_CLK_EN + desc USART4_CLK_EN + 7 + 7 + read-only + + + LCD_CLK_EN + desc LCD_CLK_EN + 8 + 8 + read-only + + + TIM14_CLK_EN + desc TIM14_CLK_EN + 9 + 9 + read-only + + + TIM15_CLK_EN + desc TIM15_CLK_EN + 10 + 10 + read-only + + + TIM17_CLK_EN + desc TIM17_CLK_EN + 11 + 11 + read-only + + + + + WRPR + desc WRPR + 0x2C + 32 + read-write + 0x0 + + + WRP + desc WRP + 15 + 0 + read-write + + + + + STCR + desc STCR + 0x90 + 32 + read-write + 0x00006400 + + + SLEEP_EN + desc SLEEP_EN + 0 + 0 + read-write + + + SLEEP_TIME + desc SLEEP_TIME + 15 + 8 + read-write + + + + + TS0 + desc TS0 + 0x100 + 32 + read-write + 0xB4 + + + TS0 + desc TS0 + 7 + 0 + read-write + + + + + TS1 + desc TS1 + 0x104 + 32 + read-write + 0x1B0 + + + TS1 + desc TS1 + 8 + 0 + read-write + + + + + TS2P + desc TS2P + 0x108 + 32 + read-write + 0xB4 + + + TS2P + desc TS2P + 7 + 0 + read-write + + + + + TPS3 + desc TPS3 + 0x10C + 32 + read-write + 0x6C0 + + + TPS3 + desc TPS3 + 10 + 0 + read-write + + + + + TS3 + desc TS3 + 0x110 + 32 + read-write + 0xB4 + + + TS3 + desc TS3 + 7 + 0 + read-write + + + + + PERTPE + desc PERTPE + 0x114 + 32 + read-write + 0xEA60 + + + PERTPE + desc PERTPE + 16 + 0 + read-write + + + + + SMERTPE + desc SMERTPE + 0x118 + 32 + read-write + 0xFD20 + + + SMERTPE + desc SMERTPE + 16 + 0 + read-write + + + + + PRGTPE + desc PRGTPE + 0x11C + 32 + read-write + 0x8CA0 + + + PRGTPE + desc PRGTPE + 15 + 0 + read-write + + + + + PRETPE + desc PRETPE + 0x120 + 32 + read-write + 0x12C0 + + + PRETPE + desc PRETPE + 13 + 0 + read-write + + + + + TRMLSR + desc TRMLSR + 0x290 + 32 + read-only + 0x0 + + + PMU_TRIM0_ERR + desc PMU_TRIM0_ERR + 0 + 0 + read-only + + + PMU_TRIM1_ERR + desc PMU_TRIM1_ERR + 1 + 1 + read-only + + + HSI_TRIM_ERR + desc HSI_TRIM_ERR + 2 + 2 + read-only + + + LSI_TRIM_ERR + desc LSI_TRIM_ERR + 3 + 3 + read-only + + + FLASH_TRIM0_ERR + desc FLASH_TRIM0_ERR + 4 + 4 + read-only + + + FLASH_TRIM1_ERR + desc FLASH_TRIM1_ERR + 5 + 5 + read-only + + + FLASH_TRIM2_ERR + desc FLASH_TRIM2_ERR + 6 + 6 + read-only + + + FLASH_TRIM3_ERR + desc FLASH_TRIM3_ERR + 7 + 7 + read-only + + + FLASH_TRIM4_ERR + desc FLASH_TRIM4_ERR + 8 + 8 + read-only + + + FLASH_TRIM5_ERR + desc FLASH_TRIM5_ERR + 9 + 9 + read-only + + + TS_TRIM_ERR + desc TS_TRIM_ERR + 10 + 10 + read-only + + + CHIP_CFG_ERR + desc CHIP_CFG_ERR + 11 + 11 + read-only + + + CHKRD0_PASS + desc CHKRD0_PASS + 16 + 16 + read-only + + + CHKRD1_PASS + desc CHKRD1_PASS + 17 + 17 + read-only + + + CHKRD2_PASS + desc CHKRD2_PASS + 18 + 18 + read-only + + + CHKRD3_PASS + desc CHKRD3_PASS + 19 + 19 + read-only + + + + + TRMDR0 + desc TRMDR0 + 0x294 + 32 + read-only + 0x0 + + + BIAS_CR + desc BIAS_CR + 3 + 0 + read-only + + + TRIM_MR + desc TRIM_MR + 8 + 4 + read-only + + + TRIM_VREF + desc TRIM_VREF + 13 + 9 + read-only + + + TRIM_POR + desc TRIM_POR + 19 + 16 + read-only + + + TRIM_BG + desc TRIM_BG + 27 + 20 + read-only + + + + + TRMDR1 + desc TRMDR1 + 0x298 + 32 + read-only + 0x0 + + + LSI_TRIM + desc LSI_TRIM + 8 + 0 + read-only + + + HSI_TRIM + desc HSI_TRIM + 28 + 16 + read-only + + + HSI_FS + desc HSI_FS + 31 + 29 + read-only + + + + + TRMDR2 + desc TRMDR2 + 0x29C + 32 + read-only + 0x0 + + + FLASH_OP + desc FLASH_OP + 31 + 0 + read-only + + + + + TRMDR3 + desc TRMDR3 + 0x2A0 + 32 + read-only + 0x0 + + + FLASH_OP + desc FLASH_OP + 31 + 0 + read-only + + + + + TRMDR4 + desc TRMDR4 + 0x2A4 + 32 + read-only + 0x0 + + + FLASH_ERASE_VPOS + desc FLASH_ERASE_VPOS + 4 + 0 + read-only + + + FLASH_ERASE_VNEG + desc FLASH_ERASE_VNEG + 9 + 5 + read-only + + + FLASH_PROG_VPOS + desc FLASH_PROG_VPOS + 20 + 16 + read-only + + + FLASH_PROG_VNEG + desc FLASH_PROG_VNEG + 25 + 21 + read-only + + + + + TRMDR5 + desc TRMDR5 + 0x2A8 + 32 + read-only + 0x0 + + + FLASH_SIZE + desc FLASH_SIZE + 2 + 0 + read-only + + + SRAM_SIZE + desc SRAM_SIZE + 6 + 4 + read-only + + + TS_TRIM + desc TS_TRIM + 11 + 8 + read-only + + + + + TRMDR6 + desc TRMDR6 + 0x2AC + 32 + read-only + 0x0 + + + OPA0_TRIM + desc OPA0_TRIM + 3 + 0 + read-only + + + OPA1_TRIM + desc OPA1_TRIM + 7 + 4 + read-only + + + OPA2_TRIM + desc OPA2_TRIM + 11 + 8 + read-only + + + OPA3_TRIM + desc OPA3_TRIM + 15 + 12 + read-only + + + OPA4_TRIM + desc OPA4_TRIM + 19 + 16 + read-only + + + LCD_TRIM + desc LCD_TRIM + 27 + 20 + read-only + + + + + TRMDR7 + desc TRMDR7 + 0x2B0 + 32 + read-only + 0x0 + + + TS_DATA_0_TRIM + desc TS_DATA_0_TRIM + 11 + 0 + read-only + + + TS_DATA_1_TRIM + desc TS_DATA_1_TRIM + 23 + 12 + read-only + + + + + TRMDR8 + desc TRMDR8 + 0x2B4 + 32 + read-only + 0x0 + + + DAC_0_TRIM + desc DAC_0_TRIM + 11 + 0 + read-only + + + DAC_1_TRIM + desc DAC_1_TRIM + 23 + 12 + read-only + + + VREF_BUF_TRIM + desc VREF_BUF_TRIM + 28 + 24 + read-only + + + + + + + GPIOA + General-purpose I/Os + GPIO + 0x50000000 + + 0x0 + 0x400 + registers + + + + MODER + MODER + GPIO port mode register + 0x0 + 0x20 + read-write + 0xEBFFFFFF + + + MODE15 + + Port x configuration bits (y=0-15) + + 30 + 2 + + + MODE14 + + Port x configuration bits (y=0-15) + + 28 + 2 + + + MODE13 + + Port x configuration bits (y=0-15) + + 26 + 2 + + + MODE12 + + Port x configuration bits (y=0-15) + + 24 + 2 + + + MODE11 + + Port x configuration bits (y=0-15) + + 22 + 2 + + + MODE10 + + Port x configuration bits (y=0-15) + + 20 + 2 + + + MODE9 + + Port x configuration bits (y=0-15) + + 18 + 2 + + + MODE8 + + Port x configuration bits (y=0-15) + + 16 + 2 + + + MODE7 + + Port x configuration bits (y=0-15) + + 14 + 2 + + + MODE6 + + Port x configuration bits (y=0-15) + + 12 + 2 + + + MODE5 + + Port x configuration bits (y=0-15) + + 10 + 2 + + + MODE4 + + Port x configuration bits (y=0-15) + + 8 + 2 + + + MODE3 + + Port x configuration bits (y=0-15) + + 6 + 2 + + + MODE2 + + Port x configuration bits (y=0-15) + + 4 + 2 + + + MODE1 + + Port x configuration bits (y=0-15) + + 2 + 2 + + + MODE0 + + Port x configuration bits (y=0-15) + + 0 + 2 + + + + + OTYPER + OTYPER + GPIO port output type register + 0x4 + 0x20 + read-write + 0x00000000 + + + OT15 + + Port x configuration bits (y=0-15) + + 15 + 1 + + + OT14 + + Port x configuration bits (y=0-15) + + 14 + 1 + + + OT13 + + Port x configuration bits (y=0-15) + + 13 + 1 + + + OT12 + + Port x configuration bits (y=0-15) + + 12 + 1 + + + OT11 + + Port x configuration bits (y=0-15) + + 11 + 1 + + + OT10 + + Port x configuration bits (y=0-15) + + 10 + 1 + + + OT9 + + Port x configuration bits (y=0-15) + + 9 + 1 + + + OT8 + + Port x configuration bits (y=0-15) + + 8 + 1 + + + OT7 + + Port x configuration bits (y=0-15) + + 7 + 1 + + + OT6 + + Port x configuration bits (y=0-15) + + 6 + 1 + + + OT5 + + Port x configuration bits (y=0-15) + + 5 + 1 + + + OT4 + + Port x configuration bits (y=0-15) + + 4 + 1 + + + OT3 + + Port x configuration bits (y=0-15) + + 3 + 1 + + + OT2 + + Port x configuration bits (y=0-15) + + 2 + 1 + + + OT1 + + Port x configuration bits (y=0-15) + + 1 + 1 + + + OT0 + + Port x configuration bits (y=0-15) + + 0 + 1 + + + + + OSPEEDR + OSPEEDR + + GPIO port output speed + register + + 0x8 + 0x20 + read-write + 0x0C000000 + + + OSPEED15 + + Port x configuration bits (y=0-15) + + 30 + 2 + + + OSPEED14 + + Port x configuration bits (y=0-15) + + 28 + 2 + + + OSPEED13 + + Port x configuration bits (y=0-15) + + 26 + 2 + + + OSPEED12 + + Port x configuration bits (y=0-15) + + 24 + 2 + + + OSPEED11 + + Port x configuration bits (y=0-15) + + 22 + 2 + + + OSPEED10 + + Port x configuration bits (y=0-15) + + 20 + 2 + + + OSPEED9 + + Port x configuration bits (y=0-15) + + 18 + 2 + + + OSPEED8 + + Port x configuration bits (y=0-15) + + 16 + 2 + + + OSPEED7 + + Port x configuration bits (y=0-15) + + 14 + 2 + + + OSPEED6 + + Port x configuration bits (y=0-15) + + 12 + 2 + + + OSPEED5 + + Port x configuration bits (y=0-15) + + 10 + 2 + + + OSPEED4 + + Port x configuration bits (y=0-15) + + 8 + 2 + + + OSPEED3 + + Port x configuration bits (y=0-15) + + 6 + 2 + + + OSPEED2 + + Port x configuration bits (y=0-15) + + 4 + 2 + + + OSPEED1 + + Port x configuration bits (y=0-15) + + 2 + 2 + + + OSPEED0 + + Port x configuration bits (y=0-15) + + 0 + 2 + + + + + PUPDR + PUPDR + + GPIO port pull-up/pull-down + register + + 0xC + 0x20 + read-write + 0x24000000 + + + PUPD15 + + Port x configuration bits (y=0-15) + + 30 + 2 + + + PUPD14 + + Port x configuration bits (y=0-15) + + 28 + 2 + + + PUPD13 + + Port x configuration bits (y=0-15) + + 26 + 2 + + + PUPD12 + + Port x configuration bits (y=0-15) + + 24 + 2 + + + PUPD11 + + Port x configuration bits (y=0-15) + + 22 + 2 + + + PUPD10 + + Port x configuration bits (y=0-15) + + 20 + 2 + + + PUPD9 + + Port x configuration bits (y=0-15) + + 18 + 2 + + + PUPD8 + + Port x configuration bits (y=0-15) + + 16 + 2 + + + PUPD7 + + Port x configuration bits (y=0-15) + + 14 + 2 + + + PUPD6 + + Port x configuration bits (y=0-15) + + 12 + 2 + + + PUPD5 + + Port x configuration bits (y=0-15) + + 10 + 2 + + + PUPD4 + + Port x configuration bits (y=0-15) + + 8 + 2 + + + PUPD3 + + Port x configuration bits (y=0-15) + + 6 + 2 + + + PUPD2 + + Port x configuration bits (y=0-15) + + 4 + 2 + + + PUPD1 + + Port x configuration bits (y=0-15) + + 2 + 2 + + + PUPD0 + + Port x configuration bits (y=0-15) + + 0 + 2 + + + + + IDR + IDR + GPIO port input data register + 0x10 + 0x20 + read-only + 0x00000000 + + + ID15 + + Port input data (y=0-15) + + 15 + 1 + + + ID14 + + Port input data (y=0-15) + + 14 + 1 + + + ID13 + + Port input data (y=0-15) + + 13 + 1 + + + ID12 + + Port input data (y=0-15) + + 12 + 1 + + + ID11 + + Port input data (y=0-15) + + 11 + 1 + + + ID10 + + Port input data (y=0-15) + + 10 + 1 + + + ID9 + + Port input data (y=0-15) + + 9 + 1 + + + ID8 + + Port input data (y=0-15) + + 8 + 1 + + + ID7 + + Port input data (y=0-15) + + 7 + 1 + + + ID6 + + Port input data (y=0-15) + + 6 + 1 + + + ID5 + + Port input data (y=0-15) + + 5 + 1 + + + ID4 + + Port input data (y=0-15) + + 4 + 1 + + + ID3 + + Port input data (y=0-15) + + 3 + 1 + + + ID2 + + Port input data (y=0-15) + + 2 + 1 + + + ID1 + + Port input data (y=0-15) + + 1 + 1 + + + ID0 + + Port input data (y=0-15) + + 0 + 1 + + + + + ODR + ODR + GPIO port output data register + 0x14 + 0x20 + read-write + 0x00000000 + + + OD15 + + Port output data (y=0-15) + + 15 + 1 + + + OD14 + + Port output data (y=0-15) + + 14 + 1 + + + OD13 + + Port output data (y=0-15) + + 13 + 1 + + + OD12 + + Port output data (y=0-15) + + 12 + 1 + + + OD11 + + Port output data (y=0-15) + + 11 + 1 + + + OD10 + + Port output data (y=0-15) + + 10 + 1 + + + OD9 + + Port output data (y=0-15) + + 9 + 1 + + + OD8 + + Port output data (y=0-15) + + 8 + 1 + + + OD7 + + Port output data (y=0-15) + + 7 + 1 + + + OD6 + + Port output data (y=0-15) + + 6 + 1 + + + OD5 + + Port output data (y=0-15) + + 5 + 1 + + + OD4 + + Port output data (y=0-15) + + 4 + 1 + + + OD3 + + Port output data (y=0-15) + + 3 + 1 + + + OD2 + + Port output data (y=0-15) + + 2 + 1 + + + OD1 + + Port output data (y=0-15) + + 1 + 1 + + + OD0 + + Port output data (y=0-15) + + 0 + 1 + + + + + BSRR + BSRR + + GPIO port bit set/reset + register + + 0x18 + 0x20 + write-only + 0x00000000 + + + BR15 + + Port x reset bit y (y=0-15) + + 31 + 1 + + + BR14 + + Port x reset bit y (y=0-15) + + 30 + 1 + + + BR13 + + Port x reset bit y (y=0-15) + + 29 + 1 + + + BR12 + + Port x reset bit y (y=0-15) + + 28 + 1 + + + BR11 + + Port x reset bit y (y=0-15) + + 27 + 1 + + + BR10 + + Port x reset bit y (y=0-15) + + 26 + 1 + + + BR9 + + Port x reset bit y (y=0-15) + + 25 + 1 + + + BR8 + + Port x reset bit y (y=0-15) + + 24 + 1 + + + BR7 + + Port x reset bit y (y=0-15) + + 23 + 1 + + + BR6 + + Port x reset bit y (y=0-15) + + 22 + 1 + + + BR5 + + Port x reset bit y (y=0-15) + + 21 + 1 + + + BR4 + + Port x reset bit y (y=0-15) + + 20 + 1 + + + BR3 + + Port x reset bit y (y=0-15) + + 19 + 1 + + + BR2 + + Port x reset bit y (y=0-15) + + 18 + 1 + + + BR1 + + Port x reset bit y (y=0-15) + + 17 + 1 + + + BR0 + + Port x set bit y (y=0-15) + + 16 + 1 + + + BS15 + + Port x set bit y (y=0-15) + + 15 + 1 + + + BS14 + + Port x set bit y (y=0-15) + + 14 + 1 + + + BS13 + + Port x set bit y (y=0-15) + + 13 + 1 + + + BS12 + + Port x set bit y (y=0-15) + + 12 + 1 + + + BS11 + + Port x set bit y (y=0-15) + + 11 + 1 + + + BS10 + + Port x set bit y (y=0-15) + + 10 + 1 + + + BS9 + + Port x set bit y (y=0-15) + + 9 + 1 + + + BS8 + + Port x set bit y (y=0-15) + + 8 + 1 + + + BS7 + + Port x set bit y (y=0-15) + + 7 + 1 + + + BS6 + + Port x set bit y (y=0-15) + + 6 + 1 + + + BS5 + + Port x set bit y (y=0-15) + + 5 + 1 + + + BS4 + + Port x set bit y (y=0-15) + + 4 + 1 + + + BS3 + + Port x set bit y (y=0-15) + + 3 + 1 + + + BS2 + + Port x set bit y (y=0-15) + + 2 + 1 + + + BS1 + + Port x set bit y (y=0-15) + + 1 + 1 + + + BS0 + + Port x set bit y (y=0-15) + + 0 + 1 + + + + + LCKR + LCKR + + GPIO port configuration lock + register + + 0x1C + 0x20 + read-write + 0x00000000 + + + LCKK + + Port x lock (LCKK) + + 16 + 1 + + + LCK15 + + Port x lock bit y (y=0-15) + + 15 + 1 + + + LCK14 + + Port x lock bit y (y=0-15) + + 14 + 1 + + + LCK13 + + Port x lock bit y (y=0-15) + + 13 + 1 + + + LCK12 + + Port x lock bit y (y=0-15) + + 12 + 1 + + + LCK11 + + Port x lock bit y (y=0-15) + + 11 + 1 + + + LCK10 + + Port x lock bit y (y=0-15) + + 10 + 1 + + + LCK9 + + Port x lock bit y (y=0-15) + + 9 + 1 + + + LCK8 + + Port x lock bit y (y=0-15) + + 8 + 1 + + + LCK7 + + Port x lock bit y (y=0-15) + + 7 + 1 + + + LCK6 + + Port x lock bit y (y=0-15) + + 6 + 1 + + + LCK5 + + Port x lock bit y (y=0-15) + + 5 + 1 + + + LCK4 + + Port x lock bit y (y=0-15) + + 4 + 1 + + + LCK3 + + Port x lock bit y (y=0-15) + + 3 + 1 + + + LCK2 + + Port x lock bit y (y=0-15) + + 2 + 1 + + + LCK1 + + Port x lock bit y (y=0-15) + + 1 + 1 + + + LCK0 + + Port x lock bit y (y=0-15) + + 0 + 1 + + + + + AFRL + AFRL + + GPIO alternate function low + register + + 0x20 + 0x20 + read-write + 0x00000000 + + + AFSEL7 + + Alternate function selection for port x bit y (y=0-7) + + 28 + 4 + + + AFSEL6 + + Alternate function selection for port x bit y (y=0-7) + + 24 + 4 + + + AFSEL5 + + Alternate function selection for port x bit y (y=0-7) + + 20 + 4 + + + AFSEL4 + + Alternate function selection for port x bit y (y=0-7) + + 16 + 4 + + + AFSEL3 + + Alternate function selection for port x bit y (y=0-7) + + 12 + 4 + + + AFSEL2 + + Alternate function selection for port x bit y (y=0-7) + + 8 + 4 + + + AFSEL1 + + Alternate function selection for port x bit y (y=0-7) + + 4 + 4 + + + AFSEL0 + + Alternate function selection for port x bit y (y=0-7) + + 0 + 4 + + + + + AFRH + AFRH + + GPIO alternate function high + register + + 0x24 + 0x20 + read-write + 0x00000000 + + + AFSEL15 + + Alternate function selection for port x bit y (y=8-15) + + 28 + 4 + + + AFSEL14 + + Alternate function selection for port x bit y (y=8-15) + + 24 + 4 + + + AFSEL13 + + Alternate function selection for port x bit y (y=8-15) + + 20 + 4 + + + AFSEL12 + + Alternate function selection for port x bit y (y=8-15) + + 16 + 4 + + + AFSEL11 + + Alternate function selection for port x bit y (y=8-15) + + 12 + 4 + + + AFSEL10 + + Alternate function selection for port x bit y (y=8-15) + + 8 + 4 + + + AFSEL9 + + Alternate function selection for port x bit y (y=8-15) + + 4 + 4 + + + AFSEL8 + + Alternate function selection for port x bit y (y=8-15) + + 0 + 4 + + + + + BRR + BRR + port bit reset register + 0x28 + 0x20 + write-only + 0x00000000 + + + BR15 + Port Reset bit + 15 + 1 + + + BR14 + Port Reset bit + 14 + 1 + + + BR13 + Port Reset bit + 13 + 1 + + + BR12 + Port Reset bit + 12 + 1 + + + BR11 + Port Reset bit + 11 + 1 + + + BR10 + Port Reset bit + 10 + 1 + + + BR9 + Port Reset bit + 9 + 1 + + + BR8 + Port Reset bit + 8 + 1 + + + BR7 + Port Reset bit + 7 + 1 + + + BR6 + Port Reset bit + 6 + 1 + + + BR5 + Port Reset bit + 5 + 1 + + + BR4 + Port Reset bit + 4 + 1 + + + BR3 + Port Reset bit + 3 + 1 + + + BR2 + Port Reset bit + 2 + 1 + + + BR1 + Port Reset bit + 1 + 1 + + + BR0 + Port Reset bit + 0 + 1 + + + + + + + GPIOB + General-purpose I/Os + GPIO + 0x50000400 + + 0x0 + 0x400 + registers + + + + GPIOC + General-purpose I/Os + GPIO + 0x50000800 + + 0x0 + 0x400 + registers + + + + GPIOF + General-purpose I/Os + GPIO + 0x50001400 + + 0x0 + 0x400 + registers + + + + I2C1 + Inter integrated circuit + I2C + 0x40005400 + + 0x0 + 0x400 + registers + + + I2C1 + I2C1 global Interrupt + 23 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + + + PE + desc PE + 0 + 0 + read-write + + + SMBUS + desc SMBUS + 1 + 1 + read-write + + + SMBTYPE + desc SMBTYPE + 3 + 3 + read-write + + + ENARP + desc ENARP + 4 + 4 + read-write + + + ENPEC + desc ENPEC + 5 + 5 + read-write + + + ENGC + desc ENGC + 6 + 6 + read-write + + + NOSTRETCH + desc NOSTRETCH + 7 + 7 + read-write + + + START + desc START + 8 + 8 + read-write + + + STOP + desc STOP + 9 + 9 + read-write + + + ACK + desc ACK + 10 + 10 + read-write + + + POS + desc POS + 11 + 11 + read-write + + + PEC + desc PEC + 12 + 12 + read-write + + + ALERT + desc ALERT + 13 + 13 + read-write + + + SWRST + desc SWRST + 15 + 15 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + + + FREQ + desc FREQ + 5 + 0 + read-write + + + ITERREN + desc ITERREN + 8 + 8 + read-write + + + ITEVTEN + desc ITEVTEN + 9 + 9 + read-write + + + ITBUFEN + desc ITBUFEN + 10 + 10 + read-write + + + DMAEN + desc DMAEN + 11 + 11 + read-write + + + LAST + desc LAST + 12 + 12 + read-write + + + + + OAR1 + desc OAR1 + 0x8 + 32 + read-write + 0x0 + + + ADD0 + desc ADD0 + 0 + 0 + read-write + + + ADD1_7 + desc ADD1_7 + 7 + 1 + read-write + + + ADD8_9 + desc ADD8_9 + 9 + 8 + read-write + + + ADDMODE + desc ADDMODE + 15 + 15 + read-write + + + + + OAR2 + desc OAR2 + 0xC + 32 + read-write + 0x0 + + + ENDUAL + desc ENDUAL + 0 + 0 + read-write + + + ADD2 + desc ADD2 + 7 + 1 + read-write + + + + + DR + desc DR + 0x10 + 32 + read-write + 0x0 + + + DR + desc DR + 7 + 0 + read-write + + + + + SR1 + desc SR1 + 0x14 + 32 + read-write + 0x0 + + + SB + desc SB + 0 + 0 + read-only + + + ADDR + desc ADDR + 1 + 1 + read-only + + + BTF + desc BTF + 2 + 2 + read-only + + + ADD10 + desc ADD10 + 3 + 3 + read-only + + + STOPF + desc STOPF + 4 + 4 + read-only + + + RXNE + desc RXNE + 6 + 6 + read-only + + + TXE + desc TXE + 7 + 7 + read-only + + + BERR + desc BERR + 8 + 8 + read-write + + + ARLO + desc ARLO + 9 + 9 + read-write + + + AF + desc AF + 10 + 10 + read-write + + + OVR + desc OVR + 11 + 11 + read-write + + + PECERR + desc PECERR + 12 + 12 + read-write + + + TIMEOUT + desc TIMEOUT + 14 + 14 + read-write + + + SMBALERT + desc SMBALERT + 15 + 15 + read-write + + + + + SR2 + desc SR2 + 0x18 + 32 + read-only + 0x0 + + + MSL + desc MSL + 0 + 0 + read-only + + + BUSY + desc BUSY + 1 + 1 + read-only + + + TRA + desc TRA + 2 + 2 + read-only + + + GENCALL + desc GENCALL + 4 + 4 + read-only + + + SMBDEFAULT + desc SMBDEFAULT + 5 + 5 + read-only + + + SMBHOST + desc SMBHOST + 6 + 6 + read-only + + + DUALF + desc DUALF + 7 + 7 + read-only + + + PEC + desc PEC + 15 + 8 + read-only + + + + + CCR + desc CCR + 0x1C + 32 + read-write + 0x0 + + + CCR + desc CCR + 11 + 0 + read-write + + + DUTY + desc DUTY + 14 + 14 + read-write + + + FS + desc FS + 15 + 15 + read-write + + + + + TRISE + desc TRISE + 0x20 + 32 + read-write + 0x2 + + + + TRISE + desc TRISE + 5 + 0 + read-write + + + + + + + I2C2 + desc I2C + I2C + 0x40005800 + + 0x0 + 0x400 + registers + + + I2C2 + I2C2 Event Interrupt + 24 + + + + IWDG + Independent watchdog + IWDG + 0x40003000 + + 0x0 + 0x400 + registers + + + + KR + KR + Key register (IWDG_KR) + 0x0 + 0x20 + write-only + 0x00000000 + + + KEY + Key value + 0 + 16 + + + + + PR + PR + Prescaler register (IWDG_PR) + 0x4 + 0x20 + read-write + 0x00000000 + + + PR + Prescaler divider + 0 + 3 + + + + + RLR + RLR + Reload register (IWDG_RLR) + 0x8 + 0x20 + read-write + 0x00000FFF + + + RL + + Watchdog counter reload + value + + 0 + 12 + + + + + SR + SR + Status register (IWDG_SR) + 0xC + 0x20 + read-only + 0x00000000 + + + RVU + + Watchdog counter reload value + update + + 1 + 1 + + + PVU + + Watchdog prescaler value + update + + 0 + 1 + + + + + + + LCD + LCD CONTROLLER + LCD + 0x40002400 + + 0x0 + 0x400 + registers + + + LCD + LCD global Interrupt + 8 + + + + CR0 + CR0 + Control register + 0x0 + 0x20 + read-write + 0x0000 + + + EN + EN + 0 + 1 + + + LCDCLK + LCDCLK + 1 + 2 + + + BIAS + BIAS + 6 + 1 + + + DUTY + DUTY + 7 + 3 + + + BSEL + BSEL + 10 + 3 + + + CONTRAST + CONTRAST + 13 + 4 + + + + + CR1 + CR1 + CR1 + 0x4 + 0x20 + read-write + 0x0000 + + + BLINKCNT + BLINKCNT + 0 + 6 + + + BLINKEN + BLINKEN + 6 + 1 + + + MODE + MODE + 8 + 1 + + + IE + IE + 10 + 1 + + + INTF + INTF + 11 + 1 + + + + + INTCLR + INTCLR + INTCLR + 0x8 + 0x20 + read-write + 0x0000 + + + INTF_CLR + INTF_CLR + 10 + 1 + + + + + POEN0 + POEN0 + POEN0 + 0x0C + 0x20 + read-write + 0x0000 + + + S0 + S0 + 0 + 1 + + + S1 + S1 + 1 + 1 + + + S2 + S2 + 2 + 1 + + + S3 + S3 + 3 + 1 + + + S4 + S4 + 4 + 1 + + + S5 + S5 + 5 + 1 + + + S6 + S6 + 6 + 1 + + + S7 + S7 + 7 + 1 + + + S8 + S8 + 8 + 1 + + + S9 + S9 + 9 + 1 + + + S10 + S10 + 10 + 1 + + + S11 + S11 + 11 + 1 + + + S12 + S12 + 12 + 1 + + + S13 + S13 + 13 + 1 + + + S14 + S14 + 14 + 1 + + + S15 + S15 + 15 + 1 + + + S16 + S16 + 16 + 1 + + + S17 + S17 + 17 + 1 + + + S18 + S18 + 18 + 1 + + + S19 + S19 + 19 + 1 + + + S20 + S20 + 20 + 1 + + + S21 + S21 + 21 + 1 + + + S22 + S22 + 22 + 1 + + + S23 + S23 + 23 + 1 + + + S24 + S24 + 24 + 1 + + + S25 + S25 + 25 + 1 + + + S26 + S26 + 26 + 1 + + + S27 + S27 + 27 + 1 + + + S28 + S28 + 28 + 1 + + + S29 + S29 + 29 + 1 + + + S30 + S30 + 30 + 1 + + + S31 + S31 + 31 + 1 + + + + + POEN1 + POEN1 + POEN1 + 0x10 + 0x20 + read-write + 0x0000 + + + S32 + S32 + 0 + 1 + + + S33 + S33 + 1 + 1 + + + S34 + S34 + 2 + 1 + + + S35 + S35 + 3 + 1 + + + S36 + S36 + 4 + 1 + + + S37 + S37 + 5 + 1 + + + S38 + S38 + 6 + 1 + + + S39 + S39 + 7 + 1 + + + C0 + C0 + 8 + 1 + + + C1 + C1 + 9 + 1 + + + C2 + C2 + 10 + 1 + + + C3 + C3 + 11 + 1 + + + MUX + MUX + 12 + 1 + + + + + RAM0 + RAM0 + des RAM0 + 0x14 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM1 + RAM1 + des RAM1 + 0x18 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM2 + RAM2 + des RAM2 + 0x1C + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM3 + RAM3 + des RAM3 + 0x20 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM4 + RAM4 + des RAM4 + 0x24 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM5 + RAM5 + des RAM5 + 0x28 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM6 + RAM6 + des RAM6 + 0x2C + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM7 + RAM7 + des RAM7 + 0x30 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 32 + + + + + RAM8 + RAM8 + des RAM8 + 0x34 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + RAM9 + RAM9 + des RAM9 + 0x38 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + RAM10 + RAM10 + des RAM10 + 0x3C + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + RAM11 + RAM11 + des RAM11 + 0x40 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + RAM12 + RAM12 + des RAM12 + 0x44 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + RAM13 + RAM13 + des RAM13 + 0x48 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + RAM14 + RAM14 + des RAM14 + 0x4C + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + RAM15 + RAM15 + des RAM15 + 0x50 + 0x20 + read-write + 0x0000 + + + D + des D + 0 + 8 + + + + + + + LPTIM1 + Low power timer + LPTIM1 + 0x40007C00 + + 0x0 + 0x400 + registers + + + TIM6_LPTIM1_DAC + TIM6, LPTIM1, DAC global Interrupts + 17 + + + + ISR + ISR + Interrupt and Status Register + 0x0 + 0x20 + read-only + 0x00000000 + + + ARRM + Autoreload match + 1 + 1 + + + ARROK + Autoreload match update OK + 4 + 1 + + + + + ICR + ICR + Interrupt Clear Register + 0x4 + 0x20 + write-only + 0x00000000 + + + ARRMCF + + Autoreload match Clear + Flag + + 1 + 1 + + + ARROKCF + + Autoreload match update OK + Clear Flag + + 4 + 1 + + + + + IER + IER + Interrupt Enable Register + 0x8 + 0x20 + read-write + 0x00000000 + + + ARRMIE + + Autoreload matchInterrupt + Enable + + 1 + 1 + + + ARROKIE + + Autoreload match update + OK Interrupt Enable + + 4 + 1 + + + + + CFGR + CFGR + Configuration Register + 0xC + 0x20 + read-write + 0x00000000 + + + PRELOAD + Registers update mode + 22 + 1 + + + PRESC + Clock prescaler + 9 + 3 + + + + + CR + CR + Control Register + 0x10 + 0x20 + read-write + 0x00000000 + + + RSTARE + Reset after read enable + 4 + 1 + + + CNTSTRT + CNTSTRT + 2 + 1 + + + SNGSTRT + LPTIM start in single mode + 1 + 1 + + + ENABLE + LPTIM Enable + 0 + 1 + + + + + ARR + ARR + Autoreload Register + 0x18 + 0x20 + read-write + 0x00000001 + + + ARR + Auto reload value + 0 + 16 + + + + + CNT + CNT + Counter Register + 0x1C + 0x20 + read-only + 0x00000000 + + + CNT + Counter value + 0 + 16 + + + + + + + OPA + des OPA + OPA + 0x40010300 + + 0x0 + 0x400 + registers + + + + CR0 + CR0 + CR0 register + 0x30 + 0x20 + read-write + 0xFFFFFFFF + + + OP1OEN1 + OP1OEN1 + 1 + 1 + + + OP2OEN1 + OP2OEN1 + 6 + 1 + + + OP3OEN1 + OP3OEN1 + 11 + 1 + + + + + CR1 + CR1 + CR1 register + 0x34 + 0x20 + read-write + 0x00000000 + + + EN1 + EN1 + 5 + 1 + + + EN2 + EN2 + 6 + 1 + + + EN3 + EN3 + 7 + 1 + + + + + + + PWR + Power control + PWR + 0x40007000 + + 0x0 + 0x400 + registers + + + + CR1 + CR1 + Power control register 1 + 0x0 + 0x20 + read-write + 0x00030000 + + + HSION_CTRL + HSI open time control + 19 + 1 + + + SRAM_RETV + SRAM retention voltage control + 16 + 3 + + + LPR + Low-power run + 14 + 1 + + + FLS_SLPTIME + Flash wait time after wakeup from the stop mode + 12 + 2 + + + VOS + + Voltage scaling range + selection + + 9 + 2 + + + DBP + + Disable backup domain write + protection + + 8 + 1 + + + BIAS_CR_SEL + MR Bias current selection + 4 + 1 + + + BIAS_CR + MR Bias current + 0 + 3 + + + + + CR2 + CR2 + Power control register 2 + 0x4 + 0x20 + read-write + 0x00000500 + + + FLT_TIME + Digital filter time configuration + 9 + 3 + + + FLTEN + Digital filter enable + 8 + 1 + + + PVDT + + Power voltage detector threshold selection + + 4 + 3 + + + SRCSEL + + Power voltage detector volatage + selection + + 2 + 1 + + + PVDE + + Power voltage detector + enable + + 0 + 1 + + + + + SR + SR + Power status register + 0x14 + 0x20 + read-only + 0x00000000 + + + PVDO + PVD output + 11 + 1 + + + + + + + RCC + Reset and clock control + RCC + 0x40021000 + + 0x0 + 0x400 + registers + + + RCC_CTC + RCC and CTC global Interrupts + 4 + + + + CR + CR + Clock control register + 0x0 + 0x20 + read-write + 0x00000100 + + + PLLRDY + PLL clock ready flag + 25 + 1 + + + PLLON + PLL enable + 24 + 1 + + + ADC_DIV + ADC Frequency Division + 21 + 2 + + + CSSON + + Clock security system + enable + + 19 + 1 + + + HSEBYP + + HSE crystal oscillator + bypass + + 18 + 1 + + + HSERDY + HSE clock ready flag + 17 + 1 + + + HSEON + HSE clock enable + 16 + 1 + + + HSIDIV + + HSI16 clock division + factor + + 11 + 3 + + + HSIRDY + HSI16 clock ready flag + 10 + 1 + + + HSION + HSI16 clock enable + 8 + 1 + + + + + ICSCR + ICSCR + + Internal clock sources calibration + register + + 0x4 + 0x20 + 0x10000000 + + + LSI_TRIM + LSI clock trimming + 16 + 9 + read-write + + + HSI_FS + HSI frequency selection + 13 + 3 + read-write + + + HSI_TRIM + HSI clock trimming + 0 + 13 + read-write + + + + + CFGR + CFGR + Clock configuration register + 0x8 + 0x20 + 0x00000000 + + + MCOPRE + + Microcontroller clock output + prescaler + + 28 + 3 + read-write + + + MCOSEL + + Microcontroller clock + output + + 24 + 3 + read-write + + + PPRE + APB prescaler + 12 + 3 + read-write + + + HPRE + AHB prescaler + 8 + 4 + read-write + + + SWS + System clock switch status + 3 + 3 + read-only + + + SW + System clock switch + 0 + 3 + read-write + + + + + PLLCFGR + PLLCFGR + PLL configuration register + 0xC + 0x20 + 0x00000000 + + + PLLSRC + PLL clock source selection + 0 + 2 + read-write + + + PLLMUL + PLLMUL + 2 + 2 + read-write + + + + + ECSCR + ECSCR + External clock source control register + 0x10 + 0x20 + 0x00000000 + + + HSE_DRV + HSE_DRV + 0 + 2 + read-write + + + HSE_STARTUP + HSE_STARTUP + 3 + 2 + read-write + + + LSE_DRIVER + LSE clock driver selection + 16 + 2 + read-write + + + LSE_STARTUP + LSE_STARTUP + 20 + 2 + read-write + + + + + CIER + CIER + + Clock interrupt enable + register + + 0x18 + 0x20 + read-write + 0x00000000 + + + PLLRDYIE + PLL ready interrupt enable + 5 + 1 + + + HSERDYIE + HSE ready interrupt enable + 4 + 1 + + + HSIRDYIE + HSI ready interrupt enable + 3 + 1 + + + LSERDYIE + LSE ready interrupt enable + 1 + 1 + + + LSIRDYIE + LSI ready interrupt enable + 0 + 1 + + + + + CIFR + CIFR + Clock interrupt flag register + 0x1C + 0x20 + read-only + 0x00000000 + + + LSECSSF + LSE clock secure system interrupt flag + 9 + 1 + + + CSSF + HSE clock secure system interrupt flag + 8 + 1 + + + PLLRDYF + PLL ready interrupt flag + 5 + 1 + + + HSERDYF + HSE ready interrupt flag + 4 + 1 + + + HSIRDYF + HSI ready interrupt flag + 3 + 1 + + + LSERDYF + LSE ready interrupt flag + 1 + 1 + + + LSIRDYF + LSI ready interrupt flag + 0 + 1 + + + + + CICR + CICR + Clock interrupt clear register + 0x20 + 0x20 + write-only + 0x00000000 + + + LSECSSC + LSE clock secure system interrupt flag clear + 9 + 1 + + + CSSC + clock secure system interrupt flag clear + 8 + 1 + + + PLLRDYC + PLL ready interrupt clear + 5 + 1 + + + HSERDYC + HSE ready interrupt clear + 4 + 1 + + + HSIRDYC + HSI ready interrupt clear + 3 + 1 + + + LSERDYC + LSE ready interrupt clear + 1 + 1 + + + LSIRDYC + LSI ready interrupt clear + 0 + 1 + + + + + IOPRSTR + IOPRSTR + GPIO reset register + 0x24 + 0x20 + read-write + 0x00000000 + + + GPIOFRST + I/O port F reset + 5 + 1 + + + GPIOCRST + I/O port F reset + 2 + 1 + + + GPIOBRST + I/O port B reset + 1 + 1 + + + GPIOARST + I/O port A reset + 0 + 1 + + + + + AHBRSTR + AHBRSTR + AHB peripheral reset register + 0x28 + 0x20 + read-write + 0x00000000 + + + DIVRST + DIV reset + 24 + 1 + + + CRCRST + CRC reset + 12 + 1 + + + DMARST + DMA reset + 0 + 1 + + + + + APBRSTR1 + APBRSTR1 + + APB peripheral reset register + 1 + + 0x2C + 0x20 + read-write + 0x00000000 + + + LPTIMRST + Low Power Timer reset + 31 + 1 + + + OPARST + OPARST + 30 + 1 + + + DACRST + DACRST + 29 + 1 + + + PWRRST + Power interface reset + 28 + 1 + + + CTCRST + CTCRST + 27 + 1 + + + CANRST + CANRST + 25 + 1 + + + USBRST + USB reset + 23 + 1 + + + I2C2RST + I2C2 reset + 22 + 1 + + + I2C1RST + I2C1 reset + 21 + 1 + + + USART4RST + USART4 reset + 19 + 1 + + + USART3RST + USART3 reset + 18 + 1 + + + USART2RST + USART2 reset + 17 + 1 + + + SPI2RST + SPI2 reset + 14 + 1 + + + WWDGRST + WWDG reset + 11 + 1 + + + RTCAPBRST + RTCAPB reset + 10 + 1 + + + TIM7RST + TIM7 timer reset + 5 + 1 + + + TIM6RST + TIM6 timer reset + 4 + 1 + + + TIM3RST + TIM3 timer reset + 1 + 1 + + + TIM2RST + TIM2 timer reset + 0 + 1 + + + + + APBRSTR2 + APBRSTR2 + + APB peripheral reset register + 2 + + 0x30 + 0x20 + read-write + 0x00000000 + + + SYSCFGRST + SYSCFG reset + 0 + 1 + + + ADCRST + ADC reset + 9 + 1 + + + DBGRST + DBG reset + 10 + 1 + + + TIM1RST + TIM1 reset + 11 + 1 + + + SPI1RST + SPI1 reset + 12 + 1 + + + USART1RST + USART1 reset + 14 + 1 + + + TIM14RST + TIM14 reset + 15 + 1 + + + TIM15RST + TIM15 reset + 16 + 1 + + + TIM16RST + TIM16 reset + 17 + 1 + + + TIM17RST + TIM17 reset + 18 + 1 + + + COMP1RST + COMP1 reset + 20 + 1 + + + COMP2RST + COMP2 reset + 21 + 1 + + + COMP3RST + COMP3 reset + 22 + 1 + + + LCDRST + LCD reset + 23 + 1 + + + + + IOPENR + IOPENR + GPIO clock enable register + 0x34 + 0x20 + read-write + 0x00000000 + + + GPIOFEN + I/O port F clock enable + 5 + 1 + + + GPIOCEN + I/O port C clock enable + 2 + 1 + + + GPIOBEN + I/O port B clock enable + 1 + 1 + + + GPIOAEN + I/O port A clock enable + 0 + 1 + + + + + AHBENR + AHBENR + + AHB peripheral clock enable + register + + 0x38 + 0x20 + read-write + 0x00000000 + + + DIVEN + DIVEN + 24 + 1 + + + CRCEN + CRC clock enable + 12 + 1 + + + SRAMEN + + SRAM memory interface clock + enable + + 9 + 1 + + + FLASHEN + + Flash memory interface clock + enable + + 8 + 1 + + + DMAEN + DMA clock enable + 0 + 1 + + + + + APBENR1 + APBENR1 + + APB peripheral clock enable register + 1 + + 0x3C + 0x20 + read-write + 0x00000000 + + + LPTIMEN + LPTIM clock enable + 31 + 1 + + + + OPAEN + OPA clock enable + 30 + 1 + + + DACEN + DAC clock enable + 29 + 1 + + + PWREN + + Power interface clock + enable + + 28 + 1 + + + CTCEN + CTC clock enable + 27 + 1 + + + CANEN + CAN clock enable + 25 + 1 + + + USBEN + USB clock enable + 23 + 1 + + + I2C2EN + I2C2 clock enable + 22 + 1 + + + I2C1EN + I2C1 clock enable + 21 + 1 + + + USART4EN + USART4 clock enable + 19 + 1 + + + USART3EN + USART3 clock enable + 18 + 1 + + + USART2EN + USART2 clock enable + 17 + 1 + + + SPI2EN + SPI2 clock enable + 14 + 1 + + + WWDGEN + WWDG clock enable + 11 + 1 + + + RTCAPBEN + RTC APB clock enable + 10 + 1 + + + TIM7EN + TIM7 timer clock enable + 5 + 1 + + + TIM6EN + TIM6 timer clock enable + 4 + 1 + + + TIM3EN + TIM3 timer clock enable + 1 + 1 + + + TIM2EN + TIM2 timer clock enable + 0 + 1 + + + + + APBENR2 + APBENR2 + + APB peripheral clock enable register + 2 + + 0x40 + 0x20 + read-write + 0x00000000 + + + SYSCFGEN + + SYSCFG, COMP and VREFBUF clock + enable + + 0 + 1 + + + ADCEN + ADCEN clock enable + 9 + 1 + + + DBGEN + DBG clock enable + 10 + 1 + + + TIM1EN + TIM1 clock enable + 11 + 1 + + + SPI1EN + SPI1 clock enable + 12 + 1 + + + USART1EN + USART1 clock enable + 14 + 1 + + + TIM14EN + TIM14 clock enable + 15 + 1 + + + TIM15EN + TIM15 clock enable + 16 + 1 + + + TIM16EN + TIM16 clock enable + 17 + 1 + + + TIM17EN + TIM17 clock enable + 18 + 1 + + + COMP1EN + COMP1 clock enable + 20 + 1 + + + COMP2EN + COMP2 clock enable + 21 + 1 + + + COMP3EN + COMP3 clock enable + 22 + 1 + + + LCDEN + LCD clock enable + 23 + 1 + + + + + CCIPR + CCIPR + + Peripherals independent clock configuration + register + + 0x54 + 0x20 + read-write + 0x00000000 + + + LPTIM1SEL + + LPTIM1 clock source + selection + + 18 + 2 + + + COMP3SEL + + COMP3 clock source + selection + + 10 + 1 + + + COMP2SEL + + COMP2 clock source + selection + + 9 + 1 + + + COMP1SEL + + COMP1 clock source + selection + + 8 + 1 + + + PVDSEL + + PVD detect clock source + selection + + 7 + 1 + + + CANSEL + + CAN detect clock source + selection + + 6 + 1 + + + + + BDCR + BDCR + RTC domain control register + 0x5C + 0x20 + read-write + 0x00000000 + + + LSCOSEL + + Low-speed clock output + selection + + 25 + 1 + + + LSCOEN + + Low-speed clock output (LSCO) + enable + + 24 + 1 + + + BDRST + RTC domain software reset + 16 + 1 + + + RTCEN + RTC clock source enable + 15 + 1 + + + RTCSEL + RTC clock source selection + 8 + 2 + + + LSECSSD + LSE CSS detect + 6 + 1 + + + LSECSSON + LSE CSS enable + 5 + 1 + + + LSEBYP + LSE oscillator bypass + 2 + 1 + + + LSERDY + LSE oscillator ready + 1 + 1 + + + LSEON + LSE oscillator enable + 0 + 1 + + + + + CSR + CSR + Control/status register + 0x60 + 0x20 + read-write + 0x00000000 + + + WWDGRSTF + Window watchdog reset flag + 30 + 1 + + + IWDGRSTF + + Independent window watchdog reset + flag + + 29 + 1 + + + SFTRSTF + Software reset flag + 28 + 1 + + + PWRRSTF + BOR or POR/PDR flag + 27 + 1 + + + PINRSTF + Pin reset flag + 26 + 1 + + + OBLRSTF + + Option byte loader reset + flag + + 25 + 1 + + + RMVF + Remove reset flags + 23 + 1 + + + NRST_FLTDIS + NRST_FLTDIS oscillator ready + 8 + 1 + + + LSIRDY + LSI oscillator ready + 1 + 1 + + + LSION + LSI oscillator enable + 0 + 1 + + + + + + + RTC + desc RTC + RTC + 0x40002800 + + 0x0 + 0x400 + registers + + + RTC + RTC Interrupt through EXTI Lines 19 + 2 + + + + CRH + desc CRH + 0x0 + 32 + read-write + 0x0 + + + SECIE + desc SECIE + 0 + 0 + read-write + + + ALRIE + desc ALRIE + 1 + 1 + read-write + + + OWIE + desc OWIE + 2 + 2 + read-write + + + + + CRL + desc CRL + 0x4 + 32 + read-write + 0x20 + + + + SECF + desc SECF + 0 + 0 + read-write + + + ALRF + desc ALRF + 1 + 1 + read-write + + + OWF + desc OWF + 2 + 2 + read-write + + + RSF + desc RSF + 3 + 3 + read-write + + + CNF + desc CNF + 4 + 4 + read-write + + + RTOFF + desc RTOFF + 5 + 5 + read-only + + + + + PRLH + desc PRLH + 0x8 + 32 + write-only + 0x0 + + + PRL + desc PRL + 3 + 0 + write-only + + + + + PRLL + desc PRLL + 0xC + 32 + write-only + 0x8000 + + + PRL + desc PRL + 15 + 0 + write-only + + + + + DIVH + desc DIVH + 0x10 + 32 + read-only + 0x0 + + + DIV + desc DIV + 3 + 0 + read-only + + + + + DIVL + desc DIVL + 0x14 + 32 + read-only + 0x8000 + + + DIV + desc DIV + 15 + 0 + read-only + + + + + CNTH + desc CNTH + 0x18 + 32 + read-write + 0x0 + + + RTC_CNT + desc RTC_CNT + 15 + 0 + read-write + + + + + CNTL + desc CNTL + 0x1C + 32 + read-write + 0x0 + + + RTC_CNT + desc RTC_CNT + 15 + 0 + read-write + + + + + ALRH + desc ALRH + 0x20 + 32 + read-write + 0xFFFF + + + RTC_ALR + desc RTC_ALR + 15 + 0 + read-write + + + + + ALRL + desc ALRL + 0x24 + 32 + read-write + 0xFFFF + + + RTC_ALR + desc RTC_ALR + 15 + 0 + read-write + + + + + BKP_RTCCR + desc BKP_RTCCR + 0x2C + 32 + read-write + 0x0 + + + CAL + desc CAL + 6 + 0 + read-write + + + CCO + desc CCO + 7 + 7 + read-write + + + ASOE + desc ASOE + 8 + 8 + read-write + + + ASOS + desc ASOS + 9 + 9 + read-write + + + + + + + SPI1 + Serial peripheral interface + SPI + 0x40013000 + + 0x0 + 0x400 + registers + + + SPI1 + SPI1 global Interrupt + 25 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + + + CPHA + desc CPHA + 0 + 0 + read-write + + + CPOL + desc CPOL + 1 + 1 + read-write + + + MSTR + desc MSTR + 2 + 2 + read-write + + + BR + desc BR + 5 + 3 + read-write + + + SPE + desc SPE + 6 + 6 + read-write + + + LSBFIRST + desc LSBFIRST + 7 + 7 + read-write + + + SSI + desc SSI + 8 + 8 + read-write + + + SSM + desc SSM + 9 + 9 + read-write + + + RXONLY + desc RXONLY + 10 + 10 + read-write + + + DDF + desc DDF + 11 + 11 + read-write + + + CRCNEXT + desc CRCNEXT + 12 + 12 + read-write + + + CRCEN + desc CRCEN + 13 + 13 + read-write + + + BIDIOE + desc BIDIOE + 14 + 14 + read-write + + + BIDIMODE + desc BIDIMODE + 15 + 15 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + + + RXDMAEN + desc RXDMAEN + 0 + 0 + read-write + + + TXDMAEN + desc TXDMAEN + 1 + 1 + read-write + + + SSOE + desc SSOE + 2 + 2 + read-write + + + CLRTXFIFO + desc CLRTXFIFO + 4 + 4 + read-write + + + ERRIE + desc ERRIE + 5 + 5 + read-write + + + RXNEIE + desc RXNEIE + 6 + 6 + read-write + + + TXEIE + desc TXEIE + 7 + 7 + read-write + + + FRXTH + desc FRXTH + 12 + 12 + read-write + + + LDMA_RX + desc LDMA_RX + 13 + 13 + read-write + + + LDMA_TX + desc LDMA_TX + 14 + 14 + read-write + + + + + SR + desc SR + 0x8 + 32 + read-write + 0x2 + + + RXNE + desc RXNE + 0 + 0 + read-only + + + TXE + desc TXE + 1 + 1 + read-only + + + CHSIDE + desc CHSIDE + 2 + 2 + read-only + + + UDR + desc UDR + 3 + 3 + read-only + + + CRCERR + desc CRCERR + 4 + 4 + read-write + + + MODF + desc MODF + 5 + 5 + read-only + + + OVR + desc OVR + 6 + 6 + read-only + + + BSY + desc BSY + 7 + 7 + read-only + + + FRLVL + desc FRLVL + 10 + 9 + read-only + + + FTLVL + desc FTLVL + 12 + 11 + read-only + + + + + DR + desc DR + 0xC + 32 + read-write + 0x0 + + + DR + desc DR + 15 + 0 + read-write + + + + + CRCPR + desc CRCPR + 0x10 + 32 + read-write + 0x7 + + + CRCPOLY + desc CRCPOLY + 15 + 0 + read-write + + + + + RXCRCR + desc RXCRCR + 0x14 + 32 + read-only + 0x0 + + + RXCRC + desc RXCRC + 15 + 0 + read-only + + + + + TXCRCR + desc TXCRCR + 0x18 + 32 + read-only + 0x0 + + + TXCRC + desc TXCRC + 15 + 0 + read-only + + + + + I2SCFGR + desc I2SCFGR + 0x1C + 32 + read-write + 0x0 + + + CHLEN + desc CHLEN + 0 + 0 + read-write + + + DATLEN + desc DATLEN + 2 + 1 + read-write + + + CKPOL + desc CKPOL + 3 + 3 + read-write + + + I2SSTD + desc I2SSTD + 5 + 4 + read-write + + + PCMSYNC + desc PCMSYNC + 7 + 7 + read-write + + + I2SCFG + desc I2SCFG + 9 + 8 + read-write + + + I2SE + desc I2SE + 10 + 10 + read-write + + + I2SMOD + desc I2SMOD + 11 + 11 + read-write + + + + + I2SPR + desc I2SPR + 0x20 + 32 + read-write + 0x2 + + + I2SDIV + desc I2SDIV + 7 + 0 + read-write + + + ODD + desc ODD + 8 + 8 + read-write + + + MCKOE + desc MCKOE + 9 + 9 + read-write + + + + + + + SPI2 + 0x40003800 + + SPI2 + SPI2 global Interrupt + 26 + + + + SYSCFG + desc SYSCFG + SYSCFG + 0x40010000 + + 0x0 + 0x200 + registers + + + + CFGR1 + desc CFGR1 + 0x0 + 32 + read-write + 0xFF0000 + + + MEM_MODE + desc MEM_MODE + 1 + 0 + read-write + + + TIM1_IC1_SRC + desc TIM1_IC1_SRC + 3 + 2 + read-write + + + TIM2_IC4_SRC + desc TIM2_IC4_SRC + 5 + 4 + read-write + + + TIM3_IC1_SRC + desc TIM3_IC1_SRC + 7 + 6 + read-write + + + ETR_SRC_TIM1 + desc ETR_SRC_TIM1 + 10 + 8 + read-write + + + ETR_SRC_TIM2 + desc ETR_SRC_TIM2 + 14 + 12 + read-write + + + ETR_SRC_TIM3 + desc ETR_SRC_TIM3 + 18 + 16 + read-write + + + GPIO_AHB_SEL + desc GPIO_AHB_SEL + 24 + 24 + read-write + + + + + CFGR2 + desc CFGR2 + 0x4 + 32 + read-write + 0x4 + + + LOCKUP_LOCK + desc LOCKUP_LOCK + 0 + 0 + read-write + + + PVD_LOCK + desc PVD_LOCK + 2 + 2 + read-write + + + COMP1_BRK_TIM1 + desc COMP1_BRK_TIM1 + 3 + 3 + read-write + + + COMP2_BRK_TIM1 + desc COMP2_BRK_TIM1 + 4 + 4 + read-write + + + COMP3_BRK_TIM1 + desc COMP3_BRK_TIM1 + 5 + 5 + read-write + + + COMP1_BRK_TIM15 + desc COMP1_BRK_TIM15 + 6 + 6 + read-write + + + COMP2_BRK_TIM15 + desc COMP2_BRK_TIM15 + 7 + 7 + read-write + + + COMP3_BRK_TIM15 + desc COMP3_BRK_TIM15 + 8 + 8 + read-write + + + COMP1_BRK_TIM16 + desc COMP1_BRK_TIM16 + 9 + 9 + read-write + + + COMP2_BRK_TIM16 + desc COMP2_BRK_TIM16 + 10 + 10 + read-write + + + COMP3_BRK_TIM16 + desc COMP3_BRK_TIM16 + 11 + 11 + read-write + + + COMP1_BRK_TIM17 + desc COMP1_BRK_TIM17 + 12 + 12 + read-write + + + COMP2_BRK_TIM17 + desc COMP2_BRK_TIM17 + 13 + 13 + read-write + + + COMP3_BRK_TIM17 + desc COMP3_BRK_TIM17 + 14 + 14 + read-write + + + COMP1_OCREF_CLR_TIM1 + desc COMP1_OCREF_CLR_TIM1 + 15 + 15 + read-write + + + COMP1_OCREF_CLR_TIM2 + desc COMP1_OCREF_CLR_TIM2 + 16 + 16 + read-write + + + COMP1_OCREF_CLR_TIM3 + desc COMP1_OCREF_CLR_TIM3 + 17 + 17 + read-write + + + COMP2_OCREF_CLR_TIM1 + desc COMP2_OCREF_CLR_TIM1 + 18 + 18 + read-write + + + COMP2_OCREF_CLR_TIM2 + desc COMP2_OCREF_CLR_TIM2 + 19 + 19 + read-write + + + COMP2_OCREF_CLR_TIM3 + desc COMP2_OCREF_CLR_TIM3 + 20 + 20 + read-write + + + COMP3_OCREF_CLR_TIM1 + desc COMP3_OCREF_CLR_TIM1 + 21 + 21 + read-write + + + COMP3_OCREF_CLR_TIM2 + desc COMP3_OCREF_CLR_TIM2 + 22 + 22 + read-write + + + COMP3_OCREF_CLR_TIM3 + desc COMP3_OCREF_CLR_TIM3 + 23 + 23 + read-write + + + + + CFGR3 + desc CFGR3 + 0x8 + 32 + read-write + 0x0 + + + DMA1_MAP + desc DMA1_MAP + 5 + 0 + read-write + + + DMA2_MAP + desc DMA2_MAP + 13 + 8 + read-write + + + DMA3_MAP + desc DMA3_MAP + 21 + 16 + read-write + + + DMA4_MAP + desc DMA4_MAP + 29 + 24 + read-write + + + + + CFGR4 + desc CFGR4 + 0xC + 32 + read-write + 0x0 + + + DMA5_MAP + desc DMA5_MAP + 5 + 0 + read-write + + + DMA6_MAP + desc DMA6_MAP + 13 + 8 + read-write + + + DMA7_MAP + desc DMA7_MAP + 21 + 16 + read-write + + + + + PAENS + desc PAENS + 0x10 + 32 + read-write + 0x0 + + + PA_ENS + desc PA_ENS + 15 + 0 + read-write + + + + + PBENS + desc PBENS + 0x14 + 32 + read-write + 0x0 + + + PB_ENS + desc PB_ENS + 15 + 0 + read-write + + + + + PCENS + desc PCENS + 0x18 + 32 + read-write + 0x0 + + + PC_ENS + desc PC_ENS + 15 + 0 + read-write + + + + + PFENS + desc PFENS + 0x1C + 32 + read-write + 0x0 + + + PF_ENS + desc PF_ENS + 15 + 0 + read-write + + + + + EIIC + desc EIIC + 0x20 + 32 + read-write + 0x0 + + + PA_EIIC + desc PA_EIIC + 1 + 0 + read-write + + + PB_EIIC + desc PB_EIIC + 16 + 8 + read-write + + + PF_EIIC + desc PF_EIIC + 25 + 24 + read-write + + + + + + + TIM1 + Advanced timer + TIM + 0x40012C00 + + 0x0 + 0x400 + registers + + + TIM1_BRK_UP_TRG_COM + TIM1 Break, Update, Trigger and Commutation Interrupt + 13 + + + TIM1_CC + TIM1 Capture Compare Interrupt + 14 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + SMCR + desc SMCR + 0x8 + 32 + read-write + 0x0 + 0xFFF7 + + + SMS + desc SMS + 2 + 0 + read-write + + + TS + desc TS + 6 + 4 + read-write + + + MSM + desc MSM + 7 + 7 + read-write + + + ETF + desc ETF + 11 + 8 + read-write + + + ETPS + desc ETPS + 13 + 12 + read-write + + + ECE + desc ECE + 14 + 14 + read-write + + + ETP + desc ETP + 15 + 15 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CCMR1_OUTPUT + desc CCMR1:OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + OC1FE + desc OC1FE + 2 + 2 + read-write + + + OC1PE + desc OC1PE + 3 + 3 + read-write + + + OC1M + desc OC1M + 6 + 4 + read-write + + + OC1CE + desc OC1CE + 7 + 7 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + OC2FE + desc OC2FE + 10 + 10 + read-write + + + OC2PE + desc OC2PE + 11 + 11 + read-write + + + OC2M + desc OC2M + 14 + 12 + read-write + + + OC2CE + desc OC2CE + 15 + 15 + read-write + + + + + CCMR1_INPUT + desc CCMR1:INPUT + CCMR1_OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + IC1PSC + desc IC1PSC + 3 + 2 + read-write + + + IC1F + desc IC1F + 7 + 4 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + IC2PSC + desc IC2PSC + 11 + 10 + read-write + + + IC2F + desc IC2F + 15 + 12 + read-write + + + + + CCMR2_OUTPUT + desc CCMR2:OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + OC3FE + desc OC3FE + 2 + 2 + read-write + + + OC3PE + desc OC3PE + 3 + 3 + read-write + + + OC3M + desc OC3M + 6 + 4 + read-write + + + OC3CE + desc OC3CE + 7 + 7 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + OC4FE + desc OC4FE + 10 + 10 + read-write + + + OC4PE + desc OC4PE + 11 + 11 + read-write + + + OC4M + desc OC4M + 14 + 12 + read-write + + + OC4CE + desc OC4CE + 15 + 15 + read-write + + + + + CCMR2_INPUT + desc CCMR2:INPUT + CCMR2_OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + IC3PSC + desc IC3PSC + 3 + 2 + read-write + + + IC3F + desc IC3F + 7 + 4 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + IC4PSC + desc IC4PSC + 11 + 10 + read-write + + + IC4F + desc IC4F + 15 + 12 + read-write + + + + + CCER + desc CCER + 0x20 + 32 + read-write + 0x0 + 0x3333 + + + CC1E + desc CC1E + 0 + 0 + read-write + + + CC1P + desc CC1P + 1 + 1 + read-write + + + CC2E + desc CC2E + 4 + 4 + read-write + + + CC2P + desc CC2P + 5 + 5 + read-write + + + CC3E + desc CC3E + 8 + 8 + read-write + + + CC3P + desc CC3P + 9 + 9 + read-write + + + CC4E + desc CC4E + 12 + 12 + read-write + + + CC4P + desc CC4P + 13 + 13 + read-write + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + RCR + desc RCR + 0x30 + 32 + read-write + 0xFFFF + 0xFFFF + + + REP + desc REP + 7 + 0 + read-write + + + + + CCR1 + desc CCR1 + 0x34 + 32 + read-write + 0x0 + 0xFFFF + + + CCR1 + desc CCR1 + 15 + 0 + read-write + + + + + CCR2 + desc CCR2 + 0x38 + 32 + read-write + 0x0 + 0xFFFF + + + CCR2 + desc CCR2 + 15 + 0 + read-write + + + + + CCR3 + desc CCR3 + 0x3C + 32 + read-write + 0x0 + 0xFFFF + + + CCR3 + desc CCR3 + 15 + 0 + read-write + + + + + CCR4 + desc CCR4 + 0x40 + 32 + read-write + 0x0 + 0xFFFF + + + CCR4 + desc CCR4 + 15 + 0 + read-write + + + + + BDTR + desc BDTR + 0x44 + 32 + read-write + 0x0 + 0xFFFF + + + DTG + desc DTG + 7 + 0 + read-write + + + LOCK + desc LOCK + 9 + 8 + read-write + + + OSSI + desc OSSI + 10 + 10 + read-write + + + OSSR + desc OSSR + 11 + 11 + read-write + + + BKE + desc BKE + 12 + 12 + read-write + + + BKP + desc BKP + 13 + 13 + read-write + + + AOE + desc AOE + 14 + 14 + read-write + + + MOE + desc MOE + 15 + 15 + read-write + + + + + DCR + desc DCR + 0x48 + 32 + read-write + 0x0 + 0x1F1F + + + DBA + desc DBA + 4 + 0 + read-write + + + DBL + desc DBL + 12 + 8 + read-write + + + + + DMAR + desc DMAR + 0x4C + 32 + read-write + 0x0 + 0xFFFF + + + DMAB + desc DMAB + 15 + 0 + read-write + + + + + + + TIM2 + desc TIM + TIM + 0x40000000 + + 0x0 + 0x400 + registers + + + TIM2 + TIM2 global Interrupt + 15 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + SMCR + desc SMCR + 0x8 + 32 + read-write + 0x0 + 0xFFF7 + + + SMS + desc SMS + 2 + 0 + read-write + + + TS + desc TS + 6 + 4 + read-write + + + MSM + desc MSM + 7 + 7 + read-write + + + ETF + desc ETF + 11 + 8 + read-write + + + ETPS + desc ETPS + 13 + 12 + read-write + + + ECE + desc ECE + 14 + 14 + read-write + + + ETP + desc ETP + 15 + 15 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CCMR1_OUTPUT + desc CCMR1:OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + OC1FE + desc OC1FE + 2 + 2 + read-write + + + OC1PE + desc OC1PE + 3 + 3 + read-write + + + OC1M + desc OC1M + 6 + 4 + read-write + + + OC1CE + desc OC1CE + 7 + 7 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + OC2FE + desc OC2FE + 10 + 10 + read-write + + + OC2PE + desc OC2PE + 11 + 11 + read-write + + + OC2M + desc OC2M + 14 + 12 + read-write + + + OC2CE + desc OC2CE + 15 + 15 + read-write + + + + + CCMR1_INPUT + desc CCMR1:INPUT + CCMR1_OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + IC1PSC + desc IC1PSC + 3 + 2 + read-write + + + IC1F + desc IC1F + 7 + 4 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + IC2PSC + desc IC2PSC + 11 + 10 + read-write + + + IC2F + desc IC2F + 15 + 12 + read-write + + + + + CCMR2_OUTPUT + desc CCMR2:OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + OC3FE + desc OC3FE + 2 + 2 + read-write + + + OC3PE + desc OC3PE + 3 + 3 + read-write + + + OC3M + desc OC3M + 6 + 4 + read-write + + + OC3CE + desc OC3CE + 7 + 7 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + OC4FE + desc OC4FE + 10 + 10 + read-write + + + OC4PE + desc OC4PE + 11 + 11 + read-write + + + OC4M + desc OC4M + 14 + 12 + read-write + + + OC4CE + desc OC4CE + 15 + 15 + read-write + + + + + CCMR2_INPUT + desc CCMR2:INPUT + CCMR2_OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + IC3PSC + desc IC3PSC + 3 + 2 + read-write + + + IC3F + desc IC3F + 7 + 4 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + IC4PSC + desc IC4PSC + 11 + 10 + read-write + + + IC4F + desc IC4F + 15 + 12 + read-write + + + + + CCER + desc CCER + 0x20 + 32 + read-write + 0x0 + 0x3333 + + + CC1E + desc CC1E + 0 + 0 + read-write + + + CC1P + desc CC1P + 1 + 1 + read-write + + + CC2E + desc CC2E + 4 + 4 + read-write + + + CC2P + desc CC2P + 5 + 5 + read-write + + + CC3E + desc CC3E + 8 + 8 + read-write + + + CC3P + desc CC3P + 9 + 9 + read-write + + + CC4E + desc CC4E + 12 + 12 + read-write + + + CC4P + desc CC4P + 13 + 13 + read-write + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + CCR1 + desc CCR1 + 0x34 + 32 + read-write + 0x0 + 0xFFFF + + + CCR1 + desc CCR1 + 15 + 0 + read-write + + + + + CCR2 + desc CCR2 + 0x38 + 32 + read-write + 0x0 + 0xFFFF + + + CCR2 + desc CCR2 + 15 + 0 + read-write + + + + + CCR3 + desc CCR3 + 0x3C + 32 + read-write + 0x0 + 0xFFFF + + + CCR3 + desc CCR3 + 15 + 0 + read-write + + + + + CCR4 + desc CCR4 + 0x40 + 32 + read-write + 0x0 + 0xFFFF + + + CCR4 + desc CCR4 + 15 + 0 + read-write + + + + + DCR + desc DCR + 0x48 + 32 + read-write + 0x0 + 0x1F1F + + + DBA + desc DBA + 4 + 0 + read-write + + + DBL + desc DBL + 12 + 8 + read-write + + + + + DMAR + desc DMAR + 0x4C + 32 + read-write + 0x0 + 0xFFFF + + + DMAB + desc DMAB + 15 + 0 + read-write + + + + + + + TIM3 + General purpose timer + TIM + 0x40000400 + + 0x00 + 0x400 + registers + + + TIM3 + TIM3 global Interrupt + 16 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + SMCR + desc SMCR + 0x8 + 32 + read-write + 0x0 + 0xFFF7 + + + SMS + desc SMS + 2 + 0 + read-write + + + TS + desc TS + 6 + 4 + read-write + + + MSM + desc MSM + 7 + 7 + read-write + + + ETF + desc ETF + 11 + 8 + read-write + + + ETPS + desc ETPS + 13 + 12 + read-write + + + ECE + desc ECE + 14 + 14 + read-write + + + ETP + desc ETP + 15 + 15 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CCMR1_OUTPUT + desc CCMR1:OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + OC1FE + desc OC1FE + 2 + 2 + read-write + + + OC1PE + desc OC1PE + 3 + 3 + read-write + + + OC1M + desc OC1M + 6 + 4 + read-write + + + OC1CE + desc OC1CE + 7 + 7 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + OC2FE + desc OC2FE + 10 + 10 + read-write + + + OC2PE + desc OC2PE + 11 + 11 + read-write + + + OC2M + desc OC2M + 14 + 12 + read-write + + + OC2CE + desc OC2CE + 15 + 15 + read-write + + + + + CCMR1_INPUT + desc CCMR1:INPUT + CCMR1_OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + IC1PSC + desc IC1PSC + 3 + 2 + read-write + + + IC1F + desc IC1F + 7 + 4 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + IC2PSC + desc IC2PSC + 11 + 10 + read-write + + + IC2F + desc IC2F + 15 + 12 + read-write + + + + + CCMR2_OUTPUT + desc CCMR2:OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + OC3FE + desc OC3FE + 2 + 2 + read-write + + + OC3PE + desc OC3PE + 3 + 3 + read-write + + + OC3M + desc OC3M + 6 + 4 + read-write + + + OC3CE + desc OC3CE + 7 + 7 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + OC4FE + desc OC4FE + 10 + 10 + read-write + + + OC4PE + desc OC4PE + 11 + 11 + read-write + + + OC4M + desc OC4M + 14 + 12 + read-write + + + OC4CE + desc OC4CE + 15 + 15 + read-write + + + + + CCMR2_INPUT + desc CCMR2:INPUT + CCMR2_OUTPUT + 0x1C + 32 + read-write + 0x0 + 0xFFFF + + + CC3S + desc CC3S + 1 + 0 + read-write + + + IC3PSC + desc IC3PSC + 3 + 2 + read-write + + + IC3F + desc IC3F + 7 + 4 + read-write + + + CC4S + desc CC4S + 9 + 8 + read-write + + + IC4PSC + desc IC4PSC + 11 + 10 + read-write + + + IC4F + desc IC4F + 15 + 12 + read-write + + + + + CCER + desc CCER + 0x20 + 32 + read-write + 0x0 + 0x3333 + + + CC1E + desc CC1E + 0 + 0 + read-write + + + CC1P + desc CC1P + 1 + 1 + read-write + + + CC2E + desc CC2E + 4 + 4 + read-write + + + CC2P + desc CC2P + 5 + 5 + read-write + + + CC3E + desc CC3E + 8 + 8 + read-write + + + CC3P + desc CC3P + 9 + 9 + read-write + + + CC4E + desc CC4E + 12 + 12 + read-write + + + CC4P + desc CC4P + 13 + 13 + read-write + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + CCR1 + desc CCR1 + 0x34 + 32 + read-write + 0x0 + 0xFFFF + + + CCR1 + desc CCR1 + 15 + 0 + read-write + + + + + CCR2 + desc CCR2 + 0x38 + 32 + read-write + 0x0 + 0xFFFF + + + CCR2 + desc CCR2 + 15 + 0 + read-write + + + + + CCR3 + desc CCR3 + 0x3C + 32 + read-write + 0x0 + 0xFFFF + + + CCR3 + desc CCR3 + 15 + 0 + read-write + + + + + CCR4 + desc CCR4 + 0x40 + 32 + read-write + 0x0 + 0xFFFF + + + CCR4 + desc CCR4 + 15 + 0 + read-write + + + + + DCR + desc DCR + 0x48 + 32 + read-write + 0x0 + 0x1F1F + + + DBA + desc DBA + 4 + 0 + read-write + + + DBL + desc DBL + 12 + 8 + read-write + + + + + DMAR + desc DMAR + 0x4C + 32 + read-write + 0x0 + 0xFFFF + + + DMAB + desc DMAB + 15 + 0 + read-write + + + + + + + TIM6 + desc TIM + TIM + 0x40001000 + + 0x0 + 0x400 + registers + + + TIM6_LPTIM1_DAC + TIM6, LPTIM1, DAC global Interrupts + 17 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + + + TIM7 + desc TIM + TIM + 0x40001400 + + 0x0 + 0x400 + registers + + + TIM7 + TIM7 global Interrupt + 18 + + + + TIM14 + General purpose timer + TIM + 0x40002000 + + 0x00 + 0x400 + registers + + + TIM14 + TIM14 global Interrupt + 19 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CCMR1_OUTPUT + desc CCMR1:OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + OC1FE + desc OC1FE + 2 + 2 + read-write + + + OC1PE + desc OC1PE + 3 + 3 + read-write + + + OC1M + desc OC1M + 6 + 4 + read-write + + + OC1CE + desc OC1CE + 7 + 7 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + OC2FE + desc OC2FE + 10 + 10 + read-write + + + OC2PE + desc OC2PE + 11 + 11 + read-write + + + OC2M + desc OC2M + 14 + 12 + read-write + + + OC2CE + desc OC2CE + 15 + 15 + read-write + + + + + CCMR1_INPUT + desc CCMR1:INPUT + CCMR1_OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + IC1PSC + desc IC1PSC + 3 + 2 + read-write + + + IC1F + desc IC1F + 7 + 4 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + IC2PSC + desc IC2PSC + 11 + 10 + read-write + + + IC2F + desc IC2F + 15 + 12 + read-write + + + + + CCER + desc CCER + 0x20 + 32 + read-write + 0x0 + 0x3333 + + + CC1E + desc CC1E + 0 + 0 + read-write + + + CC1P + desc CC1P + 1 + 1 + read-write + + + CC2E + desc CC2E + 4 + 4 + read-write + + + CC2P + desc CC2P + 5 + 5 + read-write + + + CC3E + desc CC3E + 8 + 8 + read-write + + + CC3P + desc CC3P + 9 + 9 + read-write + + + CC4E + desc CC4E + 12 + 12 + read-write + + + CC4P + desc CC4P + 13 + 13 + read-write + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + CCR1 + desc CCR1 + 0x34 + 32 + read-write + 0x0 + 0xFFFF + + + CCR1 + desc CCR1 + 15 + 0 + read-write + + + + + OR + desc OR + 0x50 + 32 + read-write + 0x0 + + + TI1_RMP + desc TI1_RMP + 1 + 0 + read-write + + + + + + + TIM15 + 0x40014000 + + 0x0 + 0x400 + registers + + + TIM15 + TIM15 global Interrupt + 20 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + SMCR + desc SMCR + 0x8 + 32 + read-write + 0x0 + 0xFFF7 + + + SMS + desc SMS + 2 + 0 + read-write + + + TS + desc TS + 6 + 4 + read-write + + + MSM + desc MSM + 7 + 7 + read-write + + + ETF + desc ETF + 11 + 8 + read-write + + + ETPS + desc ETPS + 13 + 12 + read-write + + + ECE + desc ECE + 14 + 14 + read-write + + + ETP + desc ETP + 15 + 15 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CCMR1_OUTPUT + desc CCMR1:OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + OC1FE + desc OC1FE + 2 + 2 + read-write + + + OC1PE + desc OC1PE + 3 + 3 + read-write + + + OC1M + desc OC1M + 6 + 4 + read-write + + + OC1CE + desc OC1CE + 7 + 7 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + OC2FE + desc OC2FE + 10 + 10 + read-write + + + OC2PE + desc OC2PE + 11 + 11 + read-write + + + OC2M + desc OC2M + 14 + 12 + read-write + + + OC2CE + desc OC2CE + 15 + 15 + read-write + + + + + CCMR1_INPUT + desc CCMR1:INPUT + CCMR1_OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + IC1PSC + desc IC1PSC + 3 + 2 + read-write + + + IC1F + desc IC1F + 7 + 4 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + IC2PSC + desc IC2PSC + 11 + 10 + read-write + + + IC2F + desc IC2F + 15 + 12 + read-write + + + + + CCER + desc CCER + 0x20 + 32 + read-write + 0x0 + 0x3333 + + + CC1E + desc CC1E + 0 + 0 + read-write + + + CC1P + desc CC1P + 1 + 1 + read-write + + + CC2E + desc CC2E + 4 + 4 + read-write + + + CC2P + desc CC2P + 5 + 5 + read-write + + + CC3E + desc CC3E + 8 + 8 + read-write + + + CC3P + desc CC3P + 9 + 9 + read-write + + + CC4E + desc CC4E + 12 + 12 + read-write + + + CC4P + desc CC4P + 13 + 13 + read-write + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + RCR + desc RCR + 0x30 + 32 + read-write + 0xFFFF + 0xFFFF + + + REP + desc REP + 7 + 0 + read-write + + + + + CCR1 + desc CCR1 + 0x34 + 32 + read-write + 0x0 + 0xFFFF + + + CCR1 + desc CCR1 + 15 + 0 + read-write + + + + + CCR2 + desc CCR2 + 0x38 + 32 + read-write + 0x0 + 0xFFFF + + + CCR2 + desc CCR2 + 15 + 0 + read-write + + + + + BDTR + desc BDTR + 0x44 + 32 + read-write + 0x0 + 0xFFFF + + + DTG + desc DTG + 7 + 0 + read-write + + + LOCK + desc LOCK + 9 + 8 + read-write + + + OSSI + desc OSSI + 10 + 10 + read-write + + + OSSR + desc OSSR + 11 + 11 + read-write + + + BKE + desc BKE + 12 + 12 + read-write + + + BKP + desc BKP + 13 + 13 + read-write + + + AOE + desc AOE + 14 + 14 + read-write + + + MOE + desc MOE + 15 + 15 + read-write + + + + + DCR + desc DCR + 0x48 + 32 + read-write + 0x0 + 0x1F1F + + + DBA + desc DBA + 4 + 0 + read-write + + + DBL + desc DBL + 12 + 8 + read-write + + + + + DMAR + desc DMAR + 0x4C + 32 + read-write + 0x0 + 0xFFFF + + + DMAB + desc DMAB + 15 + 0 + read-write + + + + + + + TIM16 + General purpose timer + TIM + 0x40014400 + + 0x00 + 0x400 + registers + + + TIM16 + TIM16 global Interrupt + 21 + + + + CR1 + desc CR1 + 0x0 + 32 + read-write + 0x0 + 0x3FF + + + CEN + desc CEN + 0 + 0 + read-write + + + UDIS + desc UDIS + 1 + 1 + read-write + + + URS + desc URS + 2 + 2 + read-write + + + OPM + desc OPM + 3 + 3 + read-write + + + DIR + desc DIR + 4 + 4 + read-write + + + CMS + desc CMS + 6 + 5 + read-write + + + ARPE + desc ARPE + 7 + 7 + read-write + + + CKD + desc CKD + 9 + 8 + read-write + + + + + CR2 + desc CR2 + 0x4 + 32 + read-write + 0x0 + 0xF8 + + + CCDS + desc CCDS + 3 + 3 + read-write + + + MMS + desc MMS + 6 + 4 + read-write + + + TI1S + desc TI1S + 7 + 7 + read-write + + + + + DIER + desc DIER + 0xC + 32 + read-write + 0x0 + 0x5F5F + + + UIE + desc UIE + 0 + 0 + read-write + + + CC1IE + desc CC1IE + 1 + 1 + read-write + + + CC2IE + desc CC2IE + 2 + 2 + read-write + + + CC3IE + desc CC3IE + 3 + 3 + read-write + + + CC4IE + desc CC4IE + 4 + 4 + read-write + + + TIE + desc TIE + 6 + 6 + read-write + + + UDE + desc UDE + 8 + 8 + read-write + + + CC1DE + desc CC1DE + 9 + 9 + read-write + + + CC2DE + desc CC2DE + 10 + 10 + read-write + + + CC3DE + desc CC3DE + 11 + 11 + read-write + + + CC4DE + desc CC4DE + 12 + 12 + read-write + + + TDE + desc TDE + 14 + 14 + read-write + + + + + SR + desc SR + 0x10 + 32 + read-write + 0x0 + 0x1E5F + + + UIF + desc UIF + 0 + 0 + read-write + + + CC1IF + desc CC1IF + 1 + 1 + read-write + + + CC2IF + desc CC2IF + 2 + 2 + read-write + + + CC3IF + desc CC3IF + 3 + 3 + read-write + + + CC4IF + desc CC4IF + 4 + 4 + read-write + + + COMIF + desc COMIF + 5 + 5 + read-write + + + TIF + desc TIF + 6 + 6 + read-write + + + BIF + desc BIF + 7 + 7 + read-write + + + CC1OF + desc CC1OF + 9 + 9 + read-write + + + CC2OF + desc CC2OF + 10 + 10 + read-write + + + CC3OF + desc CC3OF + 11 + 11 + read-write + + + CC4OF + desc CC4OF + 12 + 12 + read-write + + + IC1IR + desc IC1IR + 16 + 16 + read-write + + + IC2IR + desc IC2IR + 17 + 17 + read-write + + + IC3IR + desc IC3IR + 18 + 18 + read-write + + + IC4IR + desc IC3IR + 19 + 19 + read-write + + + IC1IF + desc IC1IF + 20 + 20 + read-write + + + IC2IF + desc IC2IF + 21 + 21 + read-write + + + IC3IF + desc IC3IF + 22 + 22 + read-write + + + IC4IF + desc IC3IF + 23 + 23 + read-write + + + + + EGR + desc EGR + 0x14 + 32 + write-only + 0x0 + 0x5F + + + UG + desc UG + 0 + 0 + write-only + + + CC1G + Capture/Compare 1 Generation + 1 + 1 + write-only + + + CC2G + desc CC2G + 2 + 2 + write-only + + + CC3G + desc CC3G + 3 + 3 + write-only + + + CC4G + desc CC4G + 4 + 4 + write-only + + + TG + desc TG + 6 + 6 + write-only + + + + + CCMR1_OUTPUT + desc CCMR1:OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + OC1FE + desc OC1FE + 2 + 2 + read-write + + + OC1PE + desc OC1PE + 3 + 3 + read-write + + + OC1M + desc OC1M + 6 + 4 + read-write + + + OC1CE + desc OC1CE + 7 + 7 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + OC2FE + desc OC2FE + 10 + 10 + read-write + + + OC2PE + desc OC2PE + 11 + 11 + read-write + + + OC2M + desc OC2M + 14 + 12 + read-write + + + OC2CE + desc OC2CE + 15 + 15 + read-write + + + + + CCMR1_INPUT + desc CCMR1:INPUT + CCMR1_OUTPUT + 0x18 + 32 + read-write + 0x0 + 0xFFFF + + + CC1S + desc CC1S + 1 + 0 + read-write + + + IC1PSC + desc IC1PSC + 3 + 2 + read-write + + + IC1F + desc IC1F + 7 + 4 + read-write + + + CC2S + desc CC2S + 9 + 8 + read-write + + + IC2PSC + desc IC2PSC + 11 + 10 + read-write + + + IC2F + desc IC2F + 15 + 12 + read-write + + + + + CCER + desc CCER + 0x20 + 32 + read-write + 0x0 + 0x3333 + + + CC1E + desc CC1E + 0 + 0 + read-write + + + CC1P + desc CC1P + 1 + 1 + read-write + + + CC2E + desc CC2E + 4 + 4 + read-write + + + CC2P + desc CC2P + 5 + 5 + read-write + + + CC3E + desc CC3E + 8 + 8 + read-write + + + CC3P + desc CC3P + 9 + 9 + read-write + + + CC4E + desc CC4E + 12 + 12 + read-write + + + CC4P + desc CC4P + 13 + 13 + read-write + + + + + CNT + desc CNT + 0x24 + 32 + read-write + 0x0 + 0xFFFF + + + CNT + desc CNT + 15 + 0 + read-write + + + + + PSC + desc PSC + 0x28 + 32 + read-write + 0x0 + 0xFFFF + + + PSC + desc PSC + 15 + 0 + read-write + + + + + ARR + desc ARR + 0x2C + 32 + read-write + 0xFFFF + 0xFFFF + + + ARR + desc ARR + 15 + 0 + read-write + + + + + RCR + desc RCR + 0x30 + 32 + read-write + 0xFFFF + 0xFFFF + + + REP + desc REP + 7 + 0 + read-write + + + + + CCR1 + desc CCR1 + 0x34 + 32 + read-write + 0x0 + 0xFFFF + + + CCR1 + desc CCR1 + 15 + 0 + read-write + + + + + BDTR + desc BDTR + 0x44 + 32 + read-write + 0x0 + 0xFFFF + + + DTG + desc DTG + 7 + 0 + read-write + + + LOCK + desc LOCK + 9 + 8 + read-write + + + OSSI + desc OSSI + 10 + 10 + read-write + + + OSSR + desc OSSR + 11 + 11 + read-write + + + BKE + desc BKE + 12 + 12 + read-write + + + BKP + desc BKP + 13 + 13 + read-write + + + AOE + desc AOE + 14 + 14 + read-write + + + MOE + desc MOE + 15 + 15 + read-write + + + + + DCR + desc DCR + 0x48 + 32 + read-write + 0x0 + 0x1F1F + + + DBA + desc DBA + 4 + 0 + read-write + + + DBL + desc DBL + 12 + 8 + read-write + + + + + DMAR + desc DMAR + 0x4C + 32 + read-write + 0x0 + 0xFFFF + + + DMAB + desc DMAB + 15 + 0 + read-write + + + + + + + TIM17 + 0x40014800 + + TIM17 + TIM17 global Interrupt + 22 + + + + USART1 + + Universal synchronous asynchronous receiver + transmitter + + USART + 0x40013800 + + 0x0 + 0x400 + registers + + + USART1 + USART1 global Interrupt + 27 + + + + SR + desc SR + 0x0 + 32 + read-write + 0xC0 + + + PE + desc PE + 0 + 0 + read-only + + + FE + desc FE + 1 + 1 + read-only + + + NE + desc NE + 2 + 2 + read-only + + + ORE + desc ORE + 3 + 3 + read-only + + + IDLE + desc IDLE + 4 + 4 + read-only + + + RXNE + desc RXNE + 5 + 5 + read-write + + + TC + desc TC + 6 + 6 + read-write + + + TXE + desc TXE + 7 + 7 + read-only + + + LBD + desc LBD + 8 + 8 + read-write + + + CTS + desc CTS + 9 + 9 + read-write + + + ABRF + desc ABRF + 10 + 10 + read-only + + + ABRE + desc ABRE + 11 + 11 + read-only + + + ABRRQ + desc ABRRQ + 12 + 12 + write-only + + + + + DR + desc DR + 0x4 + 32 + read-write + 0x0 + + + DR + desc DR + 8 + 0 + read-write + + + + + BRR + desc BRR + 0x8 + 32 + read-write + 0x0 + + + DIV_FRACTION + desc DIV_Fraction + 3 + 0 + read-write + + + DIV_MANTISSA + desc DIV_Mantissa + 15 + 4 + read-write + + + + + CR1 + desc CR1 + 0xC + 32 + read-write + 0x0 + + + SBK + desc SBK + 0 + 0 + read-write + + + RWU + desc RWU + 1 + 1 + read-write + + + RE + desc RE + 2 + 2 + read-write + + + TE + desc TE + 3 + 3 + read-write + + + IDLEIE + desc IDLEIE + 4 + 4 + read-write + + + RXNEIE + desc RXNEIE + 5 + 5 + read-write + + + TCIE + desc TCIE + 6 + 6 + read-write + + + TXEIE + desc TXEIE + 7 + 7 + read-write + + + PEIE + desc PEIE + 8 + 8 + read-write + + + PS + desc PS + 9 + 9 + read-write + + + PCE + desc PCE + 10 + 10 + read-write + + + WAKE + desc WAKE + 11 + 11 + read-write + + + M + desc M + 12 + 12 + read-write + + + UE + desc UE + 13 + 13 + read-write + + + + + CR2 + desc CR2 + 0x10 + 32 + read-write + 0x0 + + + ADD + desc ADD + 3 + 0 + read-write + + + LBDL + desc LBDL + 5 + 5 + read-write + + + LBDIE + desc LBDIE + 6 + 6 + read-write + + + LBCL + desc LBCL + 8 + 8 + read-write + + + CPHA + desc CPHA + 9 + 9 + read-write + + + CPOL + desc CPOL + 10 + 10 + read-write + + + CLKEN + desc CLKEN + 11 + 11 + read-write + + + STOP + desc STOP + 13 + 12 + read-write + + + LINEN + desc LINEN + 14 + 14 + read-write + + + + + CR3 + desc CR3 + 0x14 + 32 + read-write + 0x0 + + + EIE + desc EIE + 0 + 0 + read-write + + + IREN + desc IREN + 1 + 1 + read-write + + + IRLP + desc IRLP + 2 + 2 + read-write + + + HDSEL + desc HDSEL + 3 + 3 + read-write + + + NACK + desc NACK + 4 + 4 + read-write + + + SCEN + desc SCEN + 5 + 5 + read-write + + + DMAR + desc DMAR + 6 + 6 + read-write + + + DMAT + desc DMAT + 7 + 7 + read-write + + + RTSE + desc RTSE + 8 + 8 + read-write + + + CTSE + desc CTSE + 9 + 9 + read-write + + + CTSIE + desc CTSIE + 10 + 10 + read-write + + + OVER8 + desc OVER8 + 11 + 11 + read-write + + + ABREN + desc ABREN + 12 + 12 + read-write + + + ABRMODE + desc ABRMODE + 14 + 13 + read-write + + + + + GTPR + desc GTPR + 0x18 + 32 + read-write + 0x0 + + + PSC + desc PSC + 7 + 0 + read-write + + + GT + desc GT + 15 + 8 + read-write + + + + + + + USART2 + 0x40004400 + + USART2 + USART2 global Interrupt + 28 + + + + USART3 + desc USART + USART + 0x40004800 + + 0x0 + 0x400 + registers + + + USART3_4 + USART3, 4 global Interrupts + 29 + + + + USART4 + desc USART + USART + 0x40004C00 + + 0x0 + 0x400 + registers + + + USART3_4 + USART3, 4 global Interrupts + 29 + + + + USB + USB + USB + 0x40005C00 + + 0x0 + 0x400 + registers + + + USB + USB global Interrupts + 31 + + + + CR + CR + CR + 0x0 + 0x20 + read-write + 0xFFFFFFFF + + + ADD + ADD + 0 + 7 + + + UPDATE + UPDATE + 7 + 1 + + + Enable_Suspend + Enable_Suspend + 8 + 1 + + + Suspend_Mode + Suspend_Mode + 9 + 1 + + + Resume + Resume + 10 + 1 + + + Reset + Reset + 11 + 1 + + + ISO_Update + ISO_Update + 15 + 1 + + + + + INTR + INTR + INTR + 0x4 + 0x20 + read-write + 0x00000000 + + + Suspend + Suspend + 0 + 1 + + + Resume + Resume + 1 + 1 + + + Reset + Reset + 2 + 1 + + + SOF + SOF + 3 + 1 + + + EP1OUT + EP1OUT + 9 + 1 + + + EP2OUT + EP2OUT + 10 + 1 + + + EP3OUT + EP3OUT + 11 + 1 + + + EP4OUT + EP4OUT + 12 + 1 + + + EP5OUT + EP5OUT + 13 + 1 + + + EP0 + EP0 + 16 + 1 + + + EP1IN + EP1IN + 17 + 1 + + + EP2IN + EP2IN + 18 + 1 + + + EP3IN + EP3IN + 19 + 1 + + + EP4IN + EP4IN + 20 + 1 + + + EP5IN + EP5IN + 21 + 1 + + + + + INTRE + INTRE + INTRE + 0x8 + 0x20 + read-write + 0x00000000 + + + EN_Suspend + EN_Suspend + 0 + 1 + + + EN_Resume + EN_Resume + 1 + 1 + + + EN_Reset + EN_Reset + 2 + 1 + + + EN_SOF + EN_SOF + 3 + 1 + + + EP1OUTE + EP1OUTE + 9 + 1 + + + EP2OUTE + EP2OUTE + 10 + 1 + + + EP3OUTE + EP3OUTE + 11 + 1 + + + EP4OUTE + EP4OUTE + 12 + 1 + + + EP5OUTE + EP5OUTE + 13 + 1 + + + EP0 + EP0 + 16 + 1 + + + EP1INE + EP1INE + 17 + 1 + + + EP2INE + EP2INE + 18 + 1 + + + EP3INE + EP3INE + 19 + 1 + + + EP4INE + EP4INE + 20 + 1 + + + EP5INE + EP5INE + 21 + 1 + + + + + FRAME + FRAME + FRAME + 0xC + 0x20 + write-only + 0x00000000 + + + FramNUM + FramNUM + 0 + 11 + + + INDEX + INDEX + 16 + 4 + + + + + EP0CSR + EP0CSR + EP0CSR + 0x10 + 0x20 + write-only + 0x00000000 + + + OutPktRdy + OutPktRdy + 0 + 1 + + + InPktRdy + InPktRdy + 1 + 1 + + + SentStall + SentStall + 2 + 1 + + + DataEnd + DataEnd + 3 + 1 + + + SetupEnd + SetupEnd + 4 + 1 + + + SendStall + OutPktRdy + 5 + 1 + + + ServicedOutPktRdy + ServicedOutPktRdy + 6 + 1 + + + ServicedSetupEnd + ServicedSetupEnd + 7 + 1 + + + COUNT0 + COUNT0 + 8 + 1 + + + + + INEPxCSR + INEPxCSR + INEPxCSR + 0x14 + 0x20 + write-only + 0x00000000 + + + FrcDataTog + FrcDataTog + 3 + 1 + + + DMAEnab + DMAEnab + 4 + 1 + + + Mode + Mode + 5 + 1 + + + ISO + ISO + 6 + 1 + + + AutoSet + AutoSet + 7 + 1 + + + InPktRdy + InPktRdy + 8 + 1 + + + FIFONotEmpty + FIFONotEmpty + 9 + 1 + + + UnderRun + UnderRun + 10 + 1 + + + FlushFIFO + FlushFIFO + 11 + 1 + + + SendStall + SendStall + 12 + 1 + + + SentStall + SentStall + 13 + 1 + + + ClrDataTog + ClrDataTog + 14 + 1 + + + INMAXP + INMAXP + 16 + 1 + + + + + OUTEPxCSR + OUTEPxCSR + OUTEPxCSR + 0x18 + 0x20 + write-only + 0x00000000 + + + DMAMode + DMAMode + 4 + 1 + + + DMAEnab + DMAEnab + 5 + 1 + + + ISO + ISO + 6 + 1 + + + AutoClear + AutoClear + 7 + 1 + + + OutPktRdy + OutPktRdy + 8 + 1 + + + FIFOFull + FIFOFull + 9 + 1 + + + OverRun + OverRun + 10 + 1 + + + DataError + DataError + 11 + 1 + + + FlushFIFO + FlushFIFO + 12 + 1 + + + SendStall + SendStall + 13 + 1 + + + SentStall + SentStall + 14 + 1 + + + ClrDataTog + ClrDataTog + 15 + 1 + + + INMAXP + INMAXP + 16 + 1 + + + + + OUTCOUNT + OUTCOUNT + OUTCOUNT + 0x1C + 0x20 + write-only + 0x00000000 + + + OUTCOUNT + OUTCOUNT + 0 + 10 + + + + + + + WWDG + Window watchdog + WWDG + 0x40002C00 + + 0x0 + 0x400 + registers + + + WWDG + Window WatchDog Interrupt + 0 + + + + CR + CR + Control register (WWDG_CR) + 0x0 + 0x20 + read-write + 0x0000007F + + + WDGA + Activation bit + 7 + 1 + + + T + 7-bit counter (MSB to LSB) + 0 + 7 + + + + + CFR + CFR + + Configuration register + (WWDG_CFR) + + 0x4 + 0x20 + read-write + 0x0000007F + + + EWI + Early Wakeup Interrupt + 9 + 1 + + + WDGTB + Timer Base + 7 + 2 + + + W + 7-bit window value + 0 + 7 + + + + + SR + SR + Status register (WWDG_SR) + 0x8 + 0x20 + read-write + 0x00000000 + + + EWIF + Early Wakeup Interrupt flag + 0 + 1 + + + + + + + diff --git a/README.md b/README.md index 199bbb1..57a9fac 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,18 @@ # py32f0-template -* Puya PY32F003/030 template project for GNU Arm Embedded Toolchain +* Puya PY32F0 template project for GNU Arm Embedded Toolchain +* Puya PY32F0 family: + * PY32F002x5 + * PY32F002Ax5 + * PY32F003x4 + * PY32F003x6 + * PY32F003x8 + * PY32F030x3 + * PY32F030x4 + * PY32F030x6 + * PY32F030x7 + * PY32F030x8 + * PY32F072xB * Supported programmers: J-Link, DAPLink/PyOCD * Supported IDE: VSCode @@ -8,6 +20,7 @@ ``` ├── Build # Build results +├── Docs # Datesheets and User Manuals ├── Examples │   ├── FreeRTOS # FreeRTOS examples │   ├── Raw # NonFreeRTOS examples @@ -16,12 +29,15 @@ │   ├── BSP # SysTick delay and printf for debug │   ├── BSP_LL # SysTick delay and printf for debug │   ├── CMSIS -│   ├── LDScripts # ld files +│   ├── LDScripts # LD files │   ├── PY32F0xx_HAL_Driver # MCU peripheral driver │   └── PY32F0xx_LL_Driver # MCU low layer peripheral driver ├── Makefile # Make config ├── Misc -│   └── Devices # FLM files +│   ├── Flash +│   │   ├── Devices # FLM files +│   │   └── Sources # Flash algorithm source code +│   └── SVD # SVD files ├── README.md ├── rules.mk # Pre-defined rules include in Makefile └── User # User application code @@ -29,7 +45,7 @@ # Requirements -* PY32F0 EVB or boards of PY32F003/030 series +* PY32F0 EVB or boards of PY32F002/003/030/072 series * Programmer * J-Link: J-Link OB programmer * PyOCD: DAPLink or J-Link @@ -59,11 +75,11 @@ sudo dpkg -i JLink_Linux_V770a_x86_64.deb ``` The default installation directory is */opt/SEGGER* -Copy all .FLM files from [Project directory]/Misc/Devices/Puya to [JLink directory]/Devices/Puya +Copy all .FLM files from [Project directory]/Misc/Flash/Devices/Puya to [JLink directory]/Devices/Puya ```bash cd py32f0-template -sudo cp -r Misc/Devices/* /opt/SEGGER/JLink/Devices/ +sudo cp -r Misc/Flash/Devices/* /opt/SEGGER/JLink/Devices/ ``` Edit JLinkDevices.xml