luat_mcu.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef LUAT_MCU_H
  2. #define LUAT_MCU_H
  3. #include "luat_base.h"
  4. typedef enum
  5. {
  6. LUAT_MCU_PERIPHERAL_UART,
  7. LUAT_MCU_PERIPHERAL_I2C,
  8. LUAT_MCU_PERIPHERAL_SPI,
  9. LUAT_MCU_PERIPHERAL_PWM,
  10. LUAT_MCU_PERIPHERAL_CAN,
  11. LUAT_MCU_PERIPHERAL_GPIO,
  12. LUAT_MCU_PERIPHERAL_I2S,
  13. LUAT_MCU_PERIPHERAL_SDIO,
  14. LUAT_MCU_PERIPHERAL_LCD,
  15. LUAT_MCU_PERIPHERAL_CAMERA,
  16. LUAT_MCU_PERIPHERAL_ONEWIRE,
  17. LUAT_MCU_PERIPHERAL_KEYBORAD,
  18. LUAT_MCU_PERIPHERAL_ETH,
  19. LUAT_MCU_PERIPHERAL_QSPI,
  20. LUAT_MCU_PERIPHERAL_SIM,
  21. LUAT_MCU_PERIPHERAL_ENET,
  22. LUAT_MCU_PERIPHERAL_QTY
  23. }LUAT_MCU_PERIPHERAL_E;
  24. int luat_mcu_set_clk(size_t mhz);
  25. int luat_mcu_get_clk(void);
  26. const char* luat_mcu_unique_id(size_t* t);
  27. long luat_mcu_ticks(void);
  28. uint32_t luat_mcu_hz(void);
  29. uint64_t luat_mcu_tick64(void);
  30. int luat_mcu_us_period(void);
  31. uint64_t luat_mcu_tick64_ms(void);
  32. void luat_mcu_set_clk_source(uint8_t source_main, uint8_t source_32k, uint32_t delay);
  33. #if 0
  34. /**
  35. * @brief 用户是否设置了外设的IOMUX
  36. * @param type 外设类型 LUAT_MCU_PERIPHERAL_XXX
  37. * @param sn 外设序号,0~7
  38. * @return 0 用户配置了 1用户没配置
  39. */
  40. uint8_t luat_mcu_iomux_is_default(uint8_t type, uint8_t sn);
  41. #endif
  42. /**
  43. * @brief 用户控制外设的IOMUX,如果不配置或者取消,则外设初始化时使用默认配置,已废弃
  44. * @param type 外设类型 LUAT_MCU_PERIPHERAL_XXX
  45. * @param sn 外设序号,0~7
  46. * @param pad_index pad序号,具体看芯片,可能是GPIO序号,可能是PAD序号。如果是-1,则表示取消配置
  47. * @param alt 复用功能序号,具体看芯片
  48. * @param is_input,是否是单纯输入功能
  49. * @return 无
  50. */
  51. void luat_mcu_iomux_ctrl(uint8_t type, uint8_t sn, int pad_index, uint8_t alt, uint8_t is_input);
  52. /**
  53. * @brief 死机后处理模式
  54. * @param mode 0死机后停机 1死机后立刻重启 2死机后尽量将错误信息提交给外部工具后重启
  55. * @return 无
  56. */
  57. void luat_mcu_set_hardfault_mode(int mode);
  58. /**
  59. * @brief 外部晶振参考信号输出
  60. * @param main_enable 主晶振参考信号输出使能,0关闭,其他开启
  61. * @param slow_32k_enable 慢速(一般是32K)晶振参考信号输出使能,0关闭,其他开启
  62. * @return 无
  63. */
  64. void luat_mcu_xtal_ref_output(uint8_t main_enable, uint8_t slow_32k_enable);
  65. int luat_mcu_muid(char* buf);
  66. #endif