[STM32F1] [一]移植BabyOS及使用b_log

[复制链接]
1166|2
 楼主| liklon 发表于 2020-3-8 20:04 | 显示全部楼层 |阅读模式
本帖最后由 liklon 于 2020-3-8 20:07 编辑

移植BabyOS利用STM32CUBE新建工程
选择调试接口、选择外部时钟,使能UART1
stm32cube.jpg
生成代码,并使用git初始化
git.jpg
添加git子仓库,拉取BabyOS源码
clone.jpg
添加源文件和头文件路径
​ BabyOS\bos\core\src 文件全部添加
​ BabyOS\bos\hal 文件全部添加
​ BabyOS\bos\drivers\src 使用到的文件添加,本次实验都没使用到因此为空
​ 添加头文件路径
hfile.jpg
配置b_config.h
​ 本次实验测试b_log功能,因此只需要打开debug功能
config.jpg
编辑b_device_list.h
​ 由于本次实验不需要注册任何设备,则取消B_DEVICE_REG(null, bNullDriver, "null")的注释
device.jpg
添加bHalIncSysTick()
  1. void SysTick_Handler(void)
  2. {
  3.   /* USER CODE BEGIN SysTick_IRQn 0 */
  4.   bHalIncSysTick();
  5.   /* USER CODE END SysTick_IRQn 0 */
  6.   HAL_IncTick();
  7.   HAL_SYSTICK_IRQHandler();
  8.   /* USER CODE BEGIN SysTick_IRQn 1 */

  9.   /* USER CODE END SysTick_IRQn 1 */
  10. }


包含头文件b_os.h添加bInit()和bExec()
  1.   //......
  2.   /* USER CODE BEGIN WHILE */
  3.   bInit();
  4.   while (1)
  5.   {
  6.       bExec();
  7.   /* USER CODE END WHILE */

  8.   /* USER CODE BEGIN 3 */

  9.   }
  10.   /* USER CODE END 3 */


移植完成,开始测试b_log
实现void b**utput(void *p)函数
  1. void b**utput(void *p)
  2. {
  3.     HAL_UART_Transmit(&huart1, p, strlen(p), 0xffff);   
  4. }


测试b_log b_log_i b_log_w b_log_e
  1. /* USER CODE BEGIN WHILE */
  2.   bInit();
  3.   b_log("b_log\r\n");
  4.   b_log_i("b_log_i\r\n");
  5.   b_log_w("b_log_w\r\n");
  6.   b_log_e("b_log_e\r\n");
  7.   while (1)
  8.   {
  9.       bExec();
  10.   /* USER CODE END WHILE */

  11.   /* USER CODE BEGIN 3 */

  12.   }
  13.   /* USER CODE END 3 */


实验效果:
result.jpg

子模块采用BabyOS master分支 https://gitee.com/notrynohigh/BabyOS


mmuuss586 发表于 2020-3-18 10:04 | 显示全部楼层
感谢分享
yueguang3048 发表于 2020-6-5 12:52 | 显示全部楼层
启蒙啊...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

50

帖子

1

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