【M32】在未来时态下发展程序

1、在未来时态下发展程序,就是接受“事情总会变化”的事实,并准备应对之策。

2、记住,程序的维护者通常不是最初的开发者,因此,设计和实现的时候,应该考虑别人更好地理解,修改自己的程序。

3、重要的一点就是,以C++语言本身来表现各种规范,而不是依靠注释或者说明文件。举例来说,如果copy构造和copy赋值没有意义,应该将他们声明为private。而不是简单地通过注释告诉用户,不要进行copy构造和copy赋值,因为用户才不管。

4、让class的操作符和方法拥有自然的语法和直观的语义,和内置类型保持一致。

5、记住,任何事情只要能够做,就会有人做。接受“用户会犯错”的事实。

6、努力写出可移植的代码,记住,可移植的代码往往意味着冗余和效率低下。

7、设计代码,使系统变化带来的冲击尽量局部化。

8、提供完整的class定义,即使某些部分现在用不到。这样的话,新的需求到来时,就不再需要回头去修改。

9、设计易用的接口,提供自然的语法和直观的语义。

10、尽量使用模版,使代码一般化(泛化)。

转载于:https://www.cnblogs.com/nzbbody/p/3636765.html

以下是基于ST M32芯片和SHT41温湿度传感器的温湿度读取程序: ```c #include "stm32f10x.h" #include "sht.h" GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; I2C_InitTypeDef I2C_InitStructure; void GPIO_Configuration(void); void TIM_Configuration(void); void I2C_Configuration(void); void delay_ms(uint32_t ms); int main(void) { float temp, humi; uint16_t raw_temp, raw_humi; GPIO_Configuration(); TIM_Configuration(); I2C_Configuration(); SHT_Init(); while(1) { SHT_ReadRawData(&raw_temp, &raw_humi); temp = SHT_CalcTemperature(raw_temp); humi = SHT_CalcHumidity(raw_humi); delay_ms(1000); } } void GPIO_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); } void TIM_Configuration(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_TimeBaseStructure.TIM_Period = 999; TIM_TimeBaseStructure.TIM_Prescaler = 7199; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 500; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM2, &TIM_OCInitStructure); TIM_Cmd(TIM2, ENABLE); } void I2C_Configuration(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); I2C_DeInit(I2C1); I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0x00; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 100000; I2C_Init(I2C1, &I2C_InitStructure); I2C_Cmd(I2C1, ENABLE); } void delay_ms(uint32_t ms) { uint32_t i, j; for(i = 0; i < ms; i++) for(j = 0; j < 7200; j++); } ``` 注意,在使用该程序之前,需要先在工程中添加SHT库文件。另外,需要根据具体硬件连接情况修改程序中的GPIO和I2C配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值