OpenEdv-开源电子网

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

关于TIM的TIM_DMAConfig函数。(大神快来)

[复制链接]

8

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-3-25
在线时间
3 小时
发表于 2015-9-26 18:27:39 | 显示全部楼层 |阅读模式
5金钱
最近学TIM的捕获输入,思路是这样的:当按下KEY键捕获当前的CNT值(此时该值在CCR中),然后我通过DMA读取CCR再发回串口,
然后我在想要不要配置TIM_DMAConfig( ),结果发现就算不配置这个函数只要使能了TIM_DMACmd就可以返回数据

这时问题来了:
1.TIM_DMAConfig( )应该什么时候用,又应该怎么用

2这个函数里面对应寄存器    DCR跟DMAR,他们保存了长度与地址,但是DMA的初始化里面就有要求设置寄存器和外设地址和长度,这不是重复定义了吗?
    
这里哪个大神给我讲解下啊,谢谢!

最佳答案

查看完整内容[请看2#楼]

回复【3楼】a85921819: --------------------------------- 不好意思   之前看错了    你可以点开TIM_DMAConfig()函数    里面配置的就是DMA连续传送长度和DMA 基地址    默认长度一个字节 以及基地址TIMx_CR1 如果你要配置TIM1的DMA搬运CCR1, 1个字节长度   那么你可以配置TIM_DMAConfig(TIM1,TIM_DMABase_CCR1,TIM_D ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-9-26 18:27:40 | 显示全部楼层
回复【3楼】a85921819:
---------------------------------
不好意思   之前看错了    你可以点开TIM_DMAConfig()函数    里面配置的就是DMA连续传送长度和DMA 基地址    默认长度一个字节 以及基地址TIMx_CR1
如果你要配置TIM1的DMA搬运CCR1, 1个字节长度   那么你可以配置TIM_DMAConfig(TIM1,TIM_DMABase_CCR1,TIM_DMABurstLength_1Transfer);
具体的配置可以看这个函数的注释
/**
  * @brief  Configures the TIMx's DMA interface.
  * @param  TIMx: where x can be  1, 2, 3, 4, 5, 8, 15, 16 or 17 to select 
  *   the TIM peripheral.
  * @param  TIM_DMABase: DMA Base address.
  *   This parameter can be one of the following values:
  *     @arg TIM_DMABase_CR, TIM_DMABase_CR2, TIM_DMABase_SMCR,
  *          TIM_DMABase_DIER, TIM1_DMABase_SR, TIM_DMABase_EGR,
  *          TIM_DMABase_CCMR1, TIM_DMABase_CCMR2, TIM_DMABase_CCER,
  *          TIM_DMABase_CNT, TIM_DMABase_PSC, TIM_DMABase_ARR,
  *          TIM_DMABase_RCR, TIM_DMABase_CCR1, TIM_DMABase_CCR2,
  *          TIM_DMABase_CCR3, TIM_DMABase_CCR4, TIM_DMABase_BDTR,
  *          TIM_DMABase_DCR.
  * @param  TIM_DMABurstLength: DMA Burst length.
  *   This parameter can be one value between:
  *   TIM_DMABurstLength_1Transfer and TIM_DMABurstLength_18Transfers.
  * @retval None
  */
void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST4_PERIPH(TIMx));
  assert_param(IS_TIM_DMA_BASE(TIM_DMABase));
  assert_param(IS_TIM_DMA_LENGTH(TIM_DMABurstLength));
  /* Set the DMA Base and the DMA Burst Length */
  TIMx->DCR = TIM_DMABase | TIM_DMABurstLength;
}
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-9-27 12:31:04 | 显示全部楼层
TIM_DMAConfig  这个是用户自己写的函数吧,   所以使用与否 得看用户需求
回复

使用道具 举报

8

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-3-25
在线时间
3 小时
 楼主| 发表于 2015-9-27 17:35:23 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
这是3.5版本自带的库函数啊,,我就是搞不懂怎么用
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 07:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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