OC中定义了一个结构体(struct),设置结构体的值

main.m 文件

#import <Foundation/Foundation.h>

#import "Dog.h"

#import "Person.h"

#import "Student.h"



int main(int argc, const char * argv[]) {

    @autoreleasepool {

        

        Person *p1 = [[Person alloc] init];

        // 给对象中的结构体(struct)赋值 \

        如果直接用c语言的方式直接赋值就会报错,如s->birthday={1990,12,11};就会抛出错误    \

        声明并初始化一个struct类型临时变量,再整个赋值给birthday成员。

        Date d = {2015, 12, 22};

        p1.birthday = d;

        

    }

    return 0;

}


Person.h 文件

#import <Foundation/Foundation.h>

// 生日

typedef struct {

    int year; // 

    int month; // 

    int day; // 

} Date;

// 性别

typedef enum {

    XingBieMan,

    XingBieWoman

} XingBie;


@interface Person : NSObject


// 姓名的settergetter

@property (nonatomicretainNSString *name;


// 生日的settergetter

@property (nonatomicassignDate birthday;


// 年龄的settergetter

@property (nonatomicassignint age;


// 性别

@property (nonatomicassignXingBie sex;


// 身高

@property (nonatomicassigndouble height;


// 体重

@property (nonatomicassigndouble weight;

@end


如果您想使用WS2812 RGB LED的PWM HAL库,并且使用RGB结构体来表示颜色,可以参考以下示例代码: ```c #include "main.h" #define NUM_LEDS 8 typedef struct { uint8_t red; uint8_t green; uint8_t blue; } RGB_Color; TIM_HandleTypeDef htim; void WS2812_Init(void) { // 初始化PWM定时器 htim.Instance = TIM2; htim.Init.Prescaler = 0; htim.Init.CounterMode = TIM_COUNTERMODE_UP; htim.Init.Period = 89; // 对应WS2812的周期 htim.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_PWM_Init(&htim); TIM_OC_InitTypeDef sConfigOC; sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; HAL_TIM_PWM_ConfigChannel(&htim, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim, TIM_CHANNEL_1); } void WS2812_SetColor(RGB_Color color) { // 设置PWM占空比 __HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_1, color.green); HAL_Delay(1); // 调整延时以适应WS2812的时序要求 __HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_1, color.red); HAL_Delay(1); // 调整延时以适应WS2812的时序要求 __HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_1, color.blue); HAL_Delay(1); // 调整延时以适应WS2812的时序要求 } void WS2812_SetAll(RGB_Color color) { for (int i = 0; i < NUM_LEDS; i++) { WS2812_SetColor(color); } } int main(void) { HAL_Init(); WS2812_Init(); RGB_Color red = {255, 0, 0}; RGB_Color green = {0, 255, 0}; RGB_Color blue = {0, 0, 255}; while (1) { WS2812_SetAll(red); // 设置所有LED为红色 HAL_Delay(1000); WS2812_SetAll(green); // 设置所有LED为绿色 HAL_Delay(1000); WS2812_SetAll(blue); // 设置所有LED为蓝色 HAL_Delay(1000); } } ``` 在以上示例代码,使用了PWM定时器来控制WS2812 LED的颜色。RGB_Color结构体用于表示颜色,可以根据需要进行修改。请确保根据实际硬件进行适当的配置和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值