[MM32硬件] 基于keil环境下mm32f327单片机rtthread的移植

[复制链接]
4972|76
 楼主| 为你转身 发表于 2022-7-31 20:21 | 显示全部楼层
common.c文件:
  1. /*********************************************************************************************************************
  2. * COPYRIGHT NOTICE
  3. * Copyright (c) 2019,逐飞科技
  4. * All rights reserved.
  5. * 技术讨论QQ群:一群:179029047(已满)  二群:244861897
  6. *
  7. * 以下所有内容版权均属逐飞科技所有,未经允许不得用于商业用途,
  8. * 欢迎各位使用并传播本程序,修改内容时必须保留逐飞科技的版权声明。
  9. *
  10. * @file                                common.c
  11. * @company                        成都逐飞科技有限公司
  12. * @author                        逐飞科技(QQ3184284598)
  13. * @version                        查看doc内version文件 版本说明
  14. * @Software                        IAR 8.32.4 or MDK 5.28
  15. * @Target core                MM32F3277
  16. * @Taobao                        https://seekfree.taobao.com/
  17. * @date                                2021-02-22
  18. ********************************************************************************************************************/

  19. #include "common.h"
  20. #include "hal_misc.h"

  21. CAMERA_TYPE_enum camera_type;                                                                                                        // 摄像头类型变量
  22. uint8 *camera_buffer_addr;                                                                                                                // 摄像头缓冲区地址指针

  23. //-------------------------------------------------------------------------------------------------------------------
  24. // @brief                中断初始化
  25. // @param                irqn                        中断号,可以查看 reg_common.h 文件中的 IRQn_Type 枚举体定义
  26. // @param                priority                选择该中断优先级 范围 [0-7]
  27. // @param                status                        使能或者失能
  28. // @return                void
  29. // Sample usage:                                nvic_init(EXTI0_IRQn, 0, ENABLE);                                // 外部中断0使能,抢占优先级最高
  30. //-------------------------------------------------------------------------------------------------------------------
  31. void nvic_init(IRQn_Type irqn, uint8 priority, FunctionalState status)
  32. {
  33.         NVIC_InitTypeDef NVIC_InitStructure;

  34.         NVIC_InitStructure.NVIC_IRQChannel = irqn;                                  // 中断号设置
  35.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= priority & 0x07;                // 抢占优先级值越小,优先级越高
  36.         NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0;                                                        // 响应优先级值越小,优先级越高
  37.         NVIC_InitStructure.NVIC_IRQChannelCmd = status;                                                                // 使能
  38.         NVIC_Init(&NVIC_InitStructure);
  39. }

  40. //-------------------------------------------------------------------------------------------------------------------
  41. // @brief                全局中断使能
  42. // @return                void
  43. // Sample usage:                                nvic_interrput_enable();
  44. //-------------------------------------------------------------------------------------------------------------------
  45. void nvic_interrput_enable (void)
  46. {
  47.         __ASM volatile("cpsie i");
  48. }

  49. //-------------------------------------------------------------------------------------------------------------------
  50. // @brief                全局中断失能
  51. // @return                void
  52. // Sample usage:                                nvic_interrput_disable();
  53. //-------------------------------------------------------------------------------------------------------------------
  54. void nvic_interrput_disable (void)
  55. {
  56.         __ASM volatile("cpsid i");
  57. }

  58. void NMI_Handler(void)
  59. {
  60.         while(1);
  61. }
  62. //void HardFault_Handler(void)
  63. //{
  64. //        //硬件上访  可能是数组越界或者使用了未初始化的设备
  65. //        //这里提示大家一个问题,经常有人说我的外设初始化了怎么就是要进HardFault呢
  66. //        //很多是因为自己开了中断,然后在中断里面使用了外设,然后他的初始化顺序是先初始化中断然后再初始化外设
  67. //        //那么问题就来了,中断初始化完成之后会部分中断直接进入中断函数或者满足调节也会进入中断函数,那么就会造成中断里面使用到的外设还没被初始化
  68. //        //所以大家需要注意这个问题
  69. //        while(1);
  70. //}
  71. void MemManage_Handler(void)
  72. {
  73.         while(1);
  74. }
  75. void BusFault_Handler(void)
  76. {
  77.         while(1);
  78. }
  79. void UsageFault_Handler(void)
  80. {
  81.         while(1);
  82. }
  83. void SVC_Handler(void)
  84. {
  85.         while(1);
  86. }
  87. void DebugMon_Handler(void)
  88. {
  89.         while(1);
  90. }
  91. //void PendSV_Handler(void)
  92. //{
  93. //        while(1);
  94. //}

 楼主| 为你转身 发表于 2022-7-31 20:21 | 显示全部楼层
headfile.h文件添加“#include “rtthread.h””

//RTT头文件
#include “rtthread.h”
 楼主| 为你转身 发表于 2022-7-31 20:22 | 显示全部楼层
七、编译运行
可看到板载led持续闪烁
串口持续打印如下数据:
 楼主| 为你转身 发表于 2022-7-31 20:25 | 显示全部楼层
kiwis66 发表于 2022-8-23 20:34 | 显示全部楼层
有PDF么
macpherson 发表于 2022-9-5 13:06 | 显示全部楼层
rtthread studio支持mm32吗
iamaiqiyi 发表于 2022-9-5 13:51 | 显示全部楼层
rtthread占用的ram大吗
sheflynn 发表于 2022-9-5 15:44 | 显示全部楼层
现在单片机的性能都这么强悍了
claretttt 发表于 2022-9-5 17:11 | 显示全部楼层
mm32f3兼容stm32哪个?
Bowclad 发表于 2022-9-9 19:06 | 显示全部楼层
MM32F3277做智能车性能过剩啊
jackcat 发表于 2022-9-10 20:44 | 显示全部楼层
RT-THREAD 有没有各个性能测试的范例
jimmhu 发表于 2022-9-10 21:31 | 显示全部楼层
rt-thread系统如何调用动态库
averyleigh 发表于 2022-9-11 11:16 | 显示全部楼层
个人认为RT-Thread是一个非常好的系统。
myiclife 发表于 2022-9-11 12:08 | 显示全部楼层
怎么将i2c设备驱动添加到rt-thread中
benjaminka 发表于 2022-9-11 13:04 | 显示全部楼层
RT-THREAD 的中断程序怎么写
rosemoore 发表于 2022-9-11 13:55 | 显示全部楼层
rt-thread 怎么确定线程栈大小
mollylawrence 发表于 2022-9-11 14:45 | 显示全部楼层
需要学习rt-thread吗  
pl202 发表于 2022-9-11 15:35 | 显示全部楼层
灵动微MM32 MCU支持什么操作系统
qiufengsd 发表于 2022-9-11 16:26 | 显示全部楼层
如何在rt-thread上开发应用程序
plsbackup 发表于 2022-9-11 17:17 | 显示全部楼层
rt-thread是否是免费的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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