板子自带了pwm使能和设置的接口,我找到了相应的实现接口。现在的问题是我要用pwm,但是我看了配置教程,要配置定时器,配置pin脚。我就感到很疑惑,既然图片中的接口可以驱动pwm,为什么还要很麻烦去配置,不能直接调用这个接口去实现吗,这样就省略配置的这一项。
adaphoto的回答已经很完整了。做嵌入式还是离不开硬件的,除非你在别人移植好的代码上去做开发,这样就不用关心硬件驱动的配置了。但如果你想做点自己的东西,对底层芯片硬件的了解还是有必要的。
这里只是希望以后RTT在每个芯片的驱动上有一些更详细的文字档案(最好是图形流程式,一目了然),这样可以让更多的初学者进入这个行业,而不是碰到枯燥无味的硬件描述后对它失去了兴趣和信心。
你看到的这一层是设备框架抽象层。
你要控制外设,本质就是去控制外设的寄存器。
设备框架抽象层 需要对接 drv_pwm.c
。drv_pwm.c
调用了 STM32_HAL_PWM
.
如果你没有用配置定时器,没有配置pin脚,drv_pwm.c
是找不到你要控制谁,这样驱动层就直接会给你返回错误。
结论,不可以省去。
Art_Pi学习笔记6:驱动PWM输出 - RT-Thread问答社区
https://club.rt-thread.org/ask/article/2483.html
Art_Pi学习笔记7:自己添加硬件定时器设备HWTIMER - RT-Thread问答社区
https://club.rt-thread.org/ask/article/2492.html
希望能够解君愁
首先感谢您清晰的回答,我明白了。然后就是说finsh命令中的pwm_enable在我不添加驱动层的时候还是不生效的对吧?还有就是我可以直接调hal库,像逻辑stm32配置pwm一样生成我想要的pwm吗?
@wwk
finsh命令中的pwm_enable在我不添加驱动层的时候还是不生效的对吧?
答:是的,不会生效,他会返回错误值。
我可以直接调hal库,像逻辑stm32配置pwm一样生成我想要的pwm吗?
答:可以。如果你仅仅只在 STM32 这一个平台上开发的话,完全可以用 HAL 的方式去操作, HAL 库抽象的已经很好了。这样就无法使用到 RTT 设备框架的优势了,RTT 的设备框架只要驱动层做好了,就非常容易的实现跨平台。
如果我的回答帮助到你,请点个采纳。
好的好的,,谢谢你耐心的回答,,万分感谢