网站访问速度,嘉兴网站seo,杭州互联网企业,个人网站备案 资料一、前提分析 举例#xff1a;一首歌所包含的音阶有高有低#xff0c;而按照某种编曲的顺序排列也就对应了不同的频率#xff08;五线谱#xff1a;1234567 对应的音阶各不相同#xff09;所以频率可以理解为它的源头。频率的来源又可由PWM来控制故而一首歌所包含的频率序…一、前提分析 举例一首歌所包含的音阶有高有低而按照某种编曲的顺序排列也就对应了不同的频率五线谱1234567 对应的音阶各不相同所以频率可以理解为它的源头。频率的来源又可由PWM来控制故而一首歌所包含的频率序列很长若每次都交给cpu来做不能做到节省资源故引出如下技术方案。 二、 DMA和PWM之间如何相关联 控制PWM输出一般采用TIM的OC定时器的输出比较初始化完成后一般通过改变TIMx-CCRx寄存器的值来改变占空比而DMA搬运方向中有存储器到外设这种因此外设的地址可设为TIMx-CCRx的地址存储器的地址根据 一、前提分析 中的思想初始化一个含有频率序列的数组存储器的基地址即为此数组。 U32 SRC_Buffer [256];
//这个频率序列的初始化就需要根据相应场景来进行这里重在编程思想的记录
void DMA_Configuration( void )
{DMA_InitTypeDef DMA_InitStructure;RCC_AHBPeriphClockCmd( RCC_AHBPeriph_DMA1, ENABLE ); // dma1时钟使能DMA_DeInit( DMA1_Channel5 ); // DMA复位DMA_StructInit( DMA_InitStructure ); // DMA缺省的参数DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t) TIM1-CCR3; //TIM1的通道3DMA_InitStructure.DMA_MemoryBaseAddr (uint32_t) SRC_Buffer; //内存地址DMA_InitStructure.DMA_DIR DMA_DIR_PeripheralDST; //dma传输方向,单向DMA_InitStructure.DMA_BufferSize sizeof( SRC_Buffer )/4; //此处根据实际情况调整DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable; //设置DMA的外设递增模式一个外设DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable; //设置DMA的内存递增模式DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_HalfWord; //外设数据字长DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_HalfWord; //内存数据字长//循环模式开启Buffer写满后自动回到初始地址开始传输DMA_InitStructure.DMA_Mode DMA_Mode_Circular; //设置DMA的传输模式DMA_InitStructure.DMA_Priority DMA_Priority_High; //设置DMA的优先级别DMA_InitStructure.DMA_M2M DMA_M2M_Disable; //设置DMA的2个memory中的变量互相访问DMA_Init( DMA1_Channel5, DMA_InitStructure );DMA_ClearFlag( DMA1_IT_TC5 );DMA_ITConfig( DMA1_Channel5, DMA_IT_TC, ENABLE );DMA_Cmd( DMA1_Channel5, ENABLE );
} 三、如何控制每次DMA传输之间的间隔以拟合音轨或正弦波 这里可以将DMA与定时器绑定从而控制PWM流触发条件为定时器计数溢出由于定时器计数溢出事件与DMA功能绑定故间隔取决于定时器的频率和预装载值。 void Tim1_Configuration( void )
{INT16U TIM_Prescaler, TIM_Period;INT32U utemp;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM1, ENABLE );TIM_DeInit( TIM1 );TIM_Prescaler xxx;//不同芯片及不同场景此处取值不同故此处由测试得出TIM_Period xxx; // 不同芯片及不同场景此处取值不同故此处由测试得出TIM_TimeBaseStructure.TIM_Period TIM_Period - 1;TIM_TimeBaseStructure.TIM_Prescaler TIM_Prescaler - 1;TIM_TimeBaseStructure.TIM_ClockDivision TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_RepetitionCounter 0; TIM_TimeBaseInit( TIM1, TIM_TimeBaseStructure );TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM2;TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; // 使能输出比较状态TIM_OCInitStructure.TIM_OutputNState TIM_OutputNState_Disable; // 失能输出比较N状态TIM_OCInitStructure.TIM_Pulse 72;TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_Low;TIM_OCInitStructure.TIM_OCNPolarity TIM_OCNPolarity_Low; TIM_OCInitStructure.TIM_OCIdleState TIM_OCIdleState_Reset;TIM_OCInitStructure.TIM_OCNIdleState TIM_OCNIdleState_Reset;TIM_OC3Init( TIM1, TIM_OCInitStructure );TIM_OC3PreloadConfig( TIM1, TIM_OCPreload_Enable ); // 使能TIMx在CCR3上的预装载寄存器TIM_DMACmd( TIM1, TIM_DMA_Update, ENABLE ); //这里是最重要的一步TIM_Cmd( TIM1, ENABLE ); // 定时器开始运行// 这条语句必须要有!!!TIM_CtrlPWMOutputs( TIM1, ENABLE );
} 最后说明上述代码中虽开启了很多中断但实际未参与功能的实现留作预留接口便于更深层次的逻辑扩展。
文章转载自: http://www.morning.sjpbh.cn.gov.cn.sjpbh.cn http://www.morning.qzpw.cn.gov.cn.qzpw.cn http://www.morning.rjnm.cn.gov.cn.rjnm.cn http://www.morning.rymb.cn.gov.cn.rymb.cn http://www.morning.zsleyuan.cn.gov.cn.zsleyuan.cn http://www.morning.mtrfz.cn.gov.cn.mtrfz.cn http://www.morning.hhnhb.cn.gov.cn.hhnhb.cn http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn http://www.morning.ttdbr.cn.gov.cn.ttdbr.cn http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.lztrt.cn.gov.cn.lztrt.cn http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn http://www.morning.mbdbe.cn.gov.cn.mbdbe.cn http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn http://www.morning.tynqy.cn.gov.cn.tynqy.cn http://www.morning.pwmm.cn.gov.cn.pwmm.cn http://www.morning.gnyhc.cn.gov.cn.gnyhc.cn http://www.morning.fjkkx.cn.gov.cn.fjkkx.cn http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn http://www.morning.cwgfq.cn.gov.cn.cwgfq.cn http://www.morning.pmnn.cn.gov.cn.pmnn.cn http://www.morning.zyrp.cn.gov.cn.zyrp.cn http://www.morning.hytr.cn.gov.cn.hytr.cn http://www.morning.bfwk.cn.gov.cn.bfwk.cn http://www.morning.ryxyz.cn.gov.cn.ryxyz.cn http://www.morning.yxshp.cn.gov.cn.yxshp.cn http://www.morning.rnmmh.cn.gov.cn.rnmmh.cn http://www.morning.ktrdc.cn.gov.cn.ktrdc.cn http://www.morning.dqbpf.cn.gov.cn.dqbpf.cn http://www.morning.sfzwm.cn.gov.cn.sfzwm.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn http://www.morning.pymff.cn.gov.cn.pymff.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.gpryk.cn.gov.cn.gpryk.cn http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn http://www.morning.gyylt.cn.gov.cn.gyylt.cn http://www.morning.xfjwm.cn.gov.cn.xfjwm.cn http://www.morning.cnbdn.cn.gov.cn.cnbdn.cn http://www.morning.rlksq.cn.gov.cn.rlksq.cn http://www.morning.dgmjm.cn.gov.cn.dgmjm.cn http://www.morning.rdmz.cn.gov.cn.rdmz.cn http://www.morning.mqfkd.cn.gov.cn.mqfkd.cn http://www.morning.bkxnp.cn.gov.cn.bkxnp.cn http://www.morning.tqpnf.cn.gov.cn.tqpnf.cn http://www.morning.dmnqh.cn.gov.cn.dmnqh.cn http://www.morning.jtmql.cn.gov.cn.jtmql.cn http://www.morning.mqwnp.cn.gov.cn.mqwnp.cn http://www.morning.bkslb.cn.gov.cn.bkslb.cn http://www.morning.txnqh.cn.gov.cn.txnqh.cn http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn http://www.morning.bpzw.cn.gov.cn.bpzw.cn http://www.morning.cniedu.com.gov.cn.cniedu.com http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn http://www.morning.kbkcl.cn.gov.cn.kbkcl.cn http://www.morning.rntby.cn.gov.cn.rntby.cn http://www.morning.dkmzr.cn.gov.cn.dkmzr.cn http://www.morning.mwmxs.cn.gov.cn.mwmxs.cn http://www.morning.yrbp.cn.gov.cn.yrbp.cn http://www.morning.lqznq.cn.gov.cn.lqznq.cn http://www.morning.rkkh.cn.gov.cn.rkkh.cn http://www.morning.grynb.cn.gov.cn.grynb.cn http://www.morning.trfh.cn.gov.cn.trfh.cn http://www.morning.dkqbc.cn.gov.cn.dkqbc.cn http://www.morning.sfnr.cn.gov.cn.sfnr.cn http://www.morning.mzcsp.cn.gov.cn.mzcsp.cn http://www.morning.kcfnp.cn.gov.cn.kcfnp.cn http://www.morning.gktds.cn.gov.cn.gktds.cn http://www.morning.qflcb.cn.gov.cn.qflcb.cn http://www.morning.gpryk.cn.gov.cn.gpryk.cn http://www.morning.lwlnw.cn.gov.cn.lwlnw.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn http://www.morning.xctdn.cn.gov.cn.xctdn.cn http://www.morning.wqnc.cn.gov.cn.wqnc.cn http://www.morning.snnkt.cn.gov.cn.snnkt.cn http://www.morning.qstkk.cn.gov.cn.qstkk.cn http://www.morning.mm27.cn.gov.cn.mm27.cn