mirror of
https://github.com/ArteryTek/AT32F413_Firmware_Library.git
synced 2026-05-21 09:22:02 +00:00
update version to v2.1.0
This commit is contained in:
@@ -66,6 +66,9 @@ extern "C" {
|
||||
#define AT32F413xx
|
||||
#endif
|
||||
|
||||
/**
|
||||
* define with package
|
||||
*/
|
||||
#if defined (AT32F413RBT7) || defined (AT32F413RCT7)
|
||||
|
||||
#define AT32F413Rx
|
||||
@@ -82,6 +85,26 @@ extern "C" {
|
||||
#define AT32F413Kx
|
||||
#endif
|
||||
|
||||
/**
|
||||
* define with memory density
|
||||
*/
|
||||
#if defined (AT32F413C8T7) || defined (AT32FEBKC8T7)
|
||||
|
||||
#define AT32F413x8
|
||||
#endif
|
||||
|
||||
#if defined (AT32F413KBU7_4) || defined (AT32F413CBU7) || defined (AT32F413CBT7) || \
|
||||
defined (AT32F413RBT7) || defined (AT32F413TBU7)
|
||||
|
||||
#define AT32F413xB
|
||||
#endif
|
||||
|
||||
#if defined (AT32F413KCU7_4) || defined (AT32F413CCU7) || defined (AT32F413CCT7) || \
|
||||
defined (AT32F413RCT7)
|
||||
|
||||
#define AT32F413xC
|
||||
#endif
|
||||
|
||||
#ifndef USE_STDPERIPH_DRIVER
|
||||
/**
|
||||
* @brief comment the line below if you will not use the peripherals drivers.
|
||||
@@ -100,8 +123,8 @@ extern "C" {
|
||||
* @brief at32f413 standard peripheral library version number
|
||||
*/
|
||||
#define __AT32F413_LIBRARY_VERSION_MAJOR (0x02) /*!< [31:24] major version */
|
||||
#define __AT32F413_LIBRARY_VERSION_MIDDLE (0x00) /*!< [23:16] middle version */
|
||||
#define __AT32F413_LIBRARY_VERSION_MINOR (0x09) /*!< [15:8] minor version */
|
||||
#define __AT32F413_LIBRARY_VERSION_MIDDLE (0x01) /*!< [23:16] middle version */
|
||||
#define __AT32F413_LIBRARY_VERSION_MINOR (0x00) /*!< [15:8] minor version */
|
||||
#define __AT32F413_LIBRARY_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||
#define __AT32F413_LIBRARY_VERSION ((__AT32F413_LIBRARY_VERSION_MAJOR << 24) | \
|
||||
(__AT32F413_LIBRARY_VERSION_MIDDLE << 16) | \
|
||||
|
||||
Binary file not shown.
@@ -66,6 +66,17 @@ typedef enum
|
||||
CRC_REVERSE_OUTPUT_DATA = 0x01 /*!< output data reverse by word */
|
||||
} crc_reverse_output_type;
|
||||
|
||||
/**
|
||||
* @brief crc polynomial size
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
CRC_POLY_SIZE_32B = 0x00, /*!< polynomial size 32 bits */
|
||||
CRC_POLY_SIZE_16B = 0x01, /*!< polynomial size 16 bits */
|
||||
CRC_POLY_SIZE_8B = 0x02, /*!< polynomial size 8 bits */
|
||||
CRC_POLY_SIZE_7B = 0x03 /*!< polynomial size 7 bits */
|
||||
} crc_poly_size_type;
|
||||
|
||||
/**
|
||||
* @brief type define crc register all
|
||||
*/
|
||||
@@ -97,7 +108,7 @@ typedef struct
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief crc ctrl register, offset:0x08
|
||||
* @brief crc ctrl register, offset:0x08
|
||||
*/
|
||||
union
|
||||
{
|
||||
@@ -105,7 +116,8 @@ typedef struct
|
||||
struct
|
||||
{
|
||||
__IO uint32_t rst : 1 ; /* [0] */
|
||||
__IO uint32_t reserved1 : 4 ; /* [4:1] */
|
||||
__IO uint32_t reserved1 : 2 ; /* [2:1] */
|
||||
__IO uint32_t poly_size : 2 ; /* [4:3] */
|
||||
__IO uint32_t revid : 2 ; /* [6:5] */
|
||||
__IO uint32_t revod : 1 ; /* [7] */
|
||||
__IO uint32_t reserved2 : 24 ;/* [31:8] */
|
||||
@@ -129,6 +141,18 @@ typedef struct
|
||||
} idt_bit;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief crc polynomial register, offset:0x14
|
||||
*/
|
||||
union
|
||||
{
|
||||
__IO uint32_t poly;
|
||||
struct
|
||||
{
|
||||
__IO uint32_t poly : 32; /* [31:0] */
|
||||
} poly_bit;
|
||||
};
|
||||
|
||||
} crc_type;
|
||||
|
||||
/**
|
||||
@@ -150,6 +174,10 @@ uint8_t crc_common_data_get(void);
|
||||
void crc_init_data_set(uint32_t value);
|
||||
void crc_reverse_input_data_set(crc_reverse_input_type value);
|
||||
void crc_reverse_output_data_set(crc_reverse_output_type value);
|
||||
void crc_poly_value_set(uint32_t value);
|
||||
uint32_t crc_poly_value_get(void);
|
||||
void crc_poly_size_set(crc_poly_size_type size);
|
||||
crc_poly_size_type crc_poly_size_get(void);
|
||||
|
||||
/**
|
||||
* @}
|
||||
|
||||
@@ -593,6 +593,8 @@ uint8_t flash_ssb_status_get(void);
|
||||
void flash_interrupt_enable(uint32_t flash_int, confirm_state new_state);
|
||||
void flash_spim_model_select(flash_spim_model_type mode);
|
||||
void flash_spim_encryption_range_set(uint32_t decode_address);
|
||||
void flash_spim_dummy_read(void);
|
||||
flash_status_type flash_spim_mass_program(uint32_t address, uint8_t *buf, uint32_t cnt);
|
||||
flash_status_type flash_slib_enable(uint32_t pwd, uint16_t start_sector, uint16_t data_start_sector, uint16_t end_sector);
|
||||
error_status flash_slib_disable(uint32_t pwd);
|
||||
uint32_t flash_slib_remaining_count_get(void);
|
||||
|
||||
@@ -199,9 +199,9 @@ typedef enum
|
||||
typedef enum
|
||||
{
|
||||
EPT_CONTROL_TYPE = 0x00, /*!< usb transfer type control */
|
||||
EPT_BULK_TYPE = 0x01, /*!< usb transfer type bulk */
|
||||
EPT_INT_TYPE = 0x02, /*!< usb transfer type interrut */
|
||||
EPT_ISO_TYPE = 0x03 /*!< usb transfer type iso */
|
||||
EPT_ISO_TYPE = 0x01, /*!< usb transfer type iso */
|
||||
EPT_BULK_TYPE = 0x02, /*!< usb transfer type bulk */
|
||||
EPT_INT_TYPE = 0x03 /*!< usb transfer type interrupt */
|
||||
}ept_trans_type;
|
||||
|
||||
/**
|
||||
|
||||
@@ -109,7 +109,7 @@ void adc_combine_mode_select(adc_combine_mode_type combine_mode)
|
||||
* - ADC_LEFT_ALIGNMENT
|
||||
* @param ordinary_channel_length: configure the adc ordinary channel sequence length.
|
||||
* this parameter can be:
|
||||
* - (0x1~0xf)
|
||||
* - (0x1~0x10)
|
||||
* @retval none
|
||||
*/
|
||||
void adc_base_default_para_init(adc_base_config_type *adc_base_struct)
|
||||
@@ -135,7 +135,7 @@ void adc_base_default_para_init(adc_base_config_type *adc_base_struct)
|
||||
* - ADC_LEFT_ALIGNMENT
|
||||
* @param ordinary_channel_length: configure the adc ordinary channel sequence length.
|
||||
* this parameter can be:
|
||||
* - (0x1~0xf)
|
||||
* - (0x1~0x10)
|
||||
* @retval none
|
||||
*/
|
||||
void adc_base_config(adc_type *adc_x, adc_base_config_type *adc_base_struct)
|
||||
@@ -340,117 +340,42 @@ void adc_voltage_monitor_single_channel_select(adc_type *adc_x, adc_channel_sele
|
||||
*/
|
||||
void adc_ordinary_channel_set(adc_type *adc_x, adc_channel_select_type adc_channel, uint8_t adc_sequence, adc_sampletime_select_type adc_sampletime)
|
||||
{
|
||||
switch(adc_channel)
|
||||
uint32_t tmp_reg;
|
||||
if(adc_channel < ADC_CHANNEL_10)
|
||||
{
|
||||
case ADC_CHANNEL_0:
|
||||
adc_x->spt2_bit.cspt0 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_1:
|
||||
adc_x->spt2_bit.cspt1 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_2:
|
||||
adc_x->spt2_bit.cspt2 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_3:
|
||||
adc_x->spt2_bit.cspt3 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_4:
|
||||
adc_x->spt2_bit.cspt4 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_5:
|
||||
adc_x->spt2_bit.cspt5 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_6:
|
||||
adc_x->spt2_bit.cspt6 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_7:
|
||||
adc_x->spt2_bit.cspt7 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_8:
|
||||
adc_x->spt2_bit.cspt8 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_9:
|
||||
adc_x->spt2_bit.cspt9 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_10:
|
||||
adc_x->spt1_bit.cspt10 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_11:
|
||||
adc_x->spt1_bit.cspt11 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_12:
|
||||
adc_x->spt1_bit.cspt12 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_13:
|
||||
adc_x->spt1_bit.cspt13 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_14:
|
||||
adc_x->spt1_bit.cspt14 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_15:
|
||||
adc_x->spt1_bit.cspt15 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_16:
|
||||
adc_x->spt1_bit.cspt16 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_17:
|
||||
adc_x->spt1_bit.cspt17 = adc_sampletime;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
tmp_reg = adc_x->spt2;
|
||||
tmp_reg &= ~(0x07 << 3 * adc_channel);
|
||||
tmp_reg |= adc_sampletime << 3 * adc_channel;
|
||||
adc_x->spt2 = tmp_reg;
|
||||
}
|
||||
switch(adc_sequence)
|
||||
else
|
||||
{
|
||||
case 1:
|
||||
adc_x->osq3_bit.osn1 = adc_channel;
|
||||
break;
|
||||
case 2:
|
||||
adc_x->osq3_bit.osn2 = adc_channel;
|
||||
break;
|
||||
case 3:
|
||||
adc_x->osq3_bit.osn3 = adc_channel;
|
||||
break;
|
||||
case 4:
|
||||
adc_x->osq3_bit.osn4 = adc_channel;
|
||||
break;
|
||||
case 5:
|
||||
adc_x->osq3_bit.osn5 = adc_channel;
|
||||
break;
|
||||
case 6:
|
||||
adc_x->osq3_bit.osn6 = adc_channel;
|
||||
break;
|
||||
case 7:
|
||||
adc_x->osq2_bit.osn7 = adc_channel;
|
||||
break;
|
||||
case 8:
|
||||
adc_x->osq2_bit.osn8 = adc_channel;
|
||||
break;
|
||||
case 9:
|
||||
adc_x->osq2_bit.osn9 = adc_channel;
|
||||
break;
|
||||
case 10:
|
||||
adc_x->osq2_bit.osn10 = adc_channel;
|
||||
break;
|
||||
case 11:
|
||||
adc_x->osq2_bit.osn11 = adc_channel;
|
||||
break;
|
||||
case 12:
|
||||
adc_x->osq2_bit.osn12 = adc_channel;
|
||||
break;
|
||||
case 13:
|
||||
adc_x->osq1_bit.osn13 = adc_channel;
|
||||
break;
|
||||
case 14:
|
||||
adc_x->osq1_bit.osn14 = adc_channel;
|
||||
break;
|
||||
case 15:
|
||||
adc_x->osq1_bit.osn15 = adc_channel;
|
||||
break;
|
||||
case 16:
|
||||
adc_x->osq1_bit.osn16 = adc_channel;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
tmp_reg = adc_x->spt1;
|
||||
tmp_reg &= ~(0x07 << 3 * (adc_channel - ADC_CHANNEL_10));
|
||||
tmp_reg |= adc_sampletime << 3 * (adc_channel - ADC_CHANNEL_10);
|
||||
adc_x->spt1 = tmp_reg;
|
||||
}
|
||||
|
||||
if(adc_sequence >= 13)
|
||||
{
|
||||
tmp_reg = adc_x->osq1;
|
||||
tmp_reg &= ~(0x01F << 5 * (adc_sequence - 13));
|
||||
tmp_reg |= adc_channel << 5 * (adc_sequence - 13);
|
||||
adc_x->osq1 = tmp_reg;
|
||||
}
|
||||
else if(adc_sequence >= 7)
|
||||
{
|
||||
tmp_reg = adc_x->osq2;
|
||||
tmp_reg &= ~(0x01F << 5 * (adc_sequence - 7));
|
||||
tmp_reg |= adc_channel << 5 * (adc_sequence - 7);
|
||||
adc_x->osq2 = tmp_reg;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_reg = adc_x->osq3;
|
||||
tmp_reg &= ~(0x01F << 5 * (adc_sequence - 1));
|
||||
tmp_reg |= adc_channel << 5 * (adc_sequence - 1);
|
||||
adc_x->osq3 = tmp_reg;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -498,66 +423,23 @@ void adc_preempt_channel_length_set(adc_type *adc_x, uint8_t adc_channel_lenght)
|
||||
*/
|
||||
void adc_preempt_channel_set(adc_type *adc_x, adc_channel_select_type adc_channel, uint8_t adc_sequence, adc_sampletime_select_type adc_sampletime)
|
||||
{
|
||||
uint16_t sequence_index=0;
|
||||
switch(adc_channel)
|
||||
uint32_t tmp_reg;
|
||||
uint8_t sequence_index;
|
||||
if(adc_channel < ADC_CHANNEL_10)
|
||||
{
|
||||
case ADC_CHANNEL_0:
|
||||
adc_x->spt2_bit.cspt0 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_1:
|
||||
adc_x->spt2_bit.cspt1 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_2:
|
||||
adc_x->spt2_bit.cspt2 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_3:
|
||||
adc_x->spt2_bit.cspt3 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_4:
|
||||
adc_x->spt2_bit.cspt4 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_5:
|
||||
adc_x->spt2_bit.cspt5 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_6:
|
||||
adc_x->spt2_bit.cspt6 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_7:
|
||||
adc_x->spt2_bit.cspt7 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_8:
|
||||
adc_x->spt2_bit.cspt8 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_9:
|
||||
adc_x->spt2_bit.cspt9 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_10:
|
||||
adc_x->spt1_bit.cspt10 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_11:
|
||||
adc_x->spt1_bit.cspt11 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_12:
|
||||
adc_x->spt1_bit.cspt12 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_13:
|
||||
adc_x->spt1_bit.cspt13 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_14:
|
||||
adc_x->spt1_bit.cspt14 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_15:
|
||||
adc_x->spt1_bit.cspt15 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_16:
|
||||
adc_x->spt1_bit.cspt16 = adc_sampletime;
|
||||
break;
|
||||
case ADC_CHANNEL_17:
|
||||
adc_x->spt1_bit.cspt17 = adc_sampletime;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
tmp_reg = adc_x->spt2;
|
||||
tmp_reg &= ~(0x07 << 3 * adc_channel);
|
||||
tmp_reg |= adc_sampletime << 3 * adc_channel;
|
||||
adc_x->spt2 = tmp_reg;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_reg = adc_x->spt1;
|
||||
tmp_reg &= ~(0x07 << 3 * (adc_channel - ADC_CHANNEL_10));
|
||||
tmp_reg |= adc_sampletime << 3 * (adc_channel - ADC_CHANNEL_10);
|
||||
adc_x->spt1 = tmp_reg;
|
||||
}
|
||||
|
||||
sequence_index = adc_sequence + 3 - adc_x->psq_bit.pclen;
|
||||
switch(sequence_index)
|
||||
{
|
||||
|
||||
@@ -147,6 +147,52 @@ void crc_reverse_output_data_set(crc_reverse_output_type value)
|
||||
CRC->ctrl_bit.revod = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief config crc polynomial value
|
||||
* @param value
|
||||
* 32-bit new data of crc poly value
|
||||
* @retval none.
|
||||
*/
|
||||
void crc_poly_value_set(uint32_t value)
|
||||
{
|
||||
CRC->poly = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief return crc polynomial value
|
||||
* @param none
|
||||
* @retval 32-bit value of the polynomial value.
|
||||
*/
|
||||
uint32_t crc_poly_value_get(void)
|
||||
{
|
||||
return (CRC->poly);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief config crc polynomial data size
|
||||
* @param size
|
||||
* this parameter can be one of the following values:
|
||||
* - CRC_POLY_SIZE_32B
|
||||
* - CRC_POLY_SIZE_16B
|
||||
* - CRC_POLY_SIZE_8B
|
||||
* - CRC_POLY_SIZE_7B
|
||||
* @retval none.
|
||||
*/
|
||||
void crc_poly_size_set(crc_poly_size_type size)
|
||||
{
|
||||
CRC->ctrl_bit.poly_size = size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief return crc polynomial data size
|
||||
* @param none
|
||||
* @retval polynomial data size.
|
||||
*/
|
||||
crc_poly_size_type crc_poly_size_get(void)
|
||||
{
|
||||
return (crc_poly_size_type)(CRC->ctrl_bit.poly_size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -282,6 +282,9 @@ flash_status_type flash_sector_erase(uint32_t sector_address)
|
||||
|
||||
/* disable the secers bit */
|
||||
FLASH->ctrl3_bit.secers = FALSE;
|
||||
|
||||
/* dummy read */
|
||||
flash_spim_dummy_read();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -341,6 +344,9 @@ flash_status_type flash_spim_all_erase(void)
|
||||
/* disable the chpers bit */
|
||||
FLASH->ctrl3_bit.chpers = FALSE;
|
||||
|
||||
/* dummy read */
|
||||
flash_spim_dummy_read();
|
||||
|
||||
/* return the erase status */
|
||||
return status;
|
||||
}
|
||||
@@ -416,6 +422,9 @@ flash_status_type flash_word_program(uint32_t address, uint32_t data)
|
||||
|
||||
/* disable the fprgm bit */
|
||||
FLASH->ctrl3_bit.fprgm = FALSE;
|
||||
|
||||
/* dummy read */
|
||||
flash_spim_dummy_read();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -451,6 +460,9 @@ flash_status_type flash_halfword_program(uint32_t address, uint16_t data)
|
||||
|
||||
/* disable the fprgm bit */
|
||||
FLASH->ctrl3_bit.fprgm = FALSE;
|
||||
|
||||
/* dummy read */
|
||||
flash_spim_dummy_read();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -732,6 +744,9 @@ void flash_interrupt_enable(uint32_t flash_int, confirm_state new_state)
|
||||
void flash_spim_model_select(flash_spim_model_type mode)
|
||||
{
|
||||
FLASH->select = mode;
|
||||
|
||||
/* dummy read */
|
||||
flash_spim_dummy_read();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -746,6 +761,62 @@ void flash_spim_encryption_range_set(uint32_t decode_address)
|
||||
FLASH->da = decode_address;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief operate the flash spim dummy read.
|
||||
* @param none
|
||||
* @retval none
|
||||
*/
|
||||
void flash_spim_dummy_read(void)
|
||||
{
|
||||
UNUSED(*(__IO uint32_t*)FLASH_SPIM_START_ADDR);
|
||||
UNUSED(*(__IO uint32_t*)(FLASH_SPIM_START_ADDR + 0x1000));
|
||||
UNUSED(*(__IO uint32_t*)(FLASH_SPIM_START_ADDR + 0x2000));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief mass program for flash spim.
|
||||
* @param address: specifies the start address to be programmed, word or halfword alignment is recommended.
|
||||
* @param buf: specifies the pointer of data to be programmed.
|
||||
* @param cnt: specifies the data counter to be programmed.
|
||||
* @retval status: the returned value can be: FLASH_PROGRAM_ERROR,
|
||||
* FLASH_EPP_ERROR, FLASH_OPERATE_DONE or FLASH_OPERATE_TIMEOUT.
|
||||
*/
|
||||
flash_status_type flash_spim_mass_program(uint32_t address, uint8_t *buf, uint32_t cnt)
|
||||
{
|
||||
flash_status_type status = FLASH_OPERATE_DONE;
|
||||
uint32_t index, temp_offset;
|
||||
if(address >= FLASH_SPIM_START_ADDR)
|
||||
{
|
||||
temp_offset = cnt % 4;
|
||||
if((temp_offset != 0) && (temp_offset != 2))
|
||||
return status;
|
||||
|
||||
FLASH->ctrl3_bit.fprgm = TRUE;
|
||||
for(index = 0; index < cnt / 4; index++)
|
||||
{
|
||||
*(__IO uint32_t*)(address + index * 4) = *(uint32_t*)(buf + index * 4);
|
||||
/* wait for operation to be completed */
|
||||
status = flash_spim_operation_wait_for(SPIM_PROGRAMMING_TIMEOUT);
|
||||
if(status != FLASH_OPERATE_DONE)
|
||||
return status;
|
||||
}
|
||||
if(temp_offset == 2)
|
||||
{
|
||||
*(__IO uint16_t*)(address + index * 4) = *(uint16_t*)(buf + index * 4);
|
||||
/* wait for operation to be completed */
|
||||
status = flash_spim_operation_wait_for(SPIM_PROGRAMMING_TIMEOUT);
|
||||
}
|
||||
/* disable the fprgm bit */
|
||||
FLASH->ctrl3_bit.fprgm = FALSE;
|
||||
|
||||
/* dummy read */
|
||||
flash_spim_dummy_read();
|
||||
}
|
||||
|
||||
/* return the program status */
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief enable security library function.
|
||||
* @param pwd: slib password
|
||||
|
||||
@@ -276,8 +276,7 @@ uint32_t tmr_counter_value_get(tmr_type *tmr_x)
|
||||
* this parameter can be one of the following values:
|
||||
* TMR1, TMR2, TMR3, TMR4, TMR5, TMR8, TMR9, TMR10,
|
||||
* TMR11
|
||||
* @param tmr_div_value (for 16 bit tmr 0x0000~0xFFFF,
|
||||
* for 32 bit tmr 0x0000_0000~0xFFFF_FFFF)
|
||||
* @param tmr_div_value (0x0000~0xFFFF)
|
||||
* @retval none
|
||||
*/
|
||||
void tmr_div_value_set(tmr_type *tmr_x, uint32_t tmr_div_value)
|
||||
@@ -819,7 +818,7 @@ void tmr_input_channel_init(tmr_type *tmr_x, tmr_input_config_type *input_struct
|
||||
switch(channel)
|
||||
{
|
||||
case TMR_SELECT_CHANNEL_1:
|
||||
tmr_x->cctrl_bit.c1en = FALSE;
|
||||
tmr_x->cctrl_bit.c1en = FALSE;
|
||||
tmr_x->cctrl_bit.c1p = (uint32_t)input_struct->input_polarity_select;
|
||||
tmr_x->cctrl_bit.c1cp = (input_struct->input_polarity_select & 0x2) >> 1;
|
||||
tmr_x->cm1_input_bit.c1c = input_struct->input_mapped_select;
|
||||
@@ -829,7 +828,7 @@ void tmr_input_channel_init(tmr_type *tmr_x, tmr_input_config_type *input_struct
|
||||
break;
|
||||
|
||||
case TMR_SELECT_CHANNEL_2:
|
||||
tmr_x->cctrl_bit.c2en = FALSE;
|
||||
tmr_x->cctrl_bit.c2en = FALSE;
|
||||
tmr_x->cctrl_bit.c2p = (uint32_t)input_struct->input_polarity_select;
|
||||
tmr_x->cctrl_bit.c2cp = (input_struct->input_polarity_select & 0x2) >> 1;
|
||||
tmr_x->cm1_input_bit.c2c = input_struct->input_mapped_select;
|
||||
@@ -839,7 +838,7 @@ void tmr_input_channel_init(tmr_type *tmr_x, tmr_input_config_type *input_struct
|
||||
break;
|
||||
|
||||
case TMR_SELECT_CHANNEL_3:
|
||||
tmr_x->cctrl_bit.c3en = FALSE;
|
||||
tmr_x->cctrl_bit.c3en = FALSE;
|
||||
tmr_x->cctrl_bit.c3p = (uint32_t)input_struct->input_polarity_select;
|
||||
tmr_x->cctrl_bit.c3cp = (input_struct->input_polarity_select & 0x2) >> 1;
|
||||
tmr_x->cm2_input_bit.c3c = input_struct->input_mapped_select;
|
||||
@@ -849,7 +848,7 @@ void tmr_input_channel_init(tmr_type *tmr_x, tmr_input_config_type *input_struct
|
||||
break;
|
||||
|
||||
case TMR_SELECT_CHANNEL_4:
|
||||
tmr_x->cctrl_bit.c4en = FALSE;
|
||||
tmr_x->cctrl_bit.c4en = FALSE;
|
||||
tmr_x->cctrl_bit.c4p = (uint32_t)input_struct->input_polarity_select;
|
||||
tmr_x->cm2_input_bit.c4c = input_struct->input_mapped_select;
|
||||
tmr_x->cm2_input_bit.c4df = input_struct->input_filter_value;
|
||||
@@ -1712,7 +1711,7 @@ void tmr_dma_control_config(tmr_type *tmr_x, tmr_dma_transfer_length_type dma_le
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief config tmr break mode and dead-time
|
||||
* @brief config tmr brake mode and dead-time
|
||||
* @param tmr_x: select the tmr peripheral.
|
||||
* this parameter can be one of the following values:
|
||||
* TMR1, TMR8
|
||||
|
||||
@@ -90,6 +90,9 @@ void usart_reset(usart_type* usart_x)
|
||||
* this parameter can be one of the following values:
|
||||
* - USART_DATA_8BITS
|
||||
* - USART_DATA_9BITS.
|
||||
* note:
|
||||
* - when parity check is disabled, the data bit width is the actual data bit number.
|
||||
* - when parity check is enabled, the data bit width is the actual data bit number minus 1, and the MSB bit is replaced with the parity bit.
|
||||
* @param stop_bit: stop bits transmitted
|
||||
* this parameter can be one of the following values:
|
||||
* - USART_STOP_1_BIT
|
||||
|
||||
Reference in New Issue
Block a user