• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32为控制器,如何将内部资源有效分配、结合?

yufucheng 2017-07-04 浏览量:586
在以STM32为控制器的设计中,利用到了USART1\2\3传输数据,SPI1与传感器通信,DMA数据传输,外部键盘的中断控制等内部资源。在控制过程中,如何将这些内部资源有效的运行。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 利用信号机制将采集到的数据传输到主函数处理。
    • 发布于 2017-07-04
    • 举报
    • 评论 3
    • 1
    • 0
yufucheng 回复了 Sourcelink:但是其中用到的定时器会影响到其他通信模块和显示模块。 回复
Sourcelink 回复了 Sourcelink:注意定时器的频率不要太低,非阻塞方式不会影响其他模块通信。 回复
Sourcelink 回复了 yufucheng:注意定时器的频率不要太低,非阻塞方式不会影响其他模块通信 回复

其他答案 数量:4
  • 两种选择

    一、如果你不需要使用多个中断,且这些任务的优先级不多(就是说不指定哪个任务优于别的任务执行)的话,可以使用裸机,直接用STcubemx生成底层代码,然后在main.c的while(1)循环里面创建多个任务,比如一个任务用于监听键盘中断,一个任务用于监听串口,还有用于SPI采集等等

    二、如果你需要使用多个中断,且优先级比较复杂的话,建议还是运行一个RTOS操作系统,目前ST官方支持的操作系统包括FREERTOS/UCOS等,直接创建任务,然后用STcubemx生成硬件底层代码与RTOS的底层代码即可

    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 2
    • 0

  • 可以使用RTOS


    USART1\2\3传输数据:根据你的要求的通讯实时性,是选择进程中查询响应,或是在中断中进行实时响应。如果要求不高可以采用查询的方法,把实时性要求高的使用中断。

    SPI1与传感器通信:这一部分可以放在一个进程中进行单独的控制。

    DMA数据传输:可以采用中断方式。

    外部键盘的中断控制,键盘的实时性一般要求不是太高,还要有消抖的时间,所以可以使用查询的方式放在一个进程中,不要占用中断线。

    如果不使用RTOS,只是跑裸机的话。也是类似的,要针对实时性要求进行配置,高实时性的要采用高中(断优)先级。没有实时性要求的可以放在main中的wihile里,也可以配置成低优先级。

    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 状态机制和消息机制,可以节省单片机内部资源。
    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 1. 首先要確定您這些控制和接口有沒有絕對的先後順序,或者參數傳遞,並且持續交互

    2. 如果沒有,則使用無系統的順序執行即可

    3. 如果有,則使用RTOS方式,每個接口各自依照優先先後順序調度,並將Task之間Message透過參數傳遞,將能有效的管理和優化

    4. 若使用RTOS,推薦FreeRTOS,一來是有模板可使用,二來是免費

    以上供參考

    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 1
    • 0

相关问题

问题达人换一批

STM32为控制器,如何将内部资源有效分配、结合?