redoc
redoc
这家伙很懒,什么也没写!

注册于 7年前

回答
12
文章
1
关注者
1

发布于3周前

更新5.0内核后,这个变量改了hdr_index

发布于1年前

使用rt_vsnprintf_full软件包。rt_vsnprintf_full

发布于1年前

menuconfig看串口是否使能
screenshot_图片.png
检查rtconfig.h使能串口

  1. #define BSP_USING_UART
  2. #define BSP_USING_UART1
  3. #define BSP_UART1_RX_USING_DMA
  4. #define BSP_USING_UART2
  5. #define BSP_UART2_RX_USING_DMA
  6. #define BSP_USING_UART4
  7. #define BSP_UART4_RX_USING_DMA

发布于3年前

  1. /*
  2. * Copyright (c) 2019-2020, redoc
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2020-03-30 redoc the first version
  9. */
  10. #define LOG_TAG "can"
  11. #define LOG_LVL LOG_LVL_DBG
  12. #include <rtthread.h>
  13. #include "rtdevice.h"
  14. #include "thread_can.h"
  15. #include "ulog.h"
  16. #define CAN_DEV_NAME "can1"
  17. #define CAN1_CONFIG \
  18. { \
  19. CAN500kBaud, \
  20. RT_CANMSG_BOX_SZ, \
  21. RT_CANSND_BOX_NUM, \
  22. RT_CAN_MODE_NORMAL, \
  23. };
  24. static rt_sem_t sem_can_rx;
  25. static rt_sem_t sem_can_tx;
  26. static rt_device_t can_dev;
  27. static rt_err_t can_rx_call(rt_device_t dev, rt_size_t size)
  28. {
  29. rt_sem_release(sem_can_rx);
  30. return RT_EOK;
  31. }
  32. static void can_rx_thread(void *parameter)
  33. {
  34. rt_err_t res;
  35. struct rt_can_msg rxmsg = {0};
  36. #ifdef RT_CAN_USING_HDR
  37. struct rt_can_filter_item items[2] =
  38. {
  39. // id, ide, rtr, mode, mask, hdr
  40. {0x30 << 18, 0, 0, 0, (((rt_uint32_t)0x7f8 << 21)| 6), 0},
  41. {0x40 << 18, 0, 0, 1, (((rt_uint32_t)0x7ff << 21)| 6), 1},
  42. };
  43. struct rt_can_filter_config cfg = {2, 1, items};
  44. res = rt_device_control(can_dev, RT_CAN_CMD_SET_FILTER, &cfg);
  45. RT_ASSERT(res == RT_EOK);
  46. #endif
  47. rt_thread_mdelay(1000);
  48. while (1)
  49. {
  50. rxmsg.hdr = -1;
  51. if(RT_EOK == rt_sem_take(sem_can_rx, 20))
  52. {
  53. rt_device_read(can_dev, 0, &rxmsg, sizeof(rxmsg));
  54. // rt_kprintf("ID:%x Len:%d Data:", rxmsg.id, rxmsg.len);
  55. // for (int i = 0; i < 8; i++)
  56. // {
  57. // rt_kprintf("%2x ", rxmsg.data[i]);
  58. // }
  59. // rt_kprintf("\r\n");
  60. // 解析数据 id data len
  61. //can_process_unpack(rxmsg.id, rxmsg.data, rxmsg.len);
  62. }
  63. }
  64. }
  65. int can_send(uint16_t can_id, uint8_t *buf, uint8_t len)
  66. {
  67. struct rt_can_msg msg = {0};
  68. uint16_t size;
  69. rt_sem_take(sem_can_tx, RT_WAITING_FOREVER);
  70. msg.id = can_id;
  71. msg.ide = RT_CAN_STDID;
  72. msg.rtr = RT_CAN_DTR;
  73. msg.len = len;
  74. rt_memcpy(msg.data, buf, len);
  75. size = rt_device_write(can_dev, 0, &msg, sizeof(msg));
  76. if (size == 0)
  77. {
  78. rt_kprintf("can dev write data failed!\n");
  79. }
  80. rt_sem_release(sem_can_tx);
  81. return size;
  82. }
  83. int thread_can_init(void)
  84. {
  85. rt_err_t res;
  86. rt_thread_t thread;
  87. struct can_configure cfg = CAN1_CONFIG;
  88. can_dev = rt_device_find(CAN_DEV_NAME);
  89. if (!can_dev)
  90. {
  91. rt_kprintf("find %s failed!\n", CAN_DEV_NAME);
  92. return -RT_ERROR;
  93. }
  94. sem_can_rx = rt_sem_create("can_rx", 0, RT_IPC_FLAG_FIFO);
  95. sem_can_tx = rt_sem_create("can_tx", 1, RT_IPC_FLAG_FIFO);
  96. res = rt_device_open(can_dev, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_TX | RT_DEVICE_FLAG_INT_RX);
  97. RT_ASSERT(res == RT_EOK);
  98. rt_device_control(can_dev, RT_DEVICE_CTRL_CONFIG, &cfg);
  99. rt_device_set_rx_indicate(can_dev, can_rx_call);
  100. thread = rt_thread_create("can_rx", can_rx_thread, RT_NULL, 2048, 16, 100);
  101. if (thread != RT_NULL)
  102. {
  103. rt_thread_startup(thread);
  104. }
  105. else
  106. {
  107. log_e("create can_rx thread failed!");
  108. }
  109. return res;
  110. }

发布于4年前

开工有奖。

发布于4年前

你可以选择自发自收模式

发布于4年前

使用步骤:
1、从rt-thread主仓库转到rt-smart分支的bsp\qemu-vexpress-a9进行编译。
下载工具链后将其放入en\tools\gnu_gcc文件夹下;
2、设定:set RTT_CC_PREFIX=arm-linux-musleabi-
3、设定:set RTT_EXEC_PATH=D:\work\env\tools\gnu_gcc\install_arm-linux-musleabi_for_i686-w64-mingw32\bin

snipaste_20201130_091510.png
set RTT指令

问题:
https://realthread.cowtransfer.com/s/1c2b64ba968748 网址弹不出下载,所以我下载不了

snipaste_20201130_090857.png

编译报signal.h的错误

发布于4年前

自己捣鼓了下,stlink 也可以用systemview了。


怎么搞的啊?

发布于5年前

请问关于Keil工程自动构建中,芯片配置,在哪里?是在哪个文件,SConstruct?Kconfig?

比如bsp中的stm32f …


已经解决了,修改模板工程。

发布于5年前

请问关于Keil工程自动构建中,芯片配置,在哪里?是在哪个文件,SConstruct?Kconfig?

比如bsp中的stm32f10x-HAL工程,选择stm32f103vet6芯片。

[attach]9554[/attach]‘

还有这个CMSIS怎么删除?

[attach]9555[/attach]

发布于6年前

[i=s] 本帖最后由 redoc 于 2018-11-6 20:47 编辑 [/i]

不需要设置任何环境变量,根据帖子中的自查步骤查一下。

你这个大概率是env所在的路径有问题。 …


重装系统win7,搞定。。。
env code 都是原来的路径

win10不靠谱啊

发布于6年前

[i=s] 本帖最后由 redoc 于 2018-11-5 21:12 编辑 [/i]

[attach]6762[/attach]

[attach]6763[/attach]

[attach]6764[/attach]
报这个错是怎么回事啊,电脑环境win10 64位,

用的最新的RT-Thread-master
env版本:env_released_1.0.0

回到
顶部

发布
问题

投诉
建议