01-Block的简单使用

本文探讨了Swift和Objective-C在iOS开发领域的应用,深入解析了这两种语言的特点、优势以及如何在实际项目中灵活运用它们。通过具体案例分析,展示了Swift的语法简洁性和安全性,以及Objective-C在现有庞大iOS应用生态中的重要角色。
//
//  main.m
//  01-Block

#import <Foundation/Foundation.h>

//void logStar()
//{
//    NSLog(@"***************");
//    NSLog(@"***************");
//    NSLog(@"***************");
//}
void test3();

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        test3();
    }
    return 0;
}

/**
 定义了一个有返回值有参数的block
 */
void test3()
{
    // 定义一个block计算两个整数的和
    int (^sumBlock)(int, int) = ^(int num1, int num2) {
        return num1 + num2;
    };
    int c = sumBlock(10, 9);
    
    // 定义一个block计算一个整数的平方
    int (^pinfangBlock)(int);
    pinfangBlock = ^(int num){
        return num * num;
    };
    
    pinfangBlock = ^(int num) {
        return num + 2;
    };
    
    int d = pinfangBlock(10);
    NSLog(@"d is %d", d);
}

/**
 定义了一个没有返回值 但有参数的block
 */
void test2()
{
    // 定义block变量, 存储一段代码, 这段代码的功能是能打印任意行数的****
    void (^logStarBlock)(int) = ^(int numberOfLines){
        for (int i = 0; i<numberOfLines; i++) {
            NSLog(@"***************");
        }
    };
    logStarBlock(1);
}

/**
 定义了一个没有返回值没有参数的block
 */
void test()
{
    // 定义简单的block变量
    // block跟函数很像: 返回值、参数
    void (^logStar)() = ^{
        NSLog(@"***************");
        NSLog(@"***************");
        NSLog(@"***************");
    };
    
    logStar();
}

### 天问 Block ASR01 语音播报模块 使用教程 #### 硬件准备 在使用天问 Block 和 ASR01 语音播报模块之前,需要准备好以下硬件组件: - **STM32 微控制器**:推荐使用 STM32F103 系列微控制器,因其具备强大的处理能力以及丰富的外设接口[^1]。 - **ASR01 语音播报模块**:此模块支持离线语音识别并可通过串行通信与 STM32 进行数据交换[^1]。 #### 软件工具 为了简化开发流程,建议采用如下软件工具: - **天问 Block 图形化编程环境**:允许用户无需深入掌握 C 编程即可完成复杂的功能配置和调试工作。 - **STM32CubeIDE 或 Keil MDK**:如果希望进一步优化性能或者自定义更多细节,则可以通过传统 IDE 开发底层固件逻辑[^1]。 #### 接线说明 按照标准 UART 协议连接两者之间线路: | 功能 | STM32 Pin | ASR01 Pin | |------------|--------------|---------------| | TX | PA9 | RX | | RX | PA10 | TX | | GND | 地 | GND | | VCC (5V) | +5V 输出端子 | VIN/VDD | 注意:某些版本可能要求调整电平转换电路以匹配不同的电压等级,请仔细查阅具体型号规格书确认兼容情况。 #### 初始化设置 利用天问 Block 提供的拖拽式界面操作步骤大致如下所示: 1. 打开应用程序后新建工程文件夹; 2. 添加新的设备节点代表当前所使用的硬件资源实例; 3. 设置波特率参数通常默认值为 `9600bps` ,也可以依据实际需求更改其他选项; 4. 定义触发事件及其关联的动作序列;比如当接收到特定关键词时播放预录音频片段等等行为模式设定过程均在此阶段完成[^3]。 #### 示例代码 下面给出一段基于纯文本编辑器编写的简单测试程序样例用于验证基本连通性和基础功能演示效果: ```c #include "usart.h" void USART_SendString(char *str){ while(*str != '\0'){ HAL_UART_Transmit(&huart1,(uint8_t*)str,1,HAL_MAX_DELAY); } } int main(void){ char buffer[20]; uint8_t received_data; /* MCU Initialization Code Here */ // Enable Interrupts For Receiving Data From Module Via Serial Port. __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE); while(1){ if(HAL_UART_Receive(&huart1,&received_data,1,10)!=HAL_OK){continue;} sprintf(buffer,"Echo:%c\r\n",received_data); USART_SendString((char*)&buffer); } } ``` 上述例子展示了如何通过中断机制捕获来自外部设备发送过来的信息并将之回显至终端显示出来以便观察反馈结果是否正常运作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值