-
:Cry::Cry::Cry: 没钱了
-
供参考....
/**
******************************************************************************
* @file Dev_I2C.c
* @brief I2C共用的C文件..
* @author WuHan P&S 电力电子组.
* @version V 0.0.1
* @Target STM8L
* @date 11/10/2009
******************************************************************************
*/
#include "dev_i2c.h"
void I2C_Delay(u32 nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
// 释放I2C总线.
void I2C_BusRelease(void)
{
GPIO_Init(I2C_PORT, (I2C_SDA_PIN | I2C_SCL_PIN), GPIO_Mode_Out_PP_High_Fast);
I2C_Delay(500);
GPIO_WriteBit( I2C_PORT, I2C_SCL_PIN, RESET ); // SCL为低
GPIO_WriteBit( I2C_PORT, I2C_SDA_PIN, RESET ); // SDA为低
I2C_Delay( 500 );
GPIO_WriteBit( I2C_PORT, I2C_SCL_PIN, SET ); // SCL 为高
I2C_Delay( 500 );
GPIO_WriteBit( I2C_PORT, I2C_SDA_PIN, SET ); // SDA 为高
I2C_Delay( 500 );
}
/**
* @brief Initializes the I2C peripheral registers to communicate the EEPROM
* @par Parameters:
* None
* @retval None
* @par Required preconditions:
* None
*/
I2C_Op_TypeDef I2C_BusInit(void)
{
u32 lu32TimeOut;
I2C_BusRelease();
I2C_BusRelease();
I2C_BusRelease();
/* Optional: put here as example only */
I2C_DeInit( I2C1);
/*Enable I2C1 clock */
CLK_PeripheralClockConfig(CLK_Peripheral_I2C1, ENABLE);
/* I2C Peripheral Enable */
I2C_Cmd(I2C1, ENABLE);
/* Apply I2C configuration after enabling it */
I2C_Init(I2C1, I2C_Speed, I2C_OWN_ADDRESS7, I2C_Mode_I2C, I2C_DutyCycle_2, I2C_Ack_Enable, I2C_AcknowledgedAddress_7bit );
I2C_Delay( 100 );
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY ))
{
if( lu32TimeOut ++ >= CNT_I2C_DELAY_COUNT )
{
return CNT_I2C_FAIL;
}
}
return CNT_I2C_SUCCESS;
}
/**
******************************************************************************
* @file Dev_I2C.h
* @brief I2C共用的头文件..
* @author WuHan P&S 电力电子组.
* @version V 0.0.1
* @Target STM8L
* @date 11/10/2009
******************************************************************************
*/
#ifndef __DEV_I2C__H
#define __DEV_I2C_H
/* Includes ------------------------------------------------------------------*/
#include "stm8l15x.h"
#define I2C_Speed 100000
#define I2C_OWN_ADDRESS7 0x88
// 若是STM8S2XX时,I2C的SCL--PE1, SDA--PE2.
#define I2C_PORT GPIOC
#define I2C_SDA_PIN GPIO_Pin_0
#define I2C_SCL_PIN GPIO_Pin_1
#define CNT_I2C_DELAY_COUNT 1000
typedef enum
{
CNT_I2C_SUCCESS = (u8) 1, // 操作成功
CNT_I2C_FAIL = (u8) 0 // 操作失败
} I2C_Op_TypeDef; // E2操作类.
void I2C_Delay(u32 u32Count);
// 释放I2C总线.
void I2C_BusRelease(void);
// I2C 初始化.
I2C_Op_TypeDef I2C_BusInit(void);
#endif // _DEV_I2C_H
-
protel是手动画的啊 最好有个工程做 那样就快了
-
可以在模块出入口及关键函数内添加打印信息,逐步确认缩小异常范围。
-
引用 29 楼 zhang6yong 的回复:
学校里教C#我是100个不愿意,就是喜欢底层的c和汇编。
以前本科的时候,汇编期末考试两道大题:1. 编写游戏高炮打飞机,2. 音乐播放器
-
应该是不可能的、、、
22P电容通常耐压绝对大于晶振两端的电压,就算你随便哪里电子市场买的,也不可能击穿。你怎么知道它被击穿了?
除非你买的是非常次的电容,但这样的概率也非常小。
楼主怎么认定是电容被击穿? 晶振不振??
是否是那个4M的晶振 坏了,你反而觉得是电容坏了?
-
引用 3 楼 oh_my_god 的回复:
1、开发wince上的东西,只要你MFC熟练,当做开发PC上的程序就可以了。
2、wince是采用unioncode字符集的,不是MFC不支持
3、wince自己带的CEDB数据库自己练去,网上资料也不少
4、汪兵那本书EVC版的写的还不错,VS2005的那本是陀屎。
这哥们真牛B,能搞出比《Windows CE 嵌入式高级编程及其实例详解》牛B的东西吗?不能,就请尊重作者,谢谢!
-
如果买个2440. 以后做ANDROID系统开发方便吗?
菜鸟,见笑了。
-
为什么说不过去?
发送中断可由下列事件产生:
─ 发送邮箱0变为空,CAN_TSR寄存器的RQCP0位被置’1’。
─ 发送邮箱1变为空,CAN_TSR寄存器的RQCP1位被置’1’。
─ 发送邮箱2变为空,CAN_TSR寄存器的RQCP2位被置’1’。
也就是说邮箱“变”为空,才产生中断,一直为空,是不产生中断的
-
学习,顶起来
-
当然要的。
没这个,再怎么soft connect也没用
-
多谢各位指点迷津!
-
支持RGB565,我相信;但是只支持最大分辩率640X480,不太可能。
-
使用RETIALMSG
-
新一轮的ARM大战开始
-
GetDiskFreeSpaceEx
-
定位明确,态度端正,一步一个脚印,在哪里都能够工作好的
-
我觉得楼上说的有点道理,我以前也遇到过,用了个新出的就好了
-
扩充指令方式时难道会影响字符的点阵?
不过,图形方式的字符点阵和一般的字符点阵是肯定不同的.
-
你可能真的犯了低级错误,就是没有将YUV转换为RGB,而是直接存储了!