OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2505|回复: 13

STM32 CubeMX使用问题

[复制链接]

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
发表于 2019-4-1 15:23:00 | 显示全部楼层 |阅读模式
大家平时做项目时用STM32 CubeMX这个工具多吗?我用这个工具自动生成的代码,定时器一直不工作,看了好半天代码也没发现有什么地方没配置好

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-4-1
在线时间
3 小时
发表于 2019-4-1 16:02:44 | 显示全部楼层
我确实发现这样一个错误,需要将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

你可以试试!
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2018-12-7
在线时间
8 小时
发表于 2019-4-1 16:06:38 | 显示全部楼层
你可以具体说一下你要用定时器做什么,有没有用中断之类的,你问题说的有点笼统,不知道怎么回答。
回复 支持 反对

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2019-4-1 16:16:46 | 显示全部楼层
定时器还没发现有啥异常的,但是中断一定不要用他自己生成的,自己写,自动生成的太臃肿
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
 楼主| 发表于 2019-4-1 18:14:40 | 显示全部楼层
LearnerLi 发表于 2019-4-1 16:02
我确实发现这样一个错误,需要将HAL库中的函数TIM_CCxChannelCmd:
void TIM_CCxChannelCmd(TIM_TypeDef*  ...

好的,我试试看
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
 楼主| 发表于 2019-4-1 18:16:31 | 显示全部楼层
c16 发表于 2019-4-1 16:06
你可以具体说一下你要用定时器做什么,有没有用中断之类的,你问题说的有点笼统,不知道怎么回答。

就是做一个定时器定时1秒进入中断,在中断里控制LED翻转的程序
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
 楼主| 发表于 2019-4-1 18:17:13 | 显示全部楼层
jermy_z 发表于 2019-4-1 16:16
定时器还没发现有啥异常的,但是中断一定不要用他自己生成的,自己写,自动生成的太臃肿

好的,我试一下自己写中断服务函数试试
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
 楼主| 发表于 2019-4-1 19:59:00 | 显示全部楼层
问题已经解决了,生成的代码里初始化没有开启定时器,中断也没有开启,谢谢大家热心帮助
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
 楼主| 发表于 2019-4-1 20:00:05 | 显示全部楼层
问题已经解决了,生成的代码里初始化没有开启定时器,中断也没有开启,谢谢大家热心帮助
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-4-1
在线时间
3 小时
发表于 2019-4-2 08:46:45 | 显示全部楼层
sky505050w 发表于 2019-4-1 20:00
问题已经解决了,生成的代码里初始化没有开启定时器,中断也没有开启,谢谢大家热心帮助

是我贴出来的那个问题吗
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
 楼主| 发表于 2019-4-2 11:29:22 | 显示全部楼层
LearnerLi 发表于 2019-4-2 08:46
是我贴出来的那个问题吗

不是的,我做的还只是简单的定时中断,还没有PWM输出
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2018-12-7
在线时间
8 小时
发表于 2019-4-2 14:42:54 | 显示全部楼层
sky505050w 发表于 2019-4-1 18:16
就是做一个定时器定时1秒进入中断,在中断里控制LED翻转的程序

楼主最后发现是什么问题,是cubemx配置的问题吗?HAL库一般没错误的吧
回复 支持 反对

使用道具 举报

0

主题

295

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2019-3-26
在线时间
9 小时
发表于 2019-4-2 14:47:10 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

3

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2018-8-3
在线时间
61 小时
 楼主| 发表于 2019-4-2 15:57:45 | 显示全部楼层
c16 发表于 2019-4-2 14:42
楼主最后发现是什么问题,是cubemx配置的问题吗?HAL库一般没错误的吧

对,是cubemx配置完生成的时钟初始化代码里没有开启定时器和中断,需要自己开启
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 14:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表