我一直在为 STM32 设置 Ceedling。howto 非常稀缺,到目前为止,我几乎没有用谷歌搜索过。幸运的是,该框架的大小相对透明。这是 PIC 配置。我设置了类似的东西(project.yml
):
...
:defines:
# in order to add common defines:
# 1) remove the trailing [] from the :common: section
# 2) add entries to the :common: section (e.g. :test: has TEST defined)
:commmon: &common_defines #[]
- STM32F103xB
- UNITY_INT_WIDTH=32
- CMOCK_MEM_INDEX_TYPE=uint32_t
- UNITY_LINE_TYPE=uint16_t
:test:
- *common_defines
- TEST
:test_preprocess:
- *common_defines
- TEST
到目前为止一切顺利(尚未尝试实际工作)。添加了这个定义
- CMOCK_MEM_PTR_AS_INT=uint32_t
我有一个警告:
/vendor/ceedling/vendor/cmock/src/cmock.c:105:40: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
index = *(CMOCK_MEM_INDEX_TYPE*)((CMOCK_MEM_PTR_AS_INT)next - CMOCK_MEM_INDEX_SIZE);
难怪,next
PC 平台的 64 位指针也是如此。我仍然不确定我是否必须控制CMOCK_MEM_PTR_AS_INT
。这取决于是否CMOCK_MEM_PTR_AS_INT
是关键目标 (ARM) 平台定义。
到目前为止,我还没有找到 STM32 示例。