STM32 CubeMX使用问题

2019-07-21 03:37发布

大家平时做项目时用STM32 CubeMX这个工具多吗?我用这个工具自动生成的代码,定时器一直不工作,看了好半天代码也没发现有什么地方没配置好

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
LearnerLi
1楼-- · 2019-07-21 08:40
我确实发现这样一个错误,需要将HAL库中的函数TIM_CCxChannelCmd:
void TIM_CCxChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelState)
{
  uint32_t tmp = 0U;

  /* Check the parameters */
  assert_param(IS_TIM_CC1_INSTANCE(TIMx));
  assert_param(IS_TIM_CHANNELS(Channel));

  tmp = TIM_CCER_CC1E << Channel;

  /* Reset the CCxE Bit */
  TIMx->CCER &= ~tmp;

  /* Set or reset the CCxE Bit */
  TIMx->CCER |=  (uint32_t)(ChannelState << Channel);
}
修改为以下这样
void TIM_CCxChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelState)
{
    uint32_t tmp = 0U;

    /* Check the parameters */
    assert_param(IS_TIM_CC1_INSTANCE(TIMx));
assert_param(IS_TIM_CHANNELS(Channel));

    tmp = TIM_CCER_CC1E << (Channel - 1) * 4;

    /* Reset the CCxE Bit */
    TIMx->CCER &= ~tmp;

    /* Set or reset the CCxE Bit */
    TIMx->CCER |=  (uint32_t)(ChannelState << (Channel - 1) * 4);
}
并且需要在初始化后使用函数HAL_TIM_PWM_Start来开启定时器功能。

附:
CubeMX-V4.26.0
Firmware Package Version 1.6.1

你可以试试!
c16
2楼-- · 2019-07-21 10:46
你可以具体说一下你要用定时器做什么,有没有用中断之类的,你问题说的有点笼统,不知道怎么回答。
jermy_z
3楼-- · 2019-07-21 15:44
 精彩回答 2  元偷偷看……
sky505050w
4楼-- · 2019-07-21 21:25
LearnerLi 发表于 2019-4-1 16:02
我确实发现这样一个错误,需要将HAL库中的函数TIM_CCxChannelCmd:
void TIM_CCxChannelCmd(TIM_TypeDef*  ...

好的,我试试看
sky505050w
5楼-- · 2019-07-21 21:40
c16 发表于 2019-4-1 16:06
你可以具体说一下你要用定时器做什么,有没有用中断之类的,你问题说的有点笼统,不知道怎么回答。

就是做一个定时器定时1秒进入中断,在中断里控制LED翻转的程序
sky505050w
6楼-- · 2019-07-21 23:25
jermy_z 发表于 2019-4-1 16:16
定时器还没发现有啥异常的,但是中断一定不要用他自己生成的,自己写,自动生成的太臃肿

好的,我试一下自己写中断服务函数试试

一周热门 更多>