在DSP的电机控制中,经常要用到方波输出,就是常说的PWM,PTO。一般的控制方式采用的是使用2812的EV单元去产生对称波形。但是在现代的一些控制领域,特别是位置控制领域,经常要实现开环控制脉冲个数,并产生多种频率的脉冲输出。EV是很难实现的。
我提供一种新的实现方法,可以实现上面的功能:使用定时器中断来反向GPIO口实现脉冲输出的。
比如,我使用CPUTIMER2来实现波形输出:
1.初始化定时器值为半个周期值。
ConfigCpuTimer(&CpuTimer2, 100, 10);
StartCpuTimer2();
2.中断程序如下:
interrupt void CpuTim2Int(void)
{
Uint32 i;
if (State==1) //电平反向state为电平值
State=0;
else {
State=1;
xxx++; //xxx为脉冲个数,发300000个脉冲就停止
if (xxx==300000) {
xxx=0;
StopCpuTimer2();
}
CpuTimer2Regs.PRD.all=i/2; //i为脉冲周期值
GpioDataRegs.GPATOGGLE.bit.GPIOA0=1;//pto2
}
我要赚赏金打赏帖 |
|
|---|---|
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
我要赚赏金
