将血糖仪开发板程序由IAR移至STVD的一些经验与疑问

2019-12-22 13:45发布

原贴 http://www.amobbs.com/thread-5637258-2-1.html
程序见132楼。感谢楼主的分享。

因为楼主是用IAR for STM8  ,所以试着移至STVD平台。 发现有以下几点

1 定义新的数据型  在IAR中是这样的
typedef enum
{
  NUM_MONTH = 0,
  NUM_DAY_H,
  NUM_DAY_L,
  NUM_HOUR,
  NUM_MIN_H,
  NUM_MIN_L,
  NUM_MAIN_H,
  NUM_MAIN_M,
  NUM_MAIN_L,
  NUM_SUB_H,
  NUM_SUB_M,
  NUM_SUB_L,
} LCD_NUM_Typedef;

在STVD的或许要去掉大括号里面的最后一个逗号。以前从没用过typedef enum ,哪位大神解释一下,学习学习。

2 STVD中或许会自动生成一个中断向量表 stm8_interrupt_vector.c   这个文件中的的中断函数名称与 stm8l15x_it.c 中的名称不一致,需要修改一致。

3 stm8l15x.h文件中需要加入这句
#define STM8L15X_MDP
否则错误提示#error "Please select first the target STM8L device used in your application (in stm8l15x.h file)" ,先去掉这个文件的只读属性,然后加上这句。

4 STVD中不能这么用
void function(void)
{
  for(unsigned char i=0;i<5;i++)
    {

     }
}
会提示变量i未定义, 改成
void function(void)
{
  unsigned char i;
  for( i=0;i<5;i++)
    {

     }
}

5 有一个计算星期的函数提示重修饰了,需要注释掉那一行。

6 一个疑问, 把外设库中的所有*.h *.c加入到工程后,编译要费好长时间,其实里面好多函数都没有调用过,不知这么编译有没有生成实质代码占用程序ROM空间? 在IAR中编译非常快。

上传的STVD工程,[对温度检测的频率原是2秒一次,改为N秒一次] 未测试,欢迎对比测试。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
buck
1楼-- · 2019-12-22 17:12
OK ,跟着楼主学了
skylly3
2楼-- · 2019-12-22 17:33
1. 按我的经验, enum里面最后一个变量是不加逗号的, 可能有少数编译器支持加逗号的。
6. 一般编译都是编译.c文件, h通过c中的include包含进来,  .c文件编译生成的目标文件(.o或者.obj)是否链接进bin, 具体要看链接程序的命令行怎么样写的, 另外还要看优化设置。
huangqi412
3楼-- · 2019-12-22 20:48
加个湿度的话不错
yq@123456
4楼-- · 2019-12-22 22:27
 精彩回答 2  元偷偷看……
mowin
5楼-- · 2019-12-23 03:21
我本来想移的还没时间,撸主你先弄了,省得折腾,谢谢
风轻云淡
6楼-- · 2019-12-23 04:53
第四条是C99才支持,C89不支持

一周热门 更多>