嵌入式C语言实战案例

本文介绍了嵌入式C语言中的实战案例,涉及ERR_CODE_t错误代码类型用于函数返回,如何进行有条件延时,全局vpx指令状态变量指针的使用,以及大小端字节转换的宏定义L2B_32和L2B_16。这些概念在嵌入式开发中至关重要,确保了代码的可读性、错误处理和跨平台兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式C语言实战案例

1. ERR_CODE_t ipu_power_up_then_init()

在C语言中,使用枚举类型(enum)定义了一组命名的整数值,这些值通常用于表示一组预定义的选项或状态码。在您提供的代码中,ERR_CODE_t 是一个枚举类型的别名(typedef),它定义了一系列错误代码。

typedef enum{
   
    SYS_PG_OK=0,
    GLB_RST_OK=1,
    PWR_OFF_OK,
    C10_RST_OK,
    C10_1V8_PG_ERR,
    C10_1V8_PG_OFF_ERR,
    C10_0V8_PG_ERR,
    C10_0V8_PG_OFF_ERR,
    SYS_PG_ERR,
    SYS_PG_OFF_ERR,
    GLB_RST_ERR,
    PWR_OFF_ERR,
    C10_RST_ERR,
    IPU_APP_STARTUP_ERR,
    FT_1V8_PG_ERR,
} ERR_CODE_t;

这个枚举定义了一个错误代码的类型,每个错误代码都有一个特定的名称和值。例如,SYS_PG_OK 表示系统上电正常,其值为0。
当一个函数的返回类型被定义为 ERR_CODE_t 时,这意味着这个函数将返回一个上述枚举中定义的错误代码。例如:

ERR_CODE_t ipu_power_up_then_init() {
   
    ERR_CODE_t err_code;
    // ... 函数实现 ...
    return err_code;
}

这个函数 ipu_power_up_then_init 的目的是执行某个上电和初始化过程,并根据过程的结果返回一个错误代码。函数内部可能会设置 err_code 变量来表示成功或失败,最后将这个错误代码返回给调用者。
使用 ERR_CODE_t 作为函数返回类型的好处是,它提供了清晰的错误指示,并且是类型安全的,因为函数只能返回在枚举中定义的合法错误代码。这有助于提高代码的可读性和可维护性,同时也使得错误处理更加一致和方便。

2. 有条件的延时

ERR_CODE_t wait_c10_rest_done(void){
   
	int tst_cnt = 0; // 定义一个变量,用于记录循环执行的次数
  // 循环,直到C10_RESET_DONE引脚为高电平或tst_cnt达到MAX_TST_SYS_RSTPULLUP_CNT //相当于有条件的延时
	while(!GPIO_ReadInputDataBit(PORTC_POWER, C10_RESET_DONE) && tst_cnt < MAX_TST_SYS_RSTPULLUP_CNT)  //MAX_TST_SYS_RSTPULLUP_CNT=100
	{
   
		delay_ms(100); // 每次循环延迟100毫秒
		tst_cnt++; // tst_cnt增加1
	}// 等待C10芯片复位完成信号 PA5
	// 检查C10_RESET_DONE引脚的电平状态
	if(GPIO_ReadInputDataBit(PORTC_POWER, C10_RESET_DONE))
	{
   
		return C10_RST_OK; // 如果引脚为高电平,返回C10_RST_OK
	}
	else
	{
   
		return C10_RST_ERR; // 如果引脚为低电平,返回C10_RST_ERR
	}
}

3.全局vpx指令状态变量指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值