首先你的思路是对的,然而并不是“一个指令周期的高低电平占比”,而是一段时间内的周期占比。
根据你被控制的对象的要求进行算法设计,这里有两种方式:
【注:这里为了方便描述,将低电平-低电平或者高电平-高电平过程看做和高电平-低电平、低电平到高电平过程一样电平发生了改变。】
①(以50%占空比举例来说)用一个char型变量i来计数电平改变的次数、初值为1,初始电平假设为低电平,每改变一次电平i自加1,在i不大于50之前一直保持低电平,当i大于50之后立即将电平拉高,之后在i不大于100的时候始终保持为高电平,大于100之后将i置1、电平拉低,再次进入上述循环。
总之,假设初始电平为低电平,在i从1到100的计数周期内,不大于50时保持低电平,大于50之后保持高电平,i大于100以后重置并拉低电平进入下一个循环,就可以做到50%的占空比。
②以在100ms内做到占空比为50%举例来说,假设初始电平为低电平,配置定时器每50ms改变一次电平状态就可以了。
初始电平的高低并没有影响。
附注:
①占空比定义:首先你的思路是对的,然而并不是“一个指令周期的高低电平占比”,而是一段时间内的周期占比。
根据你被控制的对象的要求进行算法设计,这里有两种方式:
【注:这里为了方便描述,将低电平-低电平或者高电平-高电平过程看做和高电平-低电平、低电平到高电平过程一样电平发生了改变。】
①(以50%占空比举例来说)用一个char型变量i来计数电平改变的次数、初值为1,初始电平假设为低电平,每改变一次电平i自加1,在i不大于50之前一直保持低电平,当i大于50之后立即将电平拉高,之后在i不大于100的时候始终保持为高电平,大于100之后将i置1、电平拉低,再次进入上述循环。
总之,假设初始电平为低电平,在i从1到100的计数周期内,不大于50时保持低电平,大于50之后保持高电平,i大于100以后重置并拉低电平进入下一个循环,就可以做到50%的占空比。
②以在100ms内做到占空比为50%举例来说,假设初始电平为低电平,配置定时器每50ms改变一次电平状态就可以了。
初始电平的高低并没有影响。
附注:
①占空比定义:占空比是指高电平在一个脉冲周期中所占的比例。
②PWM定义:PWM 是 Pulse Width Modulation 的缩写, 是一连串的电平总宽度不一样的信号。