主要内容:裸机的程序框架
笔记资料引用于“百问网7天物联网智能家居训练班。
C程序:
问题1:如果让我的这个代码,在移植的时候不修改任何内容的条件下,能在不同的开发板上运行呢?以按键为例,不同开发板的按键处理的函数是不一样的,因为引脚啥的都不一样!!!
解决:
1.宏开关,在代码里指定使用哪套代码(缺点:只能支持一个版本,即换了另一个开发板,那么代码需要更改)(这种方法可以容纳很多套代码,但是每次只能我们自己根据开发板,指定用哪一套)
#define HARDWARE_VER 1
// key.c
// 返回值: 0表示被按下, 1表示被松开
int read_key(void)
{
GPIO_PinState key;
#if (HARDWARE_VER == 1)
key = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_6);
#else
key = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_7);
#endif
if (key == GPIO_PIN_RESET)
return 0;
else
return 1;
}
2.if判断语句,获取硬件版本信息来调用对应的代码,可以同时支持多个版本(即自动转换多个版本)
缺点:如果版本很多,效率很低(效率低是因为版本多的话,判断条件就会变多)
// key.c
// 返回值: 0表示被按下, 1表示被松开
int read_key(void)
{
GPIO_PinState key;
int ver = read_hardware_ver();
if (ver == 1)
key = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_6);
else (ver == 2)
key = HAL_GPIO_ReadPin(GPIOF