当前位置:  编程技术>移动开发
本页文章导读:
    ▪STM32F4学习札记之GPIO(使用固件库)        STM32F4学习笔记之GPIO(使用固件库) 1.使能GPIO的AHB时钟,使用函数:    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE); 2.配置GPIO工作模式用GPIO_Init()函数 数据类型说明 typedef struct {   uint32_t GPIO_P.........
    ▪ 武器和子弹的哲学有关问题        武器和子弹的哲学问题发现做游戏更像是在理解现实世界的东西,只有搞清楚了最本质的关系,才能使得设计的游戏具有最灵活的特性。 最先遇到的问题是 子弹和武器的问题。   1 武器控制.........
    ▪ objective-c中的@property,@synthesize等简易用法(8)       objective-c中的@property,@synthesize等简易用法(八) holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7355833   在objective-c中.........

[1]STM32F4学习札记之GPIO(使用固件库)
    来源: 互联网  发布时间: 2014-02-18
STM32F4学习笔记之GPIO(使用固件库)
1.使能GPIO的AHB时钟,使用函数:    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
2.配置GPIO工作模式用GPIO_Init()函数
数据类型说明
typedef struct
{
  uint32_t GPIO_Pin;              //引脚配置
GPIOMode_TypeDef GPIO_Mode;  //GPIO_Mode_IN(输入),GPIO_Mode_OUT(输出),GPIO_Mode_AF(备用),GPIO_Mode_AN(模拟)

GPIOSpeed_TypeDef GPIO_Speed;// GPIO_Speed_2MHz,GPIO_Speed_25MHz,GPIO_Speed_50MHz,GPIO_Speed_100MHz
GPIOOType_TypeDef GPIO_OType;   // GPIO_OType_PP(推挽),GPIO_OType_OD(开漏)
GPIOPuPd_TypeDef GPIO_PuPd;     GPIO_PuPd_NOPULL(无),GPIO_PuPd_UP(上拉),GPIO_PuPd_DOWN(下拉)
}GPIO_InitTypeDef;



3.备用功能配置(除ADC和DAC外的所有非GPIO功能),使用函数
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
*          This GPIO_AF can be one of the following values:
  *            @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset) 
  *            @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset) 
  *            @arg GPIO_AF_TAMPER: Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset) 
  *            @arg GPIO_AF_SWJ: Connect SWJ pins (SWD and JTAG)to AF0 (default after reset) 
  *            @arg GPIO_AF_TRACE: Connect TRACE pins to AF0 (default after reset)
  *            @arg GPIO_AF_TIM1: Connect TIM1 pins to AF1
  *            @arg GPIO_AF_TIM2: Connect TIM2 pins to AF1
  *            @arg GPIO_AF_TIM3: Connect TIM3 pins to AF2
  *            @arg GPIO_AF_TIM4: Connect TIM4 pins to AF2
  *            @arg GPIO_AF_TIM5: Connect TIM5 pins to AF2
  *            @arg GPIO_AF_TIM8: Connect TIM8 pins to AF3
  *            @arg GPIO_AF_TIM9: Connect TIM9 pins to AF3
  *            @arg GPIO_AF_TIM10: Connect TIM10 pins to AF3
  *            @arg GPIO_AF_TIM11: Connect TIM11 pins to AF3
  *            @arg GPIO_AF_I2C1: Connect I2C1 pins to AF4
  *            @arg GPIO_AF_I2C2: Connect I2C2 pins to AF4
  *            @arg GPIO_AF_I2C3: Connect I2C3 pins to AF4
  *            @arg GPIO_AF_SPI1: Connect SPI1 pins to AF5
  *            @arg GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5
  *            @arg GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6
  *            @arg GPIO_AF_I2S3ext: Connect I2S3ext pins to AF7
  *            @arg GPIO_AF_USART1: Connect USART1 pins to AF7
  *            @arg GPIO_AF_USART2: Connect USART2 pins to AF7
  *            @arg GPIO_AF_USART3: Connect USART3 pins to AF7
  *            @arg GPIO_AF_UART4: Connect UART4 pins to AF8
  *            @arg GPIO_AF_UART5: Connect UART5 pins to AF8
  *            @arg GPIO_AF_USART6: Connect USART6 pins to AF8
  *            @arg GPIO_AF_CAN1: Connect CAN1 pins to AF9
  *            @arg GPIO_AF_CAN2: Connect CAN2 pins to AF9
  *            @arg GPIO_AF_TIM12: Connect TIM12 pins to AF9
  *            @arg GPIO_AF_TIM13: Connect TIM13 pins to AF9
  *            @arg GPIO_AF_TIM14: Connect TIM14 pins to AF9
  *            @arg GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10
  *            @arg GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10
  *            @arg GPIO_AF_ETH: Connect ETHERNET pins to AF11
  *            @arg GPIO_AF_FSMC: Connect FSMC pins to AF12
  *            @arg GPIO_AF_OTG_HS_FS: Connect OTG HS (configured in FS) pins to AF12
  *            @arg GPIO_AF_SDIO: Connect SDIO pins to AF12
  *            @arg GPIO_AF_DCMI: Connect DCMI pins to AF13
  *            @arg GPIO_AF_EVENTOUT: Connect EVENTOUT pins to AF15

4.使用GPIO_ReadInputData(GPIO_TypeDef* GPIOx)和GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)读输入信号
5.使用GPIO_SetBits()/GPIO_ResetBits()设置输出引脚
6.上电或复位后,引脚备用功能都没启用(JTAG引脚除外),为悬浮输入状态
7.LSE引脚OSC32_IN 和OSC32_OUT(PC14 and PC15)的优先级高于GPIO
8.HSE引脚OSC_IN/OSC_OUT (PH0 / PH1)的优先级高于GPIO

例程:
int main(void)
{

GPIO_InitTypeDef  GPIO_InitStructure;
  /* GPIOG Periph clock enable */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOD, &GPIO_InitStructure);  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_SetBits(GPIOD, GPIO_Pin_12);
  GPIO_ResetBits(GPIOD, GPIO_Pin_13);


  while (1)
  {
  
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)
  
{

  GPIO_SetBits(GPIOD, GPIO_Pin_13);

  GPIO_ResetBits(GPIOD, GPIO_Pin_12);


}

else

{

  GPIO_SetBits(GPIOD, GPIO_Pin_12);

  GPIO_ResetBits(GPIOD, GPIO_Pin_13);



}
  }
}

    
[2] 武器和子弹的哲学有关问题
    来源: 互联网  发布时间: 2014-02-18
武器和子弹的哲学问题

发现做游戏更像是在理解现实世界的东西,只有搞清楚了最本质的关系,才能使得设计的游戏具有最灵活的特性。

最先遇到的问题是 子弹和武器的问题。

 

1 武器控制子弹的什么?

         武器控制子弹的发生数量,也就是setPowerLevel函数中所表示;武器控制子弹的发射时机;子弹的飞行呢是否由武器来控制呢?试想同样的一颗手枪子弹放到不同的手枪中,显然是不一样的所以子弹的飞行路径也是武器来控制的。也就是说子弹的一切行为是武器来控制的。

2 子弹本身所承载的意义是什么?

子弹本身承载的意义就是显示。还有伤害值。如果敌人被某种子弹击中这个 与武器无关 是子弹本身来产生的不同伤害值。

但是子弹的速度的大小是因为不同的武器而各不相同的,所以能得出武器对敌人的伤害值有贡献的结论吗?这样依然是子弹是产生伤害值的本质原因。因为子弹的速度本身

也是子弹的一个属性。

 


    
[3] objective-c中的@property,@synthesize等简易用法(8)
    来源: 互联网  发布时间: 2014-02-18
objective-c中的@property,@synthesize等简易用法(八)

holydancer原创,如需转载,请在显要位置注明:

转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7355833

 

在objective-c中,我们可以用new简单的代替alloc init,我们今天介绍的是类似于new这种简易用法的另一种OC特性,用@property,@synthesize来代替get,set方法,用起来很简单,可以省掉很多的代码量,当需要用SET,GET方法的地方,我们可以用@property,@synthesize来简单的代替,这时系统会自动给我们生成该变量的set,get方法,@property对应方法的声明部分,@synthesize对应方法的实现部分。

Human.h:

 

[plain] view plaincopy
 
  • #import <Foundation/Foundation.h>  
  •   
  • @interface Human : NSObject  
  • {  
  •     int age;  
  •     float height;  
  • }  
  • //这里用@property表示,代表了age和height的set,get方法的声明  
  • @property int age;  
  • @property float height;  
  •   
  • @end  

  • Human.m:

     

     

    [plain] view plaincopy
     
  • #import "Human.h"  
  •   
  • @implementation Human  
  • //这里用@synthesize表示age,height变量的set,get方法的实现。  
  • @synthesize age;  
  • @synthesize height;  
  •   
  • @end  

  • main.m:

     

     

    [plain] view plaincopy
     
  • #import <Foundation/Foundation.h>  
  • #import "Human.h"  
  • int main(int argc, const char * argv[])  
  • {  
  •     NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];  
  •       
  •     Human *human = [[Human alloc]init];  
  •     //“.”在等号左边,相当于set方法。  
  •       
  •     human.age=20; //等价于[human setAge:20]  
  •     human.height=60.50;  
  •       
  •     //“.”在等号右边,相当于get方法。  
  •     float tmp=human.height;//等价于 float tmp = [human height]  
  •     NSLog(@"年龄%d,身高%f",human.age,tmp);  
  •       
  •     [human release];  
  •     [pool release];//相当于对池中每个对象执行了一次release;  
  •       
  •   
  • }  
  •  

    输出语句:

     

    2012-03-15 10:11:34.052 String[325:403] 年龄20,身高60.500000

     

    这时系统会自动生成age,height的set,get方法,可以直接使用,那还有一种情况,如果我只想让age有get方法,没有set方法怎么办,也就是说在初始化里给一个默认值,而这个值只能被调用,不能被修改,用@property这种方式可以吗?答案是肯定的,因为@property给我们提供了类似参数的一种可选项,关键词是readonly,readwrite,分别对应着只能读不能修改和读写均可,一般我们不设置readwrite,因为默认就是读写状态。看代码:

    Human.h:

     

    [plain] view plaincopy
     
  • #import <Foundation/Foundation.h>  
  •   
  • @interface Human : NSObject  
  • {  
  •     int age;  
  •     float height;  
  • }  
  • //这里用@property表示,代表了age和height的set,get方法的声明  
  • @property (readonly)int age;  
  • @property float height;  
  •   
  • @end  

  • Human.m:

     

     

    [plain] view plaincopy
     
  • #import "Human.h"  
  •   
  • @implementation Human  
  • //重写init方法给age赋初值  
  • -(id)init  
  • {  
  •     if(self=[super init])  
  •     {  
  •         age=20;  
  •     }  
  •     return self;  
  • }  
  • //这里用@synthesize表示age,height变量的set,get方法的实现。  
  • @synthesize age;  
  • @synthesize height;  
  •   
  • @end  

  • main.m:

     

     

    [plain] view plaincopy
     
  • #import <Foundation/Foundation.h>  
  • #import "Human.h"  
  • int main(int argc, const char * argv[])  
  • {  
  •     NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];  
  •       
  •     Human *human = [[Human alloc]init];  
  •     human.height=60.5;  
  •     //human.age=30; 该行如果不注释是会报错的,即age只有get方法,没有set方法  
  •     NSLog(@"年龄age=%d",human.age);  
  •       
  •      
  •     [human release];  
  •     [pool release];//相当于对池中每个对象执行了一次release;  
  •       
  •   
  • }  

  • 输出:

     

    2012-03-15 10:32:11.497 String[360:403] 年龄age=20

     

    关键字:objective-c ,objective c , oc ,@property , @synthesize


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3