历史上的今天
返回首页

历史上的今天

今天是:2024年08月22日(星期四)

正在发生

2019年08月22日 | STM32学习笔记(PWM输出)

2019-08-22 来源:eefocus

本人采用Cube 进行的STM32库函数编程,PWM波的输出配置以及代码如下所示:(经过实际实验证明非常好用)

以下为定时器PWM输出函数,注意:使用时一定要把原来输出函数注释掉。

注释代码如下:

// sConfigOC.OCMode = TIM_OCMODE_PWM1;

// sConfigOC.Pulse = 0;

// sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

// sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)

// {

// _Error_Handler(FILE, LINE);

// }


// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)

// {

// _Error_Handler(FILE, LINE);

// }


// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)

// {

// _Error_Handler(FILE, LINE);

// }


// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)

// {

// _Error_Handler(FILE, LINE);

// }

void PWM_Change_Duty(float x,float y,float z,float w)

{

TIM_OC_InitTypeDef sConfigOC;

sConfigOC.OCMode = TIM_OCMODE_PWM1;//pwm输出模式配置

sConfigOC.Pulse = x;

sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

//pwm输出停止函数

if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_1) != HAL_OK)

{

_Error_Handler(FILE, LINE);//错误等待函数

}

//pwm输出配置函数

if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_1) != HAL_OK)

{

_Error_Handler(FILE,LINE);

}

//pwm输出开始函数

if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1)!= HAL_OK)

{

_Error_Handler(FILE,LINE);

}

sConfigOC.Pulse = y;

sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

//pwm输出停止函数

if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_2) != HAL_OK)

{

_Error_Handler(FILE, LINE);//错误等待函数

}

//pwm输出配置函数

if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_2) != HAL_OK)

{

_Error_Handler(FILE,LINE);

}

//pwm输出开始函数

if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2)!= HAL_OK)

{

_Error_Handler(FILE,LINE);

}


sConfigOC.Pulse = z;

sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

//pwm输出停止函数

if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_3) != HAL_OK)

{

_Error_Handler(FILE, LINE);//错误等待函数

}

//pwm输出配置函数

if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_3) != HAL_OK)

{

_Error_Handler(FILE,LINE);

}

//pwm输出开始函数

if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3)!= HAL_OK)

{

_Error_Handler(FILE,LINE);

}


sConfigOC.Pulse = w;

sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

//pwm输出停止函数

if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_4) != HAL_OK)

{

_Error_Handler(FILE, LINE);//错误等待函数

}

//pwm输出配置函数

if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_4) != HAL_OK)

{

_Error_Handler(FILE,LINE);

}

//pwm输出开始函数

if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4)!= HAL_OK)

{

_Error_Handler(FILE,LINE);

}

}


推荐阅读

史海拾趣

AEL [AEL Crystals Ltd]公司的发展小趣事

AEL Crystals Ltd公司成立于1960年,最初专注于石英频率控制元件的研发与生产。在创立初期,公司面临着技术挑战和市场竞争的双重压力。然而,凭借创始人的远见卓识和团队的不懈努力,AEL Crystals逐渐在石英频率控制领域站稳了脚跟。公司通过持续改进生产工艺和提高产品质量,逐渐赢得了客户的信任和支持。

H&D Wireless公司的发展小趣事

高创科技起源于1987年的以色列,最初是一家专注于直驱运动控制驱动器开发的厂商。在以色列的三十多年里,高创积累了丰富的软件算法技术,特别是在运动控制领域形成了独特优势。这种积累不仅体现在其产品的稳定性和高性能上,更为后续的技术创新和市场拓展奠定了坚实基础。

Analog Modules Inc公司的发展小趣事

随着全球化进程的加速,高创也开始了其全球化布局的步伐。除了在以色列和中国设立研发中心外,高创还积极拓展国际市场,与全球多个国家和地区的客户建立了长期合作关系。通过参加国际知名展会如汉诺威工业博览会等,高创不仅展示了其最新技术和产品,还加强了与国际同行的交流与合作,进一步提升了其国际知名度和影响力。

ETA-USA公司的发展小趣事

随着业务的发展和市场的扩大,ETA-USA开始在全球范围内布局。公司先后在中国、欧洲等地设立了分公司或办事处,以更好地服务当地客户。这一全球扩张策略不仅增强了公司的市场竞争力,也为其带来了更多的商业机会和合作伙伴。

HALO Electronics公司的发展小趣事

ETA-USA公司起源于XXXX年,当时由几位电子工程领域的先驱者在美国密歇根州的Troy市创立了这家专注于电子技术和解决方案的公司。初创时期,ETA-USA面临着技术挑战、资金短缺和市场竞争激烈等多重困难。然而,通过不断创新和提供高质量的工程服务,公司逐渐在电子行业崭露头角,赢得了客户的信任。

Dantona Industries公司的发展小趣事

在公司的成长过程中,Dantona Industries始终将技术创新作为核心竞争力。他们投入大量资源研发新产品,不断提高产品的性能和质量。一次,公司面临了一项重大的技术难题,需要开发一款具有更高集成度和更低功耗的芯片。Daniel Tona带领团队日夜兼程,经过数月的努力,终于成功突破了技术瓶颈,推出了这款具有划时代意义的芯片。这一创新不仅为公司赢得了市场的认可,也为整个电子行业树立了新的标杆。

问答坊 | AI 解惑

显示故障: VISTA下图片自动播放时偏向右侧,不知什么原因?

请教一显示故障: 在VISTA平台下,使用windows自带的图片播放器,自动播放时图像偏向右侧,此现象只有在最大分辨率的情况下会出现,在此特请教一下高手们,指点指点,谢谢!…

查看全部问答>

shen zhen programmer

程序员在深圳群已经超过1500人,里面有很多在大公司上班的成员(包括国家级的研究院),有很多经验丰富的成员(包括参加过上亿元的项目的架构师),有很热爱技术的成员(包括自己写过嵌入式操作系统),希望大家踊跃发言,找到志同道合的朋友,找到对你有帮助的 ...…

查看全部问答>

mobile下声音处理(调用API出错,高手请进)

        MMRESULT  mres;         if (mres = waveOutOpen(&hWaveOut, WAVE_MAPPER, &lpFormat, (DWORD_PTR)sb_callback, (DWORD_PTR)pDeviceMemory, CALLBACK_FUNCTION) !=0)     ...…

查看全部问答>

有什么好的WinCE学习资料,大家推荐以下,谢了!

有什么好的WinCE学习资料,大家推荐以下,谢了!…

查看全部问答>

EE_FPGA V1.0 发现的一个BUG

AM29LV160DB的接法有些问题   BYTE已经被我接地了,那么就是8为数据宽度,只需要引出D0-D7就可以了 而EE_FPGA V1.0中是把D0-D15全部引出的 这点将在下一版中改进,设置为8bit和16bit模式可选  …

查看全部问答>

关于430f149sram得扩展

偶是个430新手,这两天看了些资料,但是一直没有看到关于外扩ram得应用,想弱弱得问一下,430用哪个口扩展外部ram,扩展后,软件是怎么操作得(比如c51使用XBYTE访问得)? 请大虾不要置疑为何扩展ram,只因为系统确实需要这么做才能正常工作,这 ...…

查看全部问答>

请教一个UCOS中断任务的问题

    假设一个任务在执行过程中,被中断,然后保存现场进入中断后,发现更高优先级任务,这时候,执行更高优先级任务,在执行更高优先级任务时候,被中断的任务处在什么状态?在被中断的代码中,没有看到被挂起的代码。还有更高优先 ...…

查看全部问答>

C2000 问题汇总Ver 1.0

C28x Based DeviceQ: What is the difference between the TMS320F28xx and the TMS320C28xx MCUs? A: The \"F\" represents flash, while the \"C\" represents ROM. The Flash devices are reprogrammable and are available through normal dist ...…

查看全部问答>

是不是今年会有压控LC振荡器 类似得题目?

本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 我看看了看03年的元件清单有个高频变容二极管,然后那年题目就有电压控制LC振荡器。是不是今年有可能会有呢?  …

查看全部问答>

易电源试用报告4:总结

这么晚发,实在是抱歉。。。。。 我总结的比较晚,各路大侠都已经说得差不多了,总结的也比我这业余人士强多了。时间也不早了,哈哈,我就只是简单说一下自己的想法吧,说多无益免得贻笑大方。其实在测试之前我还是不太明白这电源模块的优点,边测 ...…

查看全部问答>