历史上的今天
今天是: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);
}
}
史海拾趣
|
显示故障: VISTA下图片自动播放时偏向右侧,不知什么原因? 请教一显示故障: 在VISTA平台下,使用windows自带的图片播放器,自动播放时图像偏向右侧,此现象只有在最大分辨率的情况下会出现,在此特请教一下高手们,指点指点,谢谢!… 查看全部问答> |
|
程序员在深圳群已经超过1500人,里面有很多在大公司上班的成员(包括国家级的研究院),有很多经验丰富的成员(包括参加过上亿元的项目的架构师),有很热爱技术的成员(包括自己写过嵌入式操作系统),希望大家踊跃发言,找到志同道合的朋友,找到对你有帮助的 ...… 查看全部问答> |
|
MMRESULT mres; if (mres = waveOutOpen(&hWaveOut, WAVE_MAPPER, &lpFormat, (DWORD_PTR)sb_callback, (DWORD_PTR)pDeviceMemory, CALLBACK_FUNCTION) !=0) ...… 查看全部问答> |
|
AM29LV160DB的接法有些问题 BYTE已经被我接地了,那么就是8为数据宽度,只需要引出D0-D7就可以了 而EE_FPGA V1.0中是把D0-D15全部引出的 这点将在下一版中改进,设置为8bit和16bit模式可选 … 查看全部问答> |
|
偶是个430新手,这两天看了些资料,但是一直没有看到关于外扩ram得应用,想弱弱得问一下,430用哪个口扩展外部ram,扩展后,软件是怎么操作得(比如c51使用XBYTE访问得)? 请大虾不要置疑为何扩展ram,只因为系统确实需要这么做才能正常工作,这 ...… 查看全部问答> |
|
假设一个任务在执行过程中,被中断,然后保存现场进入中断后,发现更高优先级任务,这时候,执行更高优先级任务,在执行更高优先级任务时候,被中断的任务处在什么状态?在被中断的代码中,没有看到被挂起的代码。还有更高优先 ...… 查看全部问答> |
|
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 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 我看看了看03年的元件清单有个高频变容二极管,然后那年题目就有电压控制LC振荡器。是不是今年有可能会有呢? … 查看全部问答> |
|
这么晚发,实在是抱歉。。。。。 我总结的比较晚,各路大侠都已经说得差不多了,总结的也比我这业余人士强多了。时间也不早了,哈哈,我就只是简单说一下自己的想法吧,说多无益免得贻笑大方。其实在测试之前我还是不太明白这电源模块的优点,边测 ...… 查看全部问答> |




