drifer 发表于 2021-1-27 12:17

AT32F403ACCT替换STM32F303CCT

本帖最后由 drifer 于 2021-1-27 12:19 编辑

算是修改成功了,所以发一些函数替换关系, 修改注意点



1. TIM1.1 函数对应关系
STM32函数/结构体AP32函数/结构体备注
LL_TIM_DisableCounter(TIMx);TMR_Cmd(TMRx, DISABLE);

LL_TIM_ClearFlag_UPDATE( TIMx ); TMR_ClearFlag(TMRx, TMR_FLAG_Update);

LL_TIM_SetCounter(TIMx,0); TMR_SetCounter(TMRx, 0);

LL_TIM_SetAutoReload(TIMx, (uint32_t)halfperiod); TMR_SetAutoreload(TMRx, (uint32_t)halfperiod);

LL_TIM_SetRepetitionCounter(TIMx, 1);TMR_SetRepetitionCount(TMR_Type* TMRx, uint32_t repetitioncount)这个函数需要自己仿着写一个
LL_TIM_OC_SetCompareCH1(TIMx, ((uint32_t)halfperiod / (uint32_t) 2));TMR_SetCompare1/TMR_SetCompare2/TMR_SetCompare3

LL_TIM_EnableCounter(TIMx);TMR_Cmd(TMRx, ENABLE);

LL_TIM_IsActiveFlag_UPDATE( TIMx )TMR_GetFlagStatus(TMRx , TMR_FLAG_Update)

TIMx->BDTR |= LL_TIM_OSSI_ENABLE;TMRx->BRKDT |= TMR_OSIMIState_Enable;

LL_TIM_EnableAllOutputs ( TIMx );TMR_CtrlPWMOutputs(TMRx, ENABLE);

LL_TIM_DisableIT_UPDATE( TIMx );TMR_INTConfig(TMRx,TMR_INT_Overflow,DISABLE);

LL_TIM_SetTriggerOutputTMR_SelectOutputTrigger

__HAL_TIM_SET_COUNTERTMR_SetCounter

LL_TIM_GetCounterTMR_GetCounter






2. ADC2.1 函数对应关系
STM32函数/结构体AP32函数/结构体备注
LL_ADC_IsActiveFlag_JEOS(ADC2)ADC_GetFlagStatus(ADC2, ADC_FLAG_JEC)

LL_ADC_ClearFlag_JEOS( ADC2 );ADC_ClearFlag(ADC2, ADC_FLAG_JEC)

LL_ADC_IsEnabled


LL_ADC_DisableIT_EOC(regConv->regADC);ADC_INTConfig(regConv->regADC, ADC_INT_EC, DISABLE);

LL_ADC_StartCalibration( regConv->regADC, LL_ADC_SINGLE_ENDED );ADC_StartCalibration

LL_ADC_IsCalibrationOnGoing( regConv->regADC ) ADC_GetCalibrationStatus

LL_ADC_EnableADC_Ctrl(regConv->regADC, ENABLE);

LL_ADC_REG_SetSequencerLength( regConv->regADC, LL_ADC_REG_SEQ_SCAN_DISABLE );regConv->regADC->RSQ1 &= ~ADC_RSQ1_LEN;

LL_ADC_SetChannelSamplingTime ( regConv->regADC, __LL_ADC_DECIMAL_NB_TO_CHANNEL(regConv->channel) ,regConv->samplingTime);











2.2 注入序列采样AT32F403A的适配对象是STM32F103,所以和STM32F303还是有不少区别的,比如STM32F303的注入采样配置都在寄存器ADCx_JSQR里面,而STM32F103或者AT32F403A是在两个寄存器里面配置的。分别是ADC_CTRL2配置JEXT TRIG、 JEXSEL, 和寄存器ADC_JSQ配置JLEN、JSQx.2.3 校准STM32F303的ADC校准必须要ADON=0时执行,而AT32F403A的ADC校准必须在ADON=1的时候执行。3. SYSTICK3.1 函数对应关系
STM32函数/结构体AP32函数/结构体备注
HAL_Delay(1)
















4. DBGMCU
4.1 函数对应关系
STM32函数/结构体AP32函数/结构体备注


















5. CAN5.1 函数/结构体对应关系
STM32函数/结构体AP32函数/结构体备注
CAN_TxHeaderTypeDefCanTxMsg
[*]CanTxMsg多了一个数据数组uint8_t Data;
[*]IDE变IDT

HAL_CAN_AddTxMessageCAN_Transmit修改CAN_Transmit的函数定义, 数据单独一个变量
CAN_HandleTypeDefCAN_TypeCAN_HandleTypeDef大部分内容不使用.
HAL_CAN_StartCAN_OperatingModeRequest(CAN_OperatingMode_Normal)start就是进入normal模式
HAL_CAN_ActivateNotificationCAN_INTConfig

HAL_CAN_StopCAN_OperatingModeRequest(CAN_OperatingMode_Initialization)stop就是进入initialization模式
HAL_CAN_ConfigFilterCAN_FilterInit

HAL_CAN_GetTxMailboxesFreeLevelAT_CAN_GetTxMailboxesFreeLevel自己改写的
HAL_CAN_GetRxMessageCAN_Receive修改 CAN_Receive的函数定义, 数据单独一个变量
HAL_CAN_IRQHandler


__HAL_CAN_CLEAR_FLAG(hcan, CAN_FLAG_RQCP0);CAN_ClearFlag(CANx,CAN_FLAG_RQCP0);


6. IWDG
6.1 函数/结构体对应关系
STM32函数/结构体AP32函数/结构体备注
LL_IWDG_ReloadCounter(IWDG);IWDG_ReloadCounter()














7. GPIOGPIO没有pull up pull down配置。AT系列里面,只有AT32F421才有。7.1 函数/结构体对应关系
STM32函数/结构体AP32函数/结构体备注

















8. SPISPI我使用的是SPI1,管脚是PA15/PB3/4/5。 这里有个需要注意的地方,AT32403A默认是开启JTAG功能的,这几个管脚默认配置给JTAG,相关说明可以在章节“JTAG/SWD复用功能重映射”里面看到,上电默认的SWJTAG_CONF=0x00意味着PA13/14/15,PB3/4/5都不能当GPIO用,因为指定给JTAG使用了。针对我的实际应用而言,JTAG可以关闭,SWD还得用。所以一上电,时钟配置后就需要修改这些管脚。8.1 函数/结构体对应关系
STM32函数/结构体AP32函数/结构体备注



















drifer 发表于 2021-1-27 12:18

好乱...

muyichuan2012 发表于 2021-1-27 18:44

厉害,STM32F303都可以移植过来。
页: [1]
查看完整版本: AT32F403ACCT替换STM32F303CCT