[应用相关] 为何PWM口失效,不起作用

[复制链接]
801|26
 楼主| lium 发表于 2020-3-7 10:36 | 显示全部楼层 |阅读模式
大家好,我在用PA8做普通IO输出口使用,然后做PWM口使用,初始化顺序是开始设置输出口,然后设置为PWM口,为何PWM口失效,不起作用
guoyt 发表于 2020-3-7 10:40 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| lium 发表于 2020-3-7 10:43 | 显示全部楼层
定义成16位或32位的数组,或者定义成联合
hanwe 发表于 2020-3-7 10:46 | 显示全部楼层

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, flag/*ENABLE*/);
楼主,你这个Flag不是函数库的语法,编译器会误判吗?
yufe 发表于 2020-3-7 10:50 | 显示全部楼层
还有你的硬件资源真的紧张到这样吗,运行过程不停的初始化IO口很累的,一般也只在输入/输出间转换。还是复用功能,要浪费很多系统宝贵资源呀!
wangpe 发表于 2020-3-7 10:55 | 显示全部楼层


可能是因为功能寄存器没有配置好
langgq 发表于 2020-3-7 10:58 | 显示全部楼层

主函数缺少while(1)死循环,瞬间就跑完了。
还有,建议使用TIM2 或者 TIM3
wangzsa 发表于 2020-3-7 11:01 | 显示全部楼层
有道理,应该在while(1)里PwmIoOut();
huangchui 发表于 2020-3-7 11:04 | 显示全部楼层
运行过程不停的初始化IO口很繁琐,资源不够用吗?
guoyt 发表于 2020-3-7 11:07 | 显示全部楼层
是的, Systick 中断是为操作系统提供时基的, osdelay() 的时基来源于此. Systick 的中断优先级一般设置得比较低, 因为时基系统相对有较长的执行时间. 这样的设计可以避免 systick 影响其它中断的实时性.
zhuhuis 发表于 2020-3-7 11:14 | 显示全部楼层
你的问题是, 你的中断就不应该调用 osdelay(), 中断的任务保留必要的信号和状态变量, 然后交割主循环或者任务去做剩下的处理, 这里你可以做个处理任务去对接这个中断服务.
yufe 发表于 2020-3-7 11:18 | 显示全部楼层
当然还有不推荐的办法, 你非得这样弄, 把调用 osdelay() 的中断的优先级设置得比 systick 更低. 为了追求最简练的系统, 这样做也不是非得要禁止, 但有个严重的副作用, 这个中断会影响其它所有任务的实时性! 因为这个中断服务就相对于超级优先级的任务了.
 楼主| lium 发表于 2020-3-7 11:23 | 显示全部楼层
中断的任务保留必要的信号和状态变量, 然后交割主循环或者任务去做剩下的处理
 楼主| lium 发表于 2020-3-7 11:26 | 显示全部楼层
我看了文档,感觉这样中断好像无法嵌套
langgq 发表于 2020-3-7 11:29 | 显示全部楼层
OS的操作实在是太高端了,我至今搞不懂咋回事。
 楼主| lium 发表于 2020-3-7 11:34 | 显示全部楼层
在整一个通讯的玩意,3个下行采集串口,2个上行串口,不用os,处理能力大打折扣
wangzsa 发表于 2020-3-7 11:37 | 显示全部楼层
看来是个大的数据贪吐量的工作, 这考验的是你的数据结构和数据处理的能力, 并未见得发挥了 OS 的优势!
zhuww 发表于 2020-3-7 11:40 | 显示全部楼层
你使能中断同时设置优先级就是。
zhanglli 发表于 2020-3-7 11:44 | 显示全部楼层
在FreeRTOS中如何判断堆栈使用情况?uCOS可以很方便的查看
 楼主| lium 发表于 2020-3-7 11:48 | 显示全部楼层

数据并发处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

915

主题

9578

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部