当前位置: 首页 > article >正文

杰发科技AC7801——PWM获取固定脉冲个数

测试通道6

在初始化时候打开通道中断

void PWM1_GenerateFrequency(void)
{PWM_CombineChConfig combineChConfig[1]; //组合模式相关结构体PWM_IndependentChConfig independentChConfig[2];//独立模式相关结构体PWM_ModulationConfigType pwmConfig; //PWM模式相关结构体PWM_ConfigType config; //PWM模块结构体//结构体数据清零memset(&combineChConfig, 0, sizeof(combineChConfig));memset(&independentChConfig, 0, sizeof(independentChConfig));memset(&pwmConfig, 0, sizeof(pwmConfig));memset(&config, 0, sizeof(config));/*channel 6*/independentChConfig[0].channel = PWM_CH_6; //通道6independentChConfig[0].chValue = MOD_PWM >> 1;//通道6 channel值,输出占空比 = chValue / (config.maxValue + 1) = 50%independentChConfig[0].levelMode = PWM_HIGH_TRUE; //输出PWM高有效independentChConfig[0].polarity = PWM_OUTPUT_POLARITY_ACTIVE_LOW; //输出极性高有效,PWM mask后PWM输出低电平independentChConfig[0].interruptEn = ENABLE;//PWM通道匹配中断使能位independentChConfig[0].initLevel = PWM_LOW_LEVEL;//PWM初始电平输出为低,该配置受initChOutputEn控制,决定PWM计数器未工作前PWM口的输出电平值。independentChConfig[0].triggerEn = DISABLE;//通道外部触发使能
//    /*channel 7*/independentChConfig[1].channel = PWM_CH_7; //通道7independentChConfig[1].chValue = MOD_PWM >> 2;//通道7 channel值,输出占空比 = chValue / (config.maxValue + 1) = 25%independentChConfig[1].levelMode = PWM_HIGH_TRUE; //输出PWM高有效independentChConfig[1].polarity = PWM_OUTPUT_POLARITY_ACTIVE_HIGH; //输出极性高有效,PWM mask后PWM输出低电平independentChConfig[1].interruptEn = DISABLE;//PWM通道匹配中断使能位independentChConfig[1].initLevel = PWM_LOW_LEVEL;//PWM初始电平输出为低,该配置受initChOutputEn控制,决定PWM计数器未工作前PWM口的输出电平值。independentChConfig[1].triggerEn = DISABLE;//通道外部触发使能/*modulation mode config*/pwmConfig.countMode = PWM_UP_COUNT; //PWM计数器模式 (不同的计数模式频率及占空比计算方式不同)pwmConfig.independentChannelNum = 2; //独立通道数pwmConfig.combineChannelNum = 0; //组合对数pwmConfig.independentChConfig = independentChConfig; //独立通道配置变量地址赋值pwmConfig.combineChConfig = combineChConfig; //组合通道配置变量地址赋值pwmConfig.deadtimePsc = PWM_DEADTIME_DIVID_1;//死区插入分频值,与deadtime一起决定插入死区的时间。pwmConfig.deadtime = 0;  //死区时间 = (DTPSC * DTVAL)/PWM计数器时钟周期 = 1*24/24000000 = 1uspwmConfig.initChOutputEn = DISABLE; //使能初始化通道输出,使能后独立PWM模式的initLevel和组合PWM模式的ch1stInitLevel和ch2ndPolarity配置才会生效pwmConfig.initTriggerEn = DISABLE; //通道外部触发使能/*pwm config*/config.mode = PWM_MODE_MODULATION;//PWM模块配置为PWM模式config.initModeStruct = &pwmConfig;//PWM配置结构体地址赋值config.clkSource = PWM_CLK_SOURCE_APB; //PWM时钟源配置config.clkPsc = PWM_PRES;//PWM时钟源分频config.initValue = 0;//计数器初始寄存器值config.maxValue = MOD_PWM - 1; //PWM计数器最大值config.overflowInterrupEn = DISABLE;//计数器溢出中断使能config.cntOverflowFreq = 0;//CNTOF中断产生的频率与计数器频率的关系(0-127), 0表示每次计数器溢出都产生溢出中断,1表示间隔1次,2表示间隔2次,以此内推。config.interruptEn = ENABLE; //PWM中断使能config.callBack = PWM1_CallBack; //PWM中断回调PWM_Init(PWM1, &config); //配置初始化生效NVIC_SetPriority(PWM1_IRQn, 0); //设置PWM模块中断的优先级
}

在中断中对通道6开启计数

测试结果多了一个小脉冲,如果是边沿有效,可以减一个计数值

http://www.lryc.cn/news/2383787.html

相关文章:

  • MacBookPro上macOS安装第三方应用报错解决方案:遇到:“无法打开“XXX”,因为无法确定(验证)开发者身份?怎么解决
  • MVC和MVVM架构的区别
  • RAG(Retrieval-Augmented-Generation)检索增强生成
  • 黑马点评前端Nginx启动失败问题解决记录
  • 第12天-Python+Qt5开发实战:10大经典案例与深度解析
  • 软件开发命名避开保留关键字指南
  • 力扣第450场周赛
  • React-改变当前页class默认的样式
  • zabbix 常见问题
  • 人工智能培训:解锁未来职场竞争力的核心路径与课程内容解析
  • 深入解析Java泛型:从定义到实战应用
  • 【开源】一个基于 Vue3 和 Electron 开发的第三方网易云音乐客户端,具有与官方客户端相似的界面布局
  • 【云实验】Excel文件转存到RDS数据库
  • 从零开始:用Python语言基础构建宠物养成游戏:从核心知识到完整实战
  • labview设计一个虚拟信号发生器
  • 工业路由器WiFi6+5G的作用与使用指南,和普通路由器对比
  • Chrome 插件网络请求的全面指南
  • 编译Qt5.15.16并启用pdf模块
  • Python绘制新冠疫情的知识图谱
  • canvas(三)-动画3d
  • 使用RUST在Arduino上进行编程(MacOS,mega板)
  • MySQL迁移SSL报错
  • 大模型微调与高效训练
  • LLM驱动的未来软件工程范式与架构策略
  • OpenCv高阶(十六)——Fisherface人脸识别
  • Unity3D 异步加载材质显示问题排查
  • 【Django Serializer】一篇文章详解 Django 序列化器
  • 二分算法的补充说明
  • C++:array容器
  • java每日精进 5.19【Excel 导入导出】