你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

一个关于LL库使用管脚重映射的BUG

[复制链接]
lqs0905 提问时间:2018-11-8 16:15 /
本帖最后由 lqs0905 于 2018-11-30 09:30 编辑

我在使用LL库时在CUBEMX中设置了重映射,但是在生成的代码中却没有重映射,于是人工添加LL_GPIO_AF_RemapPartial_TIM3(); 然后防真但是走到这里就出现不能继续防真的情况,最后经分析在调用这个函数时禁用了Jlink ,但是在这个函数中没有Jlink的代码。最后发现这个问题如图,不知那位大神能告知原因,我写进去后再读出来值是错的导致我再次配置 AFIO->AMPR 出错
捕获.PNG
<
收藏 1 评论13 发布时间:2018-11-8 16:15

举报

13个回答
lqs0905 回答时间:2018-11-8 16:17:11
我用的是IAR开发的
toofree 回答时间:2018-11-9 00:38:15
本帖最后由 toofree 于 2018-11-9 00:56 编辑

这个需要工程。i在其它地方调用了没有? i 确定没被优化掉吗?看一下汇编代码。
__HAL_AFIO_REMAP_SWJ_NOJTAG() 的功能是只允许SWD调试,不允许JTAG调试。如果你用了JTAG模式,那就是行的,需要选成SWD。
AFIO->AMPR进行操作时,请先读出来,然后做“与”或者“或”关系后,把你要修改的位加进去,不要直接改,这样会影响一大家子。




评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

lqs0905 回答时间:2018-11-9 08:22:59
toofree 发表于 2018-11-9 00:38
这个需要工程。i在其它地方调用了没有? i 确定没被优化掉吗?看一下汇编代码。
__HAL_AFIO_REMAP_SWJ_NOJT ...

i没有再别的地方调用,Keil 有显示不正确的问题IAR 目前没有发现。我之前就是选读AFIO进行与或,但是结果总是错的,这是为了试验才直接写进行验证的
lqs0905 回答时间:2018-11-9 08:23:17
static void MX_TIM3_Init(void)
{

  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);

}
lqs0905 回答时间:2018-11-9 08:35:23
这是源文件,用的是IAR 大神们帮看看

TIM3_PWM_IN.RAR

下载

9.68 MB, 下载次数: 2, 下载积分: ST金币 -1

源文件

lqs0905 回答时间:2018-11-9 16:39:28
顶一下
lqs0905 回答时间:2018-11-11 16:55:40
就这样沉了吗???
奏奏奏 回答时间:2018-11-15 09:23:39
用STM32CubeMX配置我没见过会出现重映射BUG的,库手动选择LL库

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

xinshuwei 回答时间:2018-11-15 20:23:01
用的库版本表示飘过  呃呃呃
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版