付网站开发费计入什么科目,wordpress文章模板代码,wordpress后台邓丽,网站开发用到什么技术之前使用stm32的大概原理是#xff1a; 输入引脚输入一个脉冲#xff0c;捕获1开始极性捕获#xff0c;捕获的是从启动捕获功能开始计数#xff0c;捕获的是当前的计数值#xff1b;
例如一个脉冲#xff0c;捕获1捕获上升沿#xff0c;捕获2捕获下降沿#xff1b;而两…之前使用stm32的大概原理是 输入引脚输入一个脉冲捕获1开始极性捕获捕获的是从启动捕获功能开始计数捕获的是当前的计数值
例如一个脉冲捕获1捕获上升沿捕获2捕获下降沿而两个捕获计数值的差就是高电平的计数值
计数值又涉及到时钟分频等一个捕获时钟*计数值等于电平时间 如下是预分频结构图/预定标
这个预定标是什么东西2分频就是两个极性化成一个极性。第一个极性有效4分频也是如此 捕获大概框图
GPIO复用,ECAP模块PIE组中断 可以选择是捕获或者APWM模式
现在是CAP模式 详细的捕获框图
cap引脚进来后是 分频/预定标极性选择捕获计数器和相位寄存器控制而且有时钟同步捕获单次/连续控制PIE组中断 连续/单次控制
捕获事件的时候受到单次/连续事件 停止值控制
这个中的计数器是可以选择连续用捕获1到4的捕获4次捕获。并且可以设置是否重置计数值 中断
ECFLG 标记 后面是这个图没有的 和PIE中断标记 和 ECAp一个通用的中断INT 只要有事件这个中断标记必有在寄存器说明有
所以中断里面需要清除三个标志
本次是使用单次模式下的 连续1234捕获。在第四次捕获完成之后进入中断 程序 /** cap.c** Created on: 2023年12月16日* Author: My PC*/
#includecap.hvoid cap_init()
{EALLOW;SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK 1;//gpio时钟SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK 1;//cap5时钟EDIS;EALLOW;GpioCtrlRegs.GPBMUX2.bit.GPIO48 1;//复用1GpioCtrlRegs.GPBDIR.bit.GPIO48 0;//输入GpioCtrlRegs.GPBPUD.bit.GPIO48 0;//下拉GpioCtrlRegs.GPBQSEL2.bit.GPIO48 0;//与系统时钟同步EDIS;EALLOW;ECap5Regs.ECEINT.all 0;//禁止全部中断ECap5Regs.ECCLR.all 0xffff;//清除所有中断标记ECap5Regs.ECCTL1.bit.CAPLDEN 0;//禁止向cap捕获装载值ECap5Regs.ECCTL2.bit.TSCTRSTOP 0;//禁止计数ECap5Regs.ECCTL1.bit.CAP1POL 1;//下降沿触发ECap5Regs.ECCTL1.bit.CAP2POL 0;//上升边沿触发ECap5Regs.ECCTL1.bit.CAP3POL 1;ECap5Regs.ECCTL1.bit.CAP4POL 0;ECap5Regs.ECCTL1.bit.CTRRST1 0;//捕获1后计数值不复位首次启动的时候避免捕获1过大选择此次复位赋值为1合适点反正第一次捕获值没什么意义ECap5Regs.ECCTL1.bit.CTRRST2 0;ECap5Regs.ECCTL1.bit.CTRRST3 0;ECap5Regs.ECCTL1.bit.CTRRST4 1;//捕获4后计数值复位ECap5Regs.ECCTL2.bit.CAP_APWM 0;//运行再cap模式下ECap5Regs.ECCTL2.bit.CONT_ONESHT 1;//捕获处于单次模式ECap5Regs.ECCTL2.bit.STOP_WRAP 3;//单次模式下。捕获4完成之后停止 ECap5Regs.ECCTL2.bit.SYNCI_EN 1;//使能内部同步 使得相位装载到计数器ECap5Regs.ECCTL2.bit.SYNCO_SEL 0;// 选择内部同步信号为外部同步信号ECap5Regs.ECCTL2.bit.REARM 1;//单次序列强制 mod计数器复位为0 计数器使能 使能捕获寄存器EDIS;EALLOW;ECap5Regs.ECCTL2.bit.TSCTRSTOP 1;//计数ECap5Regs.ECCTL1.bit.CAPLDEN 1;//使能向cap捕获装载值ECap5Regs.ECEINT.bit.CEVT4 1;//使能捕获4中断EDIS;EALLOW;PieCtrlRegs.PIEIER4.bit.INTx5 1;//PIE4的第5个中断使能PieVectTable.ECAP5_INT ECAP5_INT_REQ;//中断的函数 存中断函数地址的地址EDIS;IER | M_INT4;//CAP5中断在 PIE的第四组EINT;ERTM;
}Uint32 CAP_num_10, CAP_num_20, CAP_num_30, CAP_num_40;interrupt void ECAP5_INT_REQ()
{CAP_num_1 ECap5Regs.CAP1;CAP_num_2 ECap5Regs.CAP2;CAP_num_3 ECap5Regs.CAP3;CAP_num_4 ECap5Regs.CAP4;ECap5Regs.ECCLR.bit.CEVT4 1;ECap5Regs.ECCLR.bit.INT 1;//因为每个中断这个INT标记都会设置1.所以要同时清除ECap5Regs.ECCTL2.bit.REARM 1;//下一次还是强制为单次序列PieCtrlRegs.PIEACK.bit.ACK41;//PIE组4 的应答清除
}48脚接一个PWM可以仿真看到4个捕获值 主程序
#include DSP2833x_Device.h // DSP2833x Headerfile Include File
#include DSP2833x_Examples.h // DSP2833x Examples Include File
#include led1.h
#include key.h
#include epwm.h
#include exti.h
#include time0.h
#include adc.h
#include cap.h
int main()
{float temp 0;Uint16 adc_num,i0;InitSysCtrl();InitPieCtrl();IER 0x0000;IFR 0x0000;InitPieVectTable();led_init();time0_init(2000);epwm_init(1000);EPWM6_set_compara(1000, 500);//150M不分频的PWMcap_init();while (1){DELAY_US(200000);EPWM6_set_compara(1000, i100);if(i1000){i0;}}}