OC的方法和 函数

方法:方法是Objective-C独有的一种结构,只能在Objective-C中声明、定义和使用,C语言不能声明、定义和使用。

1、类方法以+号开头,对象方法以-号开头
+ (void) init;        // 类方法
- (void) show;                // 对象方法

2、在@interface和@end之间声明,在@implementation和@end之间定义
@interface Test : NSObject
// 方法声明
+ (void) init;
- (void) show;
@end
@implementation Test
// 方法实现
+ (void) init
{

}
- (void) show
{

}
@end
3、类方法只能由类来调用,对象方法只能由方法来调用
// 调用类方法
[Test init];
// 调用对象方法
Test *t = [Test new];
[t show];
4、方法归类、对象所有。
5、方法声明和实现中用到的数据类型必须用()括住。


函数:函数即C语言中的函数,在C和Objective-C中都声明、定义和使用。

1、函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有。
int add(int num1, int num2)
{
        return num1 + num2;
}
2、函数调用不依赖于对象。
int sum = add(1, 2);
3、函数内部不能直接通过成员变量名访问某个对象的成员变量。
TIM_OC1PreloadConfig 函数在 STM32 微控制器中用于配置定时器通道 1 的预装载寄存器功能。预装载寄存器允许在更新事件(如计数器溢出)发生时,将预装载寄存器中的值加载到活动寄存器中。这种机制可以确保在定时器运行过程中,更改比较值时不会立即生效,而是等到下一个更新事件,从而避免了输出波形的不稳定性。 该函数的使用方法如下: 1. **函数原型**: ```c void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); ``` - `TIMx`:指向定时器的指针,例如 `TIM2`、`TIM3` 等。 - `TIM_OCPreload`:指定是否启用预装载功能,可以是以下值之一: - `TIM_OCPreload_Enable`:启用预装载功能。 - `TIM_OCPreload_Disable`:禁用预装载功能。 2. **启用预装载功能**: 在配置定时器通道 1 时,如果希望启用预装载功能,可以调用此函数并将第二个参数设置为 `TIM_OCPreload_Enable`。 ```c TIM_OC1PreloadConfig(TIMx, TIM_OCPreload_Enable); ``` 3. **禁用预装载功能**: 如果不需要预装载功能,可以调用此函数并将第二个参数设置为 `TIM_OCPreload_Disable`。 ```c TIM_OC1PreloadConfig(TIMx, TIM_OCPreload_Disable); ``` 4. **应用场景**: 预装载功能通常用于需要精确控制输出波形的应用中,例如 PWM 波形生成。通过启用预装载功能,可以在更新事件发生时平滑地改变输出波形的占空比,而不影响当前的波形周期[^2]。 5. **注意事项**: - 在启用预装载功能之前,确保定时器的时钟已经正确配置并启用。 - 预装载功能的启用或禁用会影响定时器的行为,因此在更改预装载配置后,可能需要重新初始化定时器以确保其正常工作。 ### 示例代码 以下是一个简单的示例,展示如何在 STM32 中配置定时器通道 1 并启用预装载功能: ```c // 初始化定时器通道 1 void Init_Timer_Channel(TIM_TypeDef* TIMx, uint16_t channel) { // 配置定时器基本参数 TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_OCInitTypeDef TIM_OCStruct; // 使能定时器时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE); // 定时器时间基准配置 TIM_TimeBaseStruct.TIM_Prescaler = 72 - 1; // 预分频值 TIM_TimeBaseStruct.TIM_Period = 1000 - 1; // 自动重载值 TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStruct); // 配置通道 1 为 PWM 模式 TIM_OCStruct.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCStruct.TIM_OutputState = TIM_OutputState_Enable; TIM_OCStruct.TIM_Pulse = 500; // 初始比较值 TIM_OCStruct.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIMx, &TIM_OCStruct); // 启用预装载功能 TIM_OC1PreloadConfig(TIMx, TIM_OCPreload_Enable); // 启动定时器 TIM_Cmd(TIMx, ENABLE); } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值