你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
toofree 发表于 2018-11-9 00:38 这个需要工程。i在其它地方调用了没有? i 确定没被优化掉吗?看一下汇编代码。 __HAL_AFIO_REMAP_SWJ_NOJT ...
TIM3_PWM_IN.RAR
2018-11-9 08:34 上传
点击文件名下载附件
9.68 MB, 下载次数: 2, 下载积分: ST金币 -1
æºæ件
奏奏奏 发表于 2018-11-15 09:23 用STM32CubeMX配置我没见过会出现重映射BUG的,库手动选择LL库
这个需要工程。i在其它地方调用了没有? i 确定没被优化掉吗?看一下汇编代码。
__HAL_AFIO_REMAP_SWJ_NOJTAG() 的功能是只允许SWD调试,不允许JTAG调试。如果你用了JTAG模式,那就是行的,需要选成SWD。
对AFIO->AMPR进行操作时,请先读出来,然后做“与”或者“或”关系后,把你要修改的位加进去,不要直接改,这样会影响一大家子。
评分
查看全部评分
i没有再别的地方调用,Keil 有显示不正确的问题IAR 目前没有发现。我之前就是选读AFIO进行与或,但是结果总是错的,这是为了试验才直接写进行验证的
{
LL_TIM_InitTypeDef TIM_InitStruct;
LL_GPIO_InitTypeDef GPIO_InitStruct;
/* Peripheral clock enable */
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM3);
/**TIM3 GPIO Configuration
PB4 ------> TIM3_CH1
*/
GPIO_InitStruct.Pin = LL_GPIO_PIN_4;
GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING;
LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
//AFIO->MAPR = 0x2000800;
LL_GPIO_AF_RemapPartial_TIM3();//程序走到这里就无法进行防真,本行是因为Cubemx在使用LL库时没有对TIM3进行映射才人工加上去的
TIM_InitStruct.Prescaler = 12;
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
TIM_InitStruct.Autoreload = 0xffff;
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
LL_TIM_Init(TIM3, &TIM_InitStruct);
LL_TIM_DisableARRPreload(TIM3);
LL_TIM_SetTriggerInput(TIM3, LL_TIM_TS_TI1FP1);
LL_TIM_SetSlaveMode(TIM3, LL_TIM_SLAVEMODE_RESET);
LL_TIM_IC_SetFilter(TIM3, LL_TIM_CHANNEL_CH1, LL_TIM_IC_FILTER_FDIV1);
LL_TIM_IC_SetPolarity(TIM3, LL_TIM_CHANNEL_CH1, LL_TIM_IC_POLARITY_RISING);
LL_TIM_DisableIT_TRIG(TIM3);
LL_TIM_DisableDMAReq_TRIG(TIM3);
LL_TIM_SetTriggerOutput(TIM3, LL_TIM_TRGO_RESET);
LL_TIM_DisableMasterSlaveMode(TIM3);
LL_TIM_IC_SetActiveInput(TIM3, LL_TIM_CHANNEL_CH1, LL_TIM_ACTIVEINPUT_DIRECTTI);
LL_TIM_IC_SetPrescaler(TIM3, LL_TIM_CHANNEL_CH1, LL_TIM_ICPSC_DIV1);
LL_TIM_IC_SetFilter(TIM3, LL_TIM_CHANNEL_CH1, LL_TIM_IC_FILTER_FDIV1_N8);
LL_TIM_IC_SetActiveInput(TIM3, LL_TIM_CHANNEL_CH2, LL_TIM_ACTIVEINPUT_INDIRECTTI);
LL_TIM_IC_SetPrescaler(TIM3, LL_TIM_CHANNEL_CH2, LL_TIM_ICPSC_DIV1);
LL_TIM_IC_SetFilter(TIM3, LL_TIM_CHANNEL_CH2, LL_TIM_IC_FILTER_FDIV1);
LL_TIM_IC_SetPolarity(TIM3, LL_TIM_CHANNEL_CH2, LL_TIM_IC_POLARITY_FALLING);
}
/** Configure pins as
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC);
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOD);
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
}
TIM3_PWM_IN.RAR
2018-11-9 08:34 上传
点击文件名下载附件
下载积分: ST金币 -19.68 MB, 下载次数: 2, 下载积分: ST金币 -1
æºæ件
评分
查看全部评分
我源文件和CubeMx配置文件都上传了,能不能帮我看看问题出在什么地方
tmpreg &= ~REMAP_PIN_MASK; \
tmpreg |= AFIO_MAPR_SWJ_CFG; \
tmpreg |= REMAP_PIN; \
AFIO->MAPR = tmpreg; \
}while(0U)
比LL库中的重映射 多了一个 tmpreg |= AFIO_MAPR_SWJ_CFG; \ 才使的防直时不会出错。 所以我可以100%的肯定这是官方的一个BUG 。
总结起来就是 1.在使用LL库时生成的初始化函数没有进行重映射而HAL库却有2.LL库在进行重映时没有对JTAG口进行赋值,而HAL却有 希望官方能修复这个BUG