这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 漓东e学堂 » 27作业

共14条 1/2 1 2 跳转至

27作业

菜鸟
2014-10-22 23:07:09     打赏

菜鸟
2014-10-23 23:41:08     打赏
2楼
#include "stm32f10x.h"  
	#include "stm32_eval.h"  
	GPIO_InitTypeDef GPIO_InitStructure;  	 
	    
	void RCC_Configuration(void)  
	{  
	  RCC_DeInit();  
	      
	  RCC_HSICmd(ENABLE);  
	  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);  
	    
	  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);  	    
    RCC_HSEConfig(RCC_HSE_OFF);  
	  RCC_LSEConfig(RCC_LSE_OFF);  
	  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz  
	  RCC_PLLCmd(ENABLE);  
	  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
	  RCC_ADCCLKConfig(RCC_PCLK2_Div4);  
	  RCC_PCLK2Config(RCC_HCLK_Div1);  
	  RCC_PCLK1Config(RCC_HCLK_Div2);  
	  RCC_HCLKConfig(RCC_SYSCLK_Div1);  
	  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  
	  while(RCC_GetSYSCLKSource() != 0x08);  
	    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
	  GPIO_Init(GPIOD, &GPIO_InitStructure);  
	    GPIO_ResetBits(GPIOD,GPIO_Pin_2);//¹Ø·äÃùÆ÷ 
	}  
	  
void GPIO_INIT()  
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA, ENABLE); 
	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//ҪʹÓÃPC0µ½PC7  
	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//ÍÆÍìÊä³ö
	  GPIO_Init(GPIOC, &GPIO_InitStructure);//³õʼ»¯PC  
	      
	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//ҪʹÓÃPA1,PA2,PA3  
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//ÍÆÍìÊä³ö 
	    GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯PA  
	}  
	  
void delay_us(u32 n)  
	{  
	    u8 j;  
	    while(n--)  
	    for(j=0;j<10;j++);  
	}  
	  	void  delay_ms(u32 n)  
	{  
	    while(n--)  
	    delay_us(1000);  
	}  
	  
  
	void func(void)  
	{  
	            GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);//RGBÈ«²¿Ï¨Ãð  
	  
	    while(1)  
	        {  
	          GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//LEDÈ«²¿Ï¨Ãð  
	            delay_ms(100);  
	 
   						   
	  
	  				 GPIO_ResetBits(GPIOC,GPIO_Pin_3);//µãÁÁD4       
	          delay_ms(500);            
            GPIO_SetBits(GPIOC,GPIO_Pin_3);//ϨÃðD4  	
	          
     
						GPIO_ResetBits(GPIOC,GPIO_Pin_2);//µãÁÁD3  
	          delay_ms(500);    
	          GPIO_SetBits(GPIOC,GPIO_Pin_2);//ϨÃðD3   

							GPIO_ResetBits(GPIOC,GPIO_Pin_1);//µãÁÁD2  
	            delay_ms(500);  
	            GPIO_SetBits(GPIOC,GPIO_Pin_1);//ϨÃðD2  
	
						GPIO_ResetBits(GPIOC,GPIO_Pin_0);//µãÁÁD1  
	            delay_ms(500);  
	          GPIO_SetBits(GPIOC,GPIO_Pin_0);//ϨÃðD1 
					   
						 GPIO_ResetBits(GPIOC,GPIO_Pin_4);//µãÁÁD5  
	            delay_ms(500);  
	            GPIO_SetBits(GPIOC,GPIO_Pin_4);//ϨÃðD5     
                   			
	   		 GPIO_ResetBits(GPIOC,GPIO_Pin_5);//µãÁÁD6  
	            delay_ms(500);  
	            GPIO_SetBits(GPIOC,GPIO_Pin_5);//ϨÃðD6           	
				            
							GPIO_ResetBits(GPIOC,GPIO_Pin_6);//µãÁÁD7  
	            delay_ms(500);  
	            GPIO_SetBits(GPIOC,GPIO_Pin_6);//ϨÃðD7
							
      						 GPIO_ResetBits(GPIOC,GPIO_Pin_7);//µãÁÁD8  
	            delay_ms(500);  
	            GPIO_SetBits(GPIOC,GPIO_Pin_7);//ϨÃðD8   
 
 
 
	         

 


视频地址:http://player.youku.com/player.php/sid/XODA5OTgxNjUy/v.swf

菜鸟
2014-10-29 12:09:16     打赏
3楼

按键切换程,按键次数数码管显示代码

 

(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);//0
(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//1
(GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//2
(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);//3
(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);//4
(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);//5
(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);//6
(GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);//7
(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);//8
(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);//9

================================================================

view plaincopy to clipboardprint?

1.    /* Includes ------------------------------------------------------------------*/

2.    #include "stm32f10x.h"

3.    #include "stm32_eval.h"

4.    GPIO_InitTypeDef GPIO_InitStructure;

5.   

6.    void RCC_Configuration(void)//始终配置

7.    {

8.    RCC_DeInit();//RCC寄存器重设为缺省值

9.   

10. RCC_HSICmd(ENABLE);//使能内部高速晶振

11. while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//HSI晶振返回reset

12.

13. RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);//选择HSI作为系统时钟

14.

15. RCC_HSEConfig(RCC_HSE_OFF);//HSE晶振关

16. RCC_LSEConfig(RCC_LSE_OFF);//LSE晶振关

17. RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); // 72HMz

18. RCC_PLLCmd(ENABLE);//使能PLL状态

19. while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

20. RCC_ADCCLKConfig(RCC_PCLK2_Div4);//ADC时钟=PCLK/4

21. RCC_PCLK2Config(RCC_HCLK_Div1);//APB2时钟=HCLK

22. RCC_PCLK1Config(RCC_HCLK_Div2);//APB1时钟=HCLK/2

23. RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB时钟=系统时钟

24. RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择PLL作为系统时钟

25. while(RCC_GetSYSCLKSource() != 0x08);

26. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);

27. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG

28. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

29. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

30. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

31. GPIO_Init(GPIOD, &GPIO_InitStructure);

32. GPIO_ResetBits(GPIOD,GPIO_Pin_2);//关闭蜂鸣器

33.

34. }

35. void delay_us(u32 n)

36. {

37. u8 j;

38. while(n--)

39. for(j=0;j<10;j++);

40. }

41.

42. void delay_ms(u32 n)

43. {

44. while(n--)

45. delay_us(1000);

46. }

47.

48. int main (void)

49. {

50. char i=0;

51. RCC_Configuration();

52. /*初始化PC*/

53. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

54. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

55. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

56. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

57. GPIO_Init(GPIOC, &GPIO_InitStructure);

58. /*初始化PB*/

59. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

60. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

61. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

62. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

63. GPIO_Init(GPIOB, &GPIO_InitStructure);

64. GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

65.

66.

67. while(1){

68.

69. if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==0)

70. if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8))

71. {

72. delay_ms(100);if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)){i++;}

73. }

74.

75.

76.

77. if(i>31){i=0;}

78. GPIO_ResetBits(GPIOB,GPIO_Pin_1);

79. GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

80.

81. switch(i)

82. {

83. case 0 :

84. GPIO_SetBits(GPIOB,GPIO_Pin_1);

85. GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);//0

86. break;

87. case 1 :

88. GPIO_SetBits(GPIOB,GPIO_Pin_1);

89. GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//1

90. break;

91. case 2 :

92. GPIO_SetBits(GPIOB,GPIO_Pin_1);

93. GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//2

94. break;

95. case 3 :

96. GPIO_SetBits(GPIOB,GPIO_Pin_1);

97. GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);//3

98. break;

99. case 4 :

100.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

101.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);//4

102.      break;

103.      case 5 :

104.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

105.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);//5

106.      break;

107.      case 6 :

108.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

109.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);//6

110.      break;

111.      case 7 :

112.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

113.      GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);//7

114.      break;

115.      case 8 :

116.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

117.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);//8

118.      break;

119.      case 9 :

120.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

121.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);//9

122.      break;

123.      case 10 :

124.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

125.      GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

126.      delay_ms(100);

127.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

128.      GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

129.     

130.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

131.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

132.      delay_ms(50);

133.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

134.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//10

135.      break;

136.      case 11 :

137.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

138.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

139.      delay_ms(100);

140.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

141.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

142.     

143.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

144.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

145.      delay_ms(50);

146.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

147.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//11

148.      break;

149.      case 12 :

150.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

151.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

152.      delay_ms(100);

153.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

154.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

155.     

156.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

157.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

158.      delay_ms(50);

159.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

160.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//12

161.      break;

162.      case 13 :

163.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

164.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

165.      delay_ms(100);

166.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

167.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

168.     

169.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

170.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

171.      delay_ms(50);

172.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

173.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//13

174.      case 14 :

175.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

176.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);

177.      delay_ms(100);

178.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

179.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);

180.     

181.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

182.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

183.      delay_ms(50);

184.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

185.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//14

186.      break;

187.      case 15 :

188.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

189.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);

190.      delay_ms(100);

191.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

192.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);

193.     

194.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

195.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

196.      delay_ms(50);

197.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

198.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//15

199.      break;

200.      case 16 :

201.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

202.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

203.      delay_ms(100);

204.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

205.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

206.     

207.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

208.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

209.      delay_ms(50);

210.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

211.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//16

212.      break;

213.      case 17 :

214.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

215.      GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);

216.      delay_ms(100);

217.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

218.      GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);

219.     

220.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

221.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

222.      delay_ms(50);

223.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

224.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//17

225.      break;

226.      case 18 :

227.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

228.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

229.      delay_ms(100);

230.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

231.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

232.     

233.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

234.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

235.      delay_ms(50);

236.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

237.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//18

238.      break;

239.      case 19 :

240.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

241.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

242.      delay_ms(100);

243.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

244.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

245.     

246.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

247.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

248.      delay_ms(50);

249.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

250.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);//19

251.      break;

252.      case 20 :

253.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

254.      GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

255.      delay_ms(100);

256.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

257.      GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

258.     

259.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

260.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

261.      delay_ms(50);

262.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

263.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//20

264.      break;

265.      case 21 :

266.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

267.      GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

268.      delay_ms(100);

269.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

270.      GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);

271.     

272.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

273.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

274.      delay_ms(50);

275.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

276.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//21

277.      break;

278.      case 22 :

279.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

280.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

281.      delay_ms(100);

282.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

283.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

284.     

285.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

286.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

287.      delay_ms(50);

288.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

289.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//22

290.      break;

291.      case 23 :

292.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

293.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

294.      delay_ms(100);

295.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

296.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

297.     

298.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

299.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

300.      delay_ms(50);

301.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

302.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//23

303.      case 24 :

304.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

305.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);

306.      delay_ms(100);

307.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

308.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);

309.     

310.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

311.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

312.      delay_ms(50);

313.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

314.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//24

315.      break;

316.      case 25 :

317.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

318.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);

319.      delay_ms(100);

320.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

321.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);

322.     

323.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

324.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

325.      delay_ms(50);

326.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

327.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//25

328.      break;

329.      case 26 :

330.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

331.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

332.      delay_ms(100);

333.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

334.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

335.     

336.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

337.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

338.      delay_ms(50);

339.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

340.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//26

341.      break;

342.      case 27 :

343.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

344.      GPIO_ResetBits (GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);

345.      delay_ms(100);

346.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

347.      GPIO_SetBits (GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);

348.     

349.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

350.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

351.      delay_ms(50);

352.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

353.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//27

354.      break;

355.      case 28 :

356.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

357.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

358.      delay_ms(100);

359.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

360.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

361.     

362.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

363.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

364.      delay_ms(50);

365.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

366.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//28

367.      break;

368.      case 29 :

369.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

370.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

371.      delay_ms(100);

372.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

373.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

374.     

375.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

376.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

377.      delay_ms(50);

378.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

379.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//29

380.      break;

381.      case 30 :

382.     GPIO_SetBits(GPIOB,GPIO_Pin_1);

383.     GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

384.     delay_ms(100);

385.     GPIO_ResetBits(GPIOB,GPIO_Pin_1);

386.     GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

387.

388.     GPIO_SetBits(GPIOB,GPIO_Pin_15);

389.     GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);

390.     delay_ms(50);

391.     GPIO_ResetBits(GPIOB,GPIO_Pin_15);

392.     GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);//30

393.      break;

394.      case 31 :

395.      GPIO_SetBits(GPIOB,GPIO_Pin_1);

396.      GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

397.      delay_ms(100);

398.      GPIO_ResetBits(GPIOB,GPIO_Pin_1);

399.      GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);

401.     

402.      GPIO_SetBits(GPIOB,GPIO_Pin_15);

403.      GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);

404.      delay_ms(50);

405.      GPIO_ResetBits(GPIOB,GPIO_Pin_15);

406.      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);//31

407.      break;

408.      }

409.     

410.      }

 

411.    }

 


菜鸟
2014-11-27 22:25:57     打赏
4楼

视频地址:http://player.youku.com/player.php/sid/XODM2NjE1MjA0/v.swf


#include "stm32f10x.h"  
#include "stm32_eval.h"  
#include 

EXTI_InitTypeDef   EXTI_InitStructure;  
GPIO_InitTypeDef   GPIO_InitStructure;  
NVIC_InitTypeDef   NVIC_InitStructure;  
USART_InitTypeDef USART_InitStructure;  
USART_ClockInitTypeDef USART_ClockInitStructure;  
/* Private function prototypes -----------------------------------------------*/  
void EXTIkeyS1_Config(void);  
void EXTIkeyS2_Config(void);  
void EXTIkeyS3_Config(void);  
void EXTIkeyS4_Config(void);  
void RCC_Configuration(void)  
{  
  RCC_DeInit();   
  RCC_HSICmd(ENABLE);  
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);  
  RCC_HSEConfig(RCC_HSE_OFF);  
  RCC_LSEConfig(RCC_LSE_OFF);  
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz  
  RCC_PLLCmd(ENABLE);  
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);  
  RCC_PCLK2Config(RCC_HCLK_Div1);  
  RCC_PCLK1Config(RCC_HCLK_Div2);  
  RCC_HCLKConfig(RCC_SYSCLK_Div1);  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  
  while(RCC_GetSYSCLKSource() != 0x08);  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  GPIO_Init(GPIOD, &GPIO_InitStructure);  
  GPIO_ResetBits(GPIOD,GPIO_Pin_2);  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);  
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  GPIO_Init(GPIOC, &GPIO_InitStructure);  
  GPIO_ResetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);  
}  
  
void USART_int(long BaudRate)  
{  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;  
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
    GPIO_Init(GPIOA, &GPIO_InitStructure);  
    
  USART_InitStructure.USART_BaudRate = BaudRate; 
  USART_InitStructure.USART_WordLength = USART_WordLength_8b; 
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;  
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 
  USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;      
  USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;                 
  USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
  USART_ClockInit(USART1, &USART_ClockInitStructure);  
  USART_Init(USART1, &USART_InitStructure);
  USART_Cmd(USART1, ENABLE); 
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 
  USART_Cmd(USART1, ENABLE);  
   
  /* Configure four bit for preemption priority */  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);  
  /* Enable the USART1 Interrupt */  
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;   
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);  
}  
  
int main(void)  
{  
  RCC_Configuration();  
  EXTIkeyS1_Config();  
  EXTIkeyS2_Config();  
  EXTIkeyS3_Config();  
  EXTIkeyS4_Config();     
  USART_int(115200);  
  printf("Config done,waiting for interrupt......\r\n");  
            
  while (1)  
  {  
  }  
}  
  
void EXTIkeyS1_Config(void)  
{  
  /* Enable GPIOA clock */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
    
  /* Configure PA.00 pin as input floating */  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  GPIO_Init(GPIOA, &GPIO_InitStructure);  
  
  /* Enable AFIO clock */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
  
  /* Connect EXTI0 Line to PA.00 pin */  
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);  
  
  /* Configure EXTI0 line */  
  EXTI_InitStructure.EXTI_Line = EXTI_Line8;  
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
  EXTI_Init(&EXTI_InitStructure);  
  
  /* Enable and set EXTI0 Interrupt to the lowest priority */  
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;  
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);  
}  
  
  
void EXTIkeyS2_Config(void)  
{  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  GPIO_Init(GPIOC, &GPIO_InitStructure);  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource9);  
      
  EXTI_InitStructure.EXTI_Line = EXTI_Line9;  
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
  EXTI_Init(&EXTI_InitStructure);  
      
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;  
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);  
}  
  
void EXTIkeyS3_Config(void)  
{  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  GPIO_Init(GPIOA, &GPIO_InitStructure);  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource10);  
  
  EXTI_InitStructure.EXTI_Line = EXTI_Line10;  
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
  EXTI_Init(&EXTI_InitStructure);  
  
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);  
}  
  
void EXTIkeyS4_Config(void)  
{  
  /* Enable GPIOA clock */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
    
  /* Configure PA.00 pin as input floating */  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  GPIO_Init(GPIOA, &GPIO_InitStructure);  
  
  /* Enable AFIO clock */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
  
  /* Connect EXTI0 Line to PA.00 pin */  
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource11);  
  
  /* Configure EXTI0 line */  
  EXTI_InitStructure.EXTI_Line = EXTI_Line11;  
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
  EXTI_Init(&EXTI_InitStructure);  
  
  /* Enable and set EXTI0 Interrupt to the lowest priority */  
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);  
}  
  
void EXTI15_10_IRQHandler(void)  
{   
    if(EXTI_GetITStatus(EXTI_Line11) != RESET)  
  {  
     GPIO_SetBits(GPIOC,GPIO_Pin_3);  
     printf("S2 interrupt ......\r\n");  
     EXTI_ClearITPendingBit(EXTI_Line9);  
  }  
      
    if(EXTI_GetITStatus(EXTI_Line10) != RESET)  
  {  
     GPIO_SetBits(GPIOC,GPIO_Pin_2);  
     printf("S1 interrupt ......\r\n");  
     EXTI_ClearITPendingBit(EXTI_Line8);  
  }  
}  
void EXTI9_5_IRQHandler(void)  
{  
  if(EXTI_GetITStatus(EXTI_Line9) != RESET)  
  {  
     GPIO_SetBits(GPIOC,GPIO_Pin_1);  
     printf("S2 interrupt ......\r\n");  
     EXTI_ClearITPendingBit(EXTI_Line9);  
  }  
      
    if(EXTI_GetITStatus(EXTI_Line8) != RESET)  
  {   
     GPIO_SetBits(GPIOC,GPIO_Pin_0);  
     printf("S1 interrupt ......\r\n");  
     EXTI_ClearITPendingBit(EXTI_Line8);  
  }  
}  
  
  
#ifdef  USE_FULL_ASSERT  
  
void assert_failed(uint8_t* file, uint32_t line)  
{   
   
  while (1)  
  {  
  }  
}  
  
#endif  
  
  
  
#ifdef __GNUC__  
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
     set to 'Yes') calls __io_putchar() */  
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
#else  
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
#endif /* __GNUC__ */  
    
 
 PUTCHAR_PROTOTYPE  
{  
  /* Place your implementation of fputc here */  
  /* e.g. write a character to the USART */  
  USART_SendData(EVAL_COM1, (uint8_t) ch);  
  
  /* Loop until the end of transmission */  
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)  
  {}  
  
  return ch;  
}  
  
#ifdef  USE_FULL_ASSERT  
  
  
void assert_failed(uint8_t* file, uint32_t line)  
{   
    
  while (1)  
  {  
  }  
}  
  
#endif  
  
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/



菜鸟
2014-11-27 23:20:36     打赏
5楼

菜鸟
2014-12-04 12:09:03     打赏
6楼
view plaincopy to clipboardprint?
01.#include "stm32f10x.h"   
02.#include "stm32_eval.h"   
03.#include    
04.#define VREF 3.3   
05.GPIO_InitTypeDef   GPIO_InitStructure;   
06.USART_InitTypeDef USART_InitStructure;   
07.USART_ClockInitTypeDef USART_ClockInitStructure;   
08.  
09.void delay_us(u32 n)     
10.{     
11.    u8 j;     
12.    while(n--)     
13.    for(j=0;j<10;j++);     
14.}     
15.void  delay_ms(u32 n)     
16.{     
17.    while(n--)     
18.    delay_us(1000);     
19.}     
20.void RCC_Configuration(void)   
21.{   
22.    SystemInit();   
23.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);   
24. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG   
25.RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);   
26. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG   
27.  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;   
28.  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
29.  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
30.  GPIO_Init(GPIOD, &GPIO_InitStructure);   
31.    GPIO_ResetBits(GPIOD,GPIO_Pin_2);   
32.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);   
33. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG   
34.  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;   
35.  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
36.  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
37.  GPIO_Init(GPIOC, &GPIO_InitStructure);   
38.    GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);   
39.      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);   
40.}    
41.  
42.void USART_int(long BaudRate)   
43.{   
44.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);   
45.       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;   
46.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
47.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    
48.    GPIO_Init(GPIOA, &GPIO_InitStructure);   
49.    /* PA10 USART1_Rx  */  
50.    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;   
51.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   
52.    GPIO_Init(GPIOA, &GPIO_InitStructure);   
53.  /* USARTx configured as follow:  
54.        - BaudRate = 115200 baud    
55.        - Word Length = 8 Bits  
56.        - One Stop Bit  
57.        - No parity  
58.        - Hardware flow control disabled (RTS and CTS signals)  
59.        - Receive and transmit enabled  
60.  */  
61.  USART_InitStructure.USART_BaudRate = BaudRate;//??????   
62.  USART_InitStructure.USART_WordLength = USART_WordLength_8b;//???????8bit   
63.  USART_InitStructure.USART_StopBits = USART_StopBits_1;//????1   
64.  USART_InitStructure.USART_Parity = USART_Parity_No;//????   
65.  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//??????none   
66.  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//??????????   
67.    USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;        
68.    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;         
69.    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;         
70.    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;   
71.    USART_ClockInit(USART1, &USART_ClockInitStructure);   
72.  USART_Init(USART1, &USART_InitStructure);   
73.  USART_Cmd(USART1, ENABLE);   
74.    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);   
75. USART_Cmd(USART1, ENABLE);   
76.}   
77.  
78.void PWM_Config()   
79.{uint16_t PrescalerValue = 0;//预分频器值   
80.    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;   
81.TIM_OCInitTypeDef  TIM_OCInitStructure;   
82.    /* TIM2 clock enable */  
83.  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);   
84.  /* GPIOA  enable */  
85.  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO  , ENABLE);//使能复用功能时钟   
86.       
87.        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;   
88.  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出   
89.  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
90.  GPIO_Init(GPIOA, &GPIO_InitStructure);   
91.       
92.        TIM_Cmd(TIM2, ENABLE);//TIM2使能   
93.      /* Compute the prescaler value */  
94.  PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;   
95.  /* Time base configuration */  
96.  TIM_TimeBaseStructure.TIM_Period = 0x07FF;//设置自动重装载   
97.  TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;//设置预分频值   
98.  TIM_TimeBaseStructure.TIM_ClockDivision = 0;//设置时钟分割TDTS=Tck_tim   
99.  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数   
100.  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//根据指定参数初始化TIMx   
101.  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//选择PWM模式1   
102.  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性高   
103.  /* PWM1 Mode configuration: Channel2 */  
104.  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   
105.  TIM_OCInitStructure.TIM_Pulse = 0xFFFF;//通道占空比时间   
106.  TIM_OC2Init(TIM2, &TIM_OCInitStructure);//初始化TIM2 OC2   
107.    /* PWM1 Mode configuration: Channel3 */  
108.  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能   
109.  TIM_OCInitStructure.TIM_Pulse = 0xFFFF;//通道占空比时间   
110.  TIM_OC3Init(TIM2, &TIM_OCInitStructure);//初始化TIM2 OC3   
111.    /* PWM1 Mode configuration: Channel4 */  
112.  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   
113.  TIM_OCInitStructure.TIM_Pulse = 0xFFFF;//通道占空比时间   
114.  TIM_OC4Init(TIM2, &TIM_OCInitStructure);//初始化TIM2 OC4   
115.       
116.  TIM_ARRPreloadConfig(TIM2, ENABLE);//使能预装载寄存器   
117.}   
118.  
119.void PWM_TEST()   
120.{ unsigned int temp0,temp1,temp2;   
121.    printf("PWM-RGB TEST......\r\n");   
122.    while(1)   
123.    {   
124.   if(temp0=0,temp1=2047,temp2=2047)   
125.           {TIM_SetCompare2(TIM2,temp0);delay_ms(500);    
126.       TIM_SetCompare3(TIM2,temp1);delay_ms(500);         
127.       TIM_SetCompare4(TIM2,temp2);delay_ms(500);   
128.      }   
129.    if(temp0=2047,temp1=0,temp2=2047)   
130.          {TIM_SetCompare2(TIM2,temp0);delay_ms(500);    
131.       TIM_SetCompare3(TIM2,temp1);delay_ms(500);         
132.       TIM_SetCompare4(TIM2,temp2);delay_ms(500);   
133.          }   
134.    if(temp0=2047,temp1=2047,temp2=0)   
135.             {TIM_SetCompare2(TIM2,temp0);delay_ms(500);    
136.       TIM_SetCompare3(TIM2,temp1);delay_ms(500);         
137.       TIM_SetCompare4(TIM2,temp2);delay_ms(500);   
138.            }   
139.    if(temp0=250,temp1=1750,temp2=1750)   
140.             {TIM_SetCompare2(TIM2,temp0);delay_ms(500);    
141.       TIM_SetCompare3(TIM2,temp1);delay_ms(500);         
142.       TIM_SetCompare4(TIM2,temp2);delay_ms(500);   
143.            }              
144.  if(temp0=500,temp1=250,temp2=1750)   
145.             {TIM_SetCompare2(TIM2,temp0);delay_ms(500);    
146.       TIM_SetCompare3(TIM2,temp1);delay_ms(500);         
147.       TIM_SetCompare4(TIM2,temp2);delay_ms(500);   
148.            }                                      
149.    if(temp0=500,temp1=1500,temp2=1000)   
150.             {TIM_SetCompare2(TIM2,temp0);delay_ms(500);    
151.       TIM_SetCompare3(TIM2,temp1);delay_ms(500);         
152.       TIM_SetCompare4(TIM2,temp2);delay_ms(500);   
153.            }              
154.   if(temp0=1250,temp1=750,temp2=1250)   
155.             {TIM_SetCompare2(TIM2,temp0);delay_ms(500);    
156.       TIM_SetCompare3(TIM2,temp1);delay_ms(500);         
157.       TIM_SetCompare4(TIM2,temp2);delay_ms(500);   
158.            }                  
159.         }   
160.}   
161.int main(void)   
162.{      
163.  RCC_Configuration();   
164.USART_int(115200);   
165.    printf(" config done...\r\n");   
166.    PWM_Config();   
167.    delay_ms(1000);   
168.    while(1)   
169.    {   
170.        PWM_TEST();   
171.    }   
172.}   
173.#ifdef  USE_FULL_ASSERT   
174.void assert_failed(uint8_t* file, uint32_t line)   
175.{while (1)   
176.  {   
177.  }   
178.}   
179.#endif   
180./**  
181.  * @}  
182.  */    
183./**  
184.  * @}  
185.  */    
186.#ifdef __GNUC__   
187.  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)   
188.#else   
189.  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)   
190.#endif /* __GNUC__ */   
191.PUTCHAR_PROTOTYPE   
192.{   
193.  USART_SendData(EVAL_COM1, (uint8_t) ch);   
194.  /* Loop until the end of transmission */  
195.  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)   
196.  {}   
197.  return ch;   
198.}   
199.#ifdef  USE_FULL_ASSERT   
200.etval None   
201.  */   
202.void assert_failed(uint8_t* file, uint32_t line)   
203.{    
204.  while (1)   
205.  {   
206.  }   
207.}   
208.#endif  

 


菜鸟
2014-12-14 13:23:31     打赏
7楼
#include "stm32f10x.h"     
#include "stm32_eval.h"     
#include      
#define VREF 3.3     
unsigned char i=0;     
   
EXTI_InitTypeDef   EXTI_InitStructure;       
NVIC_InitTypeDef   NVIC_InitStructure;     
GPIO_InitTypeDef   GPIO_InitStructure;     
USART_InitTypeDef USART_InitStructure;     
USART_ClockInitTypeDef USART_ClockInitStructure;     
   
   
void delay_us(u32 n)   
{   
    u8 j;   
    while(n--)   
    for(j=0;j<10;j++);   
}   
   
void  delay_ms(u32 n)   
{   
    while(n--)   
    delay_us(1000);   
}   
   
      
     
void RCC_Configuration(void)     
{     
  RCC_DeInit();     
         
  RCC_HSICmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     
       
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);     
       
  RCC_HSEConfig(RCC_HSE_OFF);     
  RCC_LSEConfig(RCC_LSE_OFF);     
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz     
  RCC_PLLCmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);     
  RCC_PCLK2Config(RCC_HCLK_Div1);     
  RCC_PCLK1Config(RCC_HCLK_Div2);     
  RCC_HCLKConfig(RCC_SYSCLK_Div1);     
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);     
  while(RCC_GetSYSCLKSource() != 0x08);     
     
         
    //SystemInit();     
         
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);    
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOD, &GPIO_InitStructure);     
    GPIO_ResetBits(GPIOD,GPIO_Pin_2);     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOC, &GPIO_InitStructure);     
    GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);     
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);     
}      
     
void USART_int(long BaudRate)     
{     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);     
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      
    GPIO_Init(GPIOA, &GPIO_InitStructure);     
    /* PA10 USART1_Rx  */     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
    GPIO_Init(GPIOA, &GPIO_InitStructure);     
  /* USARTx configured as follow:   
        - BaudRate = 115200 baud     
        - Word Length = 8 Bits   
        - One Stop Bit   
        - No parity   
        - Hardware flow control disabled (RTS and CTS signals)   
        - Receive and transmit enabled   
  */     
  USART_InitStructure.USART_BaudRate = BaudRate;   
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;     
  USART_InitStructure.USART_StopBits = USART_StopBits_1;     
  USART_InitStructure.USART_Parity = USART_Parity_No;     
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;e     
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    
    USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;          
    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;           
    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;           
    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;     
    USART_ClockInit(USART1, &USART_ClockInitStructure);     
  USART_Init(USART1, &USART_InitStructure);     
  USART_Cmd(USART1, ENABLE);     
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);     
 USART_Cmd(USART1, ENABLE);     
}     
void GPIO_INIT()       
{       
      
  RCC_Configuration();       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;       
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;       
GPIO_Init(GPIOC, &GPIO_InitStructure);       
      
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;       
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       
  GPIO_Init(GPIOB, &GPIO_InitStructure);       
}       
     
void Iic1_Init(void)     
{     
        GPIO_InitTypeDef GPIO_InitStructure;     
        I2C_InitTypeDef I2C_InitStructure;     
             
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);     
        //PB6-I2C2_SCL PB7-I2C2_SDA PB10-I2C2_SCL PB11-I2C2_SDA     
        /* Configure IO connected to IIC*********************/     
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10 | GPIO_Pin_11;     
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;     
        GPIO_Init(GPIOB, &GPIO_InitStructure);     
             
        I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;     
        I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;     
        I2C_InitStructure.I2C_OwnAddress1 = 0xA0;     
        I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;     
        I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;     
        I2C_InitStructure.I2C_ClockSpeed = 400000;            
        I2C_Cmd(I2C2, ENABLE);        
        I2C_Init(I2C2, &I2C_InitStructure);     
        I2C_AcknowledgeConfig(I2C2, ENABLE);         
}     
     
     
/**********************************************************************/     
/*IIC?????                                                                               */     
/*                                                                                                                                          */     
/**********************************************************************/     
void I2C2_WriteByte(unsigned char id,unsigned char write_address,unsigned char byte)     
{     
        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY));     
        I2C_GenerateSTART(I2C2,ENABLE);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));   
        I2C_Send7bitAddress(I2C2,id,I2C_Direction_Transmitter);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));     
        I2C_SendData(I2C2, write_address);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
        I2C_SendData(I2C2, byte);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
        I2C_GenerateSTOP(I2C2, ENABLE);     
     
        do     
        {                     
                /* Send START condition */     
                I2C_GenerateSTART(I2C2, ENABLE);     
                /* Read I2C2 SR1 register */     
                /* Send EEPROM address for write */     
                I2C_Send7bitAddress(I2C2, 0xA0, I2C_Direction_Transmitter);     
        }while(!(I2C_ReadRegister(I2C2, I2C_Register_SR1) & 0x0002));    
     
        /* Clear AF flag */     
        I2C_ClearFlag(I2C2, I2C_FLAG_AF);     
        /* STOP condition */         
        I2C_GenerateSTOP(I2C2, ENABLE);       
}     
     
     
unsigned char I2C2_ReadByte(unsigned char  id, unsigned char read_address)     
{       
        unsigned char temp;              
     
        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)){}     
          I2C_GenerateSTART(I2C2, ENABLE);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));     
          I2C_Send7bitAddress(I2C2, id, I2C_Direction_Transmitter);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));     
          I2C_Cmd(I2C2, ENABLE);     
          I2C_SendData(I2C2, read_address);       
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
          I2C_GenerateSTART(I2C2, ENABLE);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));     
          I2C_Send7bitAddress(I2C2, id, I2C_Direction_Receiver);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));     
    I2C_AcknowledgeConfig(I2C2, DISABLE);     
    I2C_GenerateSTOP(I2C2, ENABLE);     
    while(!(I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_RECEIVED)));     
                   
    temp = I2C_ReceiveData(I2C2);     
        
          I2C_AcknowledgeConfig(I2C2, ENABLE);     
     
        return temp;     
}     
     
   
     
     
void EXTIkeyS1_Config(void)      
{       
  /* Enable GPIOA clock */       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);       
  /* Configure PA.00 pin as input floating */       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;      
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;       
  GPIO_Init(GPIOC, &GPIO_InitStructure);       
  /* Enable AFIO clock */       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);       
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);       
  EXTI_InitStructure.EXTI_Line = EXTI_Line8;       
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;         
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;       
  EXTI_Init(&EXTI_InitStructure);       
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;       
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;       
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;       
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;       
  NVIC_Init(&NVIC_InitStructure);       
}       
void EXTI9_5_IRQHandler(void)     
{     
  if(EXTI_GetITStatus(EXTI_Line8) != RESET)     
  {     
        i=0;     
        I2C2_WriteByte(0xA0,0,0);     
       printf("上电清0\r\n",i);     
    /* Clear the  EXTI line 8 pending bit */     
    EXTI_ClearITPendingBit(EXTI_Line8);     
  }     
}     
     
 void IIC_TEST()     
{     
   printf(" config done...\r\n");       
    i = I2C2_ReadByte(0xA0,0);     
    i++;         
    printf("从地址读出数据:%d\r\n",i);       
    I2C2_WriteByte(0xA0,0,i);       
      printf("向地址输入数据:%d\r\n",i);       
    printf("上电次数%d\r\n",i);     
           
       
}      
   
int main(void)       
{       
     /*!< At this stage the microcontroller clock setting is already configured,    
       this is done through SystemInit() function which is called from startup   
       file (startup_stm32f10x_xx.s) before to branch to application main.   
       To reconfigure the default setting of SystemInit() function, refer to   
       system_stm32f10x.c file   
     */          
            
  /* System Clocks Configuration */     
  RCC_Configuration();       
  EXTIkeyS1_Config();     
  GPIO_INIT();       
  USART_int(115200);       
  Iic1_Init();     
  IIC_TEST();     
   
         
}       
     
     
#ifdef  USE_FULL_ASSERT       
       
void assert_failed(uint8_t* file, uint32_t line)       
{        
  while (1)       
  {       
  }       
}       
       
#endif       
       
#ifdef __GNUC__       
       
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)       
#else       
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)       
#endif /* __GNUC__ */       
         
       
PUTCHAR_PROTOTYPE       
{       
       
  USART_SendData(EVAL_COM1, (uint8_t) ch);       
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)       
  {}       
       
  return ch;       
}      

 


菜鸟
2014-12-14 13:23:33     打赏
8楼
#include "stm32f10x.h"     
#include "stm32_eval.h"     
#include      
#define VREF 3.3     
unsigned char i=0;     
   
EXTI_InitTypeDef   EXTI_InitStructure;       
NVIC_InitTypeDef   NVIC_InitStructure;     
GPIO_InitTypeDef   GPIO_InitStructure;     
USART_InitTypeDef USART_InitStructure;     
USART_ClockInitTypeDef USART_ClockInitStructure;     
   
   
void delay_us(u32 n)   
{   
    u8 j;   
    while(n--)   
    for(j=0;j<10;j++);   
}   
   
void  delay_ms(u32 n)   
{   
    while(n--)   
    delay_us(1000);   
}   
   
      
     
void RCC_Configuration(void)     
{     
  RCC_DeInit();     
         
  RCC_HSICmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     
       
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);     
       
  RCC_HSEConfig(RCC_HSE_OFF);     
  RCC_LSEConfig(RCC_LSE_OFF);     
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz     
  RCC_PLLCmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);     
  RCC_PCLK2Config(RCC_HCLK_Div1);     
  RCC_PCLK1Config(RCC_HCLK_Div2);     
  RCC_HCLKConfig(RCC_SYSCLK_Div1);     
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);     
  while(RCC_GetSYSCLKSource() != 0x08);     
     
         
    //SystemInit();     
         
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);    
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOD, &GPIO_InitStructure);     
    GPIO_ResetBits(GPIOD,GPIO_Pin_2);     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOC, &GPIO_InitStructure);     
    GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);     
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);     
}      
     
void USART_int(long BaudRate)     
{     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);     
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      
    GPIO_Init(GPIOA, &GPIO_InitStructure);     
    /* PA10 USART1_Rx  */     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
    GPIO_Init(GPIOA, &GPIO_InitStructure);     
  /* USARTx configured as follow:   
        - BaudRate = 115200 baud     
        - Word Length = 8 Bits   
        - One Stop Bit   
        - No parity   
        - Hardware flow control disabled (RTS and CTS signals)   
        - Receive and transmit enabled   
  */     
  USART_InitStructure.USART_BaudRate = BaudRate;   
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;     
  USART_InitStructure.USART_StopBits = USART_StopBits_1;     
  USART_InitStructure.USART_Parity = USART_Parity_No;     
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;e     
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    
    USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;          
    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;           
    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;           
    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;     
    USART_ClockInit(USART1, &USART_ClockInitStructure);     
  USART_Init(USART1, &USART_InitStructure);     
  USART_Cmd(USART1, ENABLE);     
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);     
 USART_Cmd(USART1, ENABLE);     
}     
void GPIO_INIT()       
{       
      
  RCC_Configuration();       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;       
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;       
GPIO_Init(GPIOC, &GPIO_InitStructure);       
      
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;       
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       
  GPIO_Init(GPIOB, &GPIO_InitStructure);       
}       
     
void Iic1_Init(void)     
{     
        GPIO_InitTypeDef GPIO_InitStructure;     
        I2C_InitTypeDef I2C_InitStructure;     
             
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);     
        //PB6-I2C2_SCL PB7-I2C2_SDA PB10-I2C2_SCL PB11-I2C2_SDA     
        /* Configure IO connected to IIC*********************/     
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10 | GPIO_Pin_11;     
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;     
        GPIO_Init(GPIOB, &GPIO_InitStructure);     
             
        I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;     
        I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;     
        I2C_InitStructure.I2C_OwnAddress1 = 0xA0;     
        I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;     
        I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;     
        I2C_InitStructure.I2C_ClockSpeed = 400000;            
        I2C_Cmd(I2C2, ENABLE);        
        I2C_Init(I2C2, &I2C_InitStructure);     
        I2C_AcknowledgeConfig(I2C2, ENABLE);         
}     
     
     
/**********************************************************************/     
/*IIC?????                                                                               */     
/*                                                                                                                                          */     
/**********************************************************************/     
void I2C2_WriteByte(unsigned char id,unsigned char write_address,unsigned char byte)     
{     
        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY));     
        I2C_GenerateSTART(I2C2,ENABLE);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));   
        I2C_Send7bitAddress(I2C2,id,I2C_Direction_Transmitter);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));     
        I2C_SendData(I2C2, write_address);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
        I2C_SendData(I2C2, byte);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
        I2C_GenerateSTOP(I2C2, ENABLE);     
     
        do     
        {                     
                /* Send START condition */     
                I2C_GenerateSTART(I2C2, ENABLE);     
                /* Read I2C2 SR1 register */     
                /* Send EEPROM address for write */     
                I2C_Send7bitAddress(I2C2, 0xA0, I2C_Direction_Transmitter);     
        }while(!(I2C_ReadRegister(I2C2, I2C_Register_SR1) & 0x0002));    
     
        /* Clear AF flag */     
        I2C_ClearFlag(I2C2, I2C_FLAG_AF);     
        /* STOP condition */         
        I2C_GenerateSTOP(I2C2, ENABLE);       
}     
     
     
unsigned char I2C2_ReadByte(unsigned char  id, unsigned char read_address)     
{       
        unsigned char temp;              
     
        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)){}     
          I2C_GenerateSTART(I2C2, ENABLE);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));     
          I2C_Send7bitAddress(I2C2, id, I2C_Direction_Transmitter);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));     
          I2C_Cmd(I2C2, ENABLE);     
          I2C_SendData(I2C2, read_address);       
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
          I2C_GenerateSTART(I2C2, ENABLE);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));     
          I2C_Send7bitAddress(I2C2, id, I2C_Direction_Receiver);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));     
    I2C_AcknowledgeConfig(I2C2, DISABLE);     
    I2C_GenerateSTOP(I2C2, ENABLE);     
    while(!(I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_RECEIVED)));     
                   
    temp = I2C_ReceiveData(I2C2);     
        
          I2C_AcknowledgeConfig(I2C2, ENABLE);     
     
        return temp;     
}     
     
   
     
     
void EXTIkeyS1_Config(void)      
{       
  /* Enable GPIOA clock */       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);       
  /* Configure PA.00 pin as input floating */       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;      
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;       
  GPIO_Init(GPIOC, &GPIO_InitStructure);       
  /* Enable AFIO clock */       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);       
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);       
  EXTI_InitStructure.EXTI_Line = EXTI_Line8;       
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;         
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;       
  EXTI_Init(&EXTI_InitStructure);       
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;       
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;       
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;       
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;       
  NVIC_Init(&NVIC_InitStructure);       
}       
void EXTI9_5_IRQHandler(void)     
{     
  if(EXTI_GetITStatus(EXTI_Line8) != RESET)     
  {     
        i=0;     
        I2C2_WriteByte(0xA0,0,0);     
       printf("上电清0\r\n",i);     
    /* Clear the  EXTI line 8 pending bit */     
    EXTI_ClearITPendingBit(EXTI_Line8);     
  }     
}     
     
 void IIC_TEST()     
{     
   printf(" config done...\r\n");       
    i = I2C2_ReadByte(0xA0,0);     
    i++;         
    printf("从地址读出数据:%d\r\n",i);       
    I2C2_WriteByte(0xA0,0,i);       
      printf("向地址输入数据:%d\r\n",i);       
    printf("上电次数%d\r\n",i);     
           
       
}      
   
int main(void)       
{       
     /*!< At this stage the microcontroller clock setting is already configured,    
       this is done through SystemInit() function which is called from startup   
       file (startup_stm32f10x_xx.s) before to branch to application main.   
       To reconfigure the default setting of SystemInit() function, refer to   
       system_stm32f10x.c file   
     */          
            
  /* System Clocks Configuration */     
  RCC_Configuration();       
  EXTIkeyS1_Config();     
  GPIO_INIT();       
  USART_int(115200);       
  Iic1_Init();     
  IIC_TEST();     
   
         
}       
     
     
#ifdef  USE_FULL_ASSERT       
       
void assert_failed(uint8_t* file, uint32_t line)       
{        
  while (1)       
  {       
  }       
}       
       
#endif       
       
#ifdef __GNUC__       
       
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)       
#else       
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)       
#endif /* __GNUC__ */       
         
       
PUTCHAR_PROTOTYPE       
{       
       
  USART_SendData(EVAL_COM1, (uint8_t) ch);       
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)       
  {}       
       
  return ch;       
}      

 


菜鸟
2014-12-14 13:25:20     打赏
9楼
#include "stm32f10x.h"     
#include "stm32_eval.h"     
#include      
#define VREF 3.3     
unsigned char i=0;     
   
EXTI_InitTypeDef   EXTI_InitStructure;       
NVIC_InitTypeDef   NVIC_InitStructure;     
GPIO_InitTypeDef   GPIO_InitStructure;     
USART_InitTypeDef USART_InitStructure;     
USART_ClockInitTypeDef USART_ClockInitStructure;     
   
   
void delay_us(u32 n)   
{   
    u8 j;   
    while(n--)   
    for(j=0;j<10;j++);   
}   
   
void  delay_ms(u32 n)   
{   
    while(n--)   
    delay_us(1000);   
}   
   
      
     
void RCC_Configuration(void)     
{     
  RCC_DeInit();     
         
  RCC_HSICmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     
       
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);     
       
  RCC_HSEConfig(RCC_HSE_OFF);     
  RCC_LSEConfig(RCC_LSE_OFF);     
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz     
  RCC_PLLCmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);     
  RCC_PCLK2Config(RCC_HCLK_Div1);     
  RCC_PCLK1Config(RCC_HCLK_Div2);     
  RCC_HCLKConfig(RCC_SYSCLK_Div1);     
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);     
  while(RCC_GetSYSCLKSource() != 0x08);     
     
         
    //SystemInit();     
         
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);    
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOD, &GPIO_InitStructure);     
    GPIO_ResetBits(GPIOD,GPIO_Pin_2);     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOC, &GPIO_InitStructure);     
    GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);     
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);     
}      
     
void USART_int(long BaudRate)     
{     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);     
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      
    GPIO_Init(GPIOA, &GPIO_InitStructure);     
    /* PA10 USART1_Rx  */     
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
    GPIO_Init(GPIOA, &GPIO_InitStructure);     
  /* USARTx configured as follow:   
        - BaudRate = 115200 baud     
        - Word Length = 8 Bits   
        - One Stop Bit   
        - No parity   
        - Hardware flow control disabled (RTS and CTS signals)   
        - Receive and transmit enabled   
  */     
  USART_InitStructure.USART_BaudRate = BaudRate;   
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;     
  USART_InitStructure.USART_StopBits = USART_StopBits_1;     
  USART_InitStructure.USART_Parity = USART_Parity_No;     
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;e     
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    
    USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;          
    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;           
    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;           
    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;     
    USART_ClockInit(USART1, &USART_ClockInitStructure);     
  USART_Init(USART1, &USART_InitStructure);     
  USART_Cmd(USART1, ENABLE);     
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);     
 USART_Cmd(USART1, ENABLE);     
}     
void GPIO_INIT()       
{       
      
  RCC_Configuration();       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;       
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;       
GPIO_Init(GPIOC, &GPIO_InitStructure);       
      
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;       
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       
  GPIO_Init(GPIOB, &GPIO_InitStructure);       
}       
     
void Iic1_Init(void)     
{     
        GPIO_InitTypeDef GPIO_InitStructure;     
        I2C_InitTypeDef I2C_InitStructure;     
             
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);     
        //PB6-I2C2_SCL PB7-I2C2_SDA PB10-I2C2_SCL PB11-I2C2_SDA     
        /* Configure IO connected to IIC*********************/     
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10 | GPIO_Pin_11;     
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;     
        GPIO_Init(GPIOB, &GPIO_InitStructure);     
             
        I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;     
        I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;     
        I2C_InitStructure.I2C_OwnAddress1 = 0xA0;     
        I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;     
        I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;     
        I2C_InitStructure.I2C_ClockSpeed = 400000;            
        I2C_Cmd(I2C2, ENABLE);        
        I2C_Init(I2C2, &I2C_InitStructure);     
        I2C_AcknowledgeConfig(I2C2, ENABLE);         
}     
     
     
/**********************************************************************/     
/*IIC?????                                                                               */     
/*                                                                                                                                          */     
/**********************************************************************/     
void I2C2_WriteByte(unsigned char id,unsigned char write_address,unsigned char byte)     
{     
        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY));     
        I2C_GenerateSTART(I2C2,ENABLE);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));   
        I2C_Send7bitAddress(I2C2,id,I2C_Direction_Transmitter);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));     
        I2C_SendData(I2C2, write_address);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
        I2C_SendData(I2C2, byte);     
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
        I2C_GenerateSTOP(I2C2, ENABLE);     
     
        do     
        {                     
                /* Send START condition */     
                I2C_GenerateSTART(I2C2, ENABLE);     
                /* Read I2C2 SR1 register */     
                /* Send EEPROM address for write */     
                I2C_Send7bitAddress(I2C2, 0xA0, I2C_Direction_Transmitter);     
        }while(!(I2C_ReadRegister(I2C2, I2C_Register_SR1) & 0x0002));    
     
        /* Clear AF flag */     
        I2C_ClearFlag(I2C2, I2C_FLAG_AF);     
        /* STOP condition */         
        I2C_GenerateSTOP(I2C2, ENABLE);       
}     
     
     
unsigned char I2C2_ReadByte(unsigned char  id, unsigned char read_address)     
{       
        unsigned char temp;              
     
        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY)){}     
          I2C_GenerateSTART(I2C2, ENABLE);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));     
          I2C_Send7bitAddress(I2C2, id, I2C_Direction_Transmitter);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));     
          I2C_Cmd(I2C2, ENABLE);     
          I2C_SendData(I2C2, read_address);       
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED));     
          I2C_GenerateSTART(I2C2, ENABLE);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT));     
          I2C_Send7bitAddress(I2C2, id, I2C_Direction_Receiver);     
          while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));     
    I2C_AcknowledgeConfig(I2C2, DISABLE);     
    I2C_GenerateSTOP(I2C2, ENABLE);     
    while(!(I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_RECEIVED)));     
                   
    temp = I2C_ReceiveData(I2C2);     
        
          I2C_AcknowledgeConfig(I2C2, ENABLE);     
     
        return temp;     
}     
     
   
     
     
void EXTIkeyS1_Config(void)      
{       
  /* Enable GPIOA clock */       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);       
  /* Configure PA.00 pin as input floating */       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;      
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;       
  GPIO_Init(GPIOC, &GPIO_InitStructure);       
  /* Enable AFIO clock */       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);       
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);       
  EXTI_InitStructure.EXTI_Line = EXTI_Line8;       
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;         
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;       
  EXTI_Init(&EXTI_InitStructure);       
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;       
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;       
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;       
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;       
  NVIC_Init(&NVIC_InitStructure);       
}       
void EXTI9_5_IRQHandler(void)     
{     
  if(EXTI_GetITStatus(EXTI_Line8) != RESET)     
  {     
        i=0;     
        I2C2_WriteByte(0xA0,0,0);     
       printf("上电清0\r\n",i);     
    /* Clear the  EXTI line 8 pending bit */     
    EXTI_ClearITPendingBit(EXTI_Line8);     
  }     
}     
     
 void IIC_TEST()     
{     
   printf(" config done...\r\n");       
    i = I2C2_ReadByte(0xA0,0);     
    i++;         
    printf("从地址读出数据:%d\r\n",i);       
    I2C2_WriteByte(0xA0,0,i);       
      printf("向地址输入数据:%d\r\n",i);       
    printf("上电次数%d\r\n",i);     
           
       
}      
   
int main(void)       
{       
     /*!< At this stage the microcontroller clock setting is already configured,    
       this is done through SystemInit() function which is called from startup   
       file (startup_stm32f10x_xx.s) before to branch to application main.   
       To reconfigure the default setting of SystemInit() function, refer to   
       system_stm32f10x.c file   
     */          
            
  /* System Clocks Configuration */     
  RCC_Configuration();       
  EXTIkeyS1_Config();     
  GPIO_INIT();       
  USART_int(115200);       
  Iic1_Init();     
  IIC_TEST();     
   
         
}       
     
     
#ifdef  USE_FULL_ASSERT       
       
void assert_failed(uint8_t* file, uint32_t line)       
{        
  while (1)       
  {       
  }       
}       
       
#endif       
       
#ifdef __GNUC__       
       
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)       
#else       
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)       
#endif /* __GNUC__ */       
         
       
PUTCHAR_PROTOTYPE       
{       
       
  USART_SendData(EVAL_COM1, (uint8_t) ch);       
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)       
  {}       
       
  return ch;       
}      

 


菜鸟
2014-12-25 13:02:10     打赏
10楼
view plaincopy to clipboardprint?

    /** 
      ****************************************************************************** 
      * @file    EXTI/EXTI_Config/main.c  
      * @author  MCD Application Team 
      * @version V3.5.0 
      * @date    08-April-2011 
      * @brief   Main program body 
      ****************************************************************************** 
      * @attention 
      * 
      * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 
      * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 
      * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 
      * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 
      * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 
      * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 
      * 
      * 
     
        © COPYRIGHT 2011 STMicroelectronics 
     
    ****************************************************************************** 
      */   
      
    /* Includes ------------------------------------------------------------------*/  
    #include "stm32f10x.h"  
    #include "stm32_eval.h"  
    #include "delay.h"  
    #include   
    volatile int flag;  
    #define Set_B20()    GPIO_SetBits(GPIOC, GPIO_Pin_12)      //上拉关闭PC12  
    #define Reset_B20()  GPIO_ResetBits(GPIOC, GPIO_Pin_12)  //下拉打开PC12  
    #define Read_B20()   GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)  //读PC12状态  
    unsigned char Error_Flag=0;  
    unsigned char zf=0;  
    void SysTick_Configuration(void)  
    {  
      /* Setup SysTick Timer for 10 msec interrupts  */  
      if (SysTick_Config(48000))                //SysTick配置  
      {   
        /* Capture error */   
        while (1);  
      }    
     /* Configure the SysTick handler priority */  
      NVIC_SetPriority(SysTick_IRQn, 0x0);                       //SysTick中断优先级  
    }  
      
      
    /** @addtogroup STM32F10x_StdPeriph_Examples 
      * @{ 
      */  
      
    /** @addtogroup EXTI_Config 
      * @{ 
      */   
      
    /* Private typedef -----------------------------------------------------------*/  
    /* Private define ------------------------------------------------------------*/  
    /* Private macro -------------------------------------------------------------*/  
    /* Private variables ---------------------------------------------------------*/  
    GPIO_InitTypeDef   GPIO_InitStructure;  
    USART_InitTypeDef USART_InitStructure;  
    USART_ClockInitTypeDef USART_ClockInitStructure;  
      
    void RCC_Configuration(void)  
    {  
      RCC_DeInit();                 //将外设RCC重新设为缺省值    
          
      RCC_HSICmd(ENABLE);            //使能内部高速晶振    
      while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);      //当SHI晶振就绪则重新设定   
        
      RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);      //设置系统时钟,选择SHI时钟为系统时钟  
        
      RCC_HSEConfig(RCC_HSE_OFF);     //设置外部高速晶振,HSE晶振OFF   
      RCC_LSEConfig(RCC_LSE_OFF);      //设置外部低速晶振,LSE晶振OFF    
          
        //******配置PLL时钟频率为48MHZ*******//  
          
      RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_8);    //RCC_PLLMul_x 即设置PLL时钟频率为 6*x MHz  
          
      //************************************//    
          
      RCC_PLLCmd(ENABLE);             ////*******************使能PLL   
      while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);        //PLL就绪    
      RCC_ADCCLKConfig(RCC_PCLK2_Div4);                     //  ADC时钟=PCLK/2    
      RCC_PCLK2Config(RCC_HCLK_Div1);                       //  APB2时钟=HCLK   
      RCC_PCLK1Config(RCC_HCLK_Div2);            /// APB1时钟=HCLK/2    
      RCC_HCLKConfig(RCC_SYSCLK_Div1);         //  AHB时钟=系统时钟   
      RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);       // 选择PLL为系统时钟    
      while(RCC_GetSYSCLKSource() != 0x08);        //当PLL不是系统时钟   
      
          
    //  SystemInit();  
          
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE); //使能APB2外设时钟/****GPIOD时钟和功能复用IO时钟***/    
     GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG    SW_DP使能    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
     GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;         // //选择设置GPIO管脚   
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  ////设置管脚速率    
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     ////设置管脚工作状态,此为推挽输出    
      GPIO_Init(GPIOD, &GPIO_InitStructure);    //初始化GPIOD   
        GPIO_ResetBits(GPIOD,GPIO_Pin_2);     //上拉关闭蜂鸣器    
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);  
     GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//LED  
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
      GPIO_Init(GPIOC, &GPIO_InitStructure);  
        GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);  
          RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能TIM2时钟  
    }   
      
    void USART_int(long BaudRate)  
    {  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);//使能GPIOA、USART1外设时钟  
           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
        GPIO_Init(GPIOA, &GPIO_InitStructure);  
        /* PA10 USART1_Rx  */  
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
        GPIO_Init(GPIOA, &GPIO_InitStructure);  
      /* USARTx configured as follow: 
            - BaudRate = 115200 baud   
            - Word Length = 8 Bits 
            - One Stop Bit 
            - No parity 
            - Hardware flow control disabled (RTS and CTS signals) 
            - Receive and transmit enabled 
      */  
      USART_InitStructure.USART_BaudRate = BaudRate;//设置USART传输波特率  BaudRate = 9600 可以直接写9600  
      USART_InitStructure.USART_WordLength = USART_WordLength_8b;//一帧传输或者接收的数据位数为8bit  
      USART_InitStructure.USART_StopBits = USART_StopBits_1;//在帧结尾传输一个停止位  
      USART_InitStructure.USART_Parity = USART_Parity_No;//奇偶模式失能  
      USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//硬件流控制失能  
      USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//使能接收发模式  
        USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;    //时钟低电平活动  
        USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;      //引脚时钟输出低电平时钟  
        USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;     //第二个时钟边沿开始捕获数据  
        USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;//最后一位数据的时钟脉冲不从SCLK输出  
        USART_ClockInit(USART1, &USART_ClockInitStructure);  
      USART_Init(USART1, &USART_InitStructure);//USART1初始化  
      USART_Cmd(USART1, ENABLE);//使能USART1时钟外设  
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//使能接受中断  
     USART_Cmd(USART1, ENABLE);  
    }  
      
    void delay_18b20(u32 nus)    //18b20按照严格的时序工作,这是专属延时  
    {  
        u16 i;  
        while(nus--)  
            for(i=12;i>0;i--);  
    }  
      
      
          
    void Init18B20(void)  //18B20初始化  
    {  
       u8 aa=0;  
       u8 count =0;  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能PC时钟  
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;  
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//开漏输出  
      GPIO_Init(GPIOC, &GPIO_InitStructure);  
       Set_B20() ;   // GPIO_SetBits(GPIOC, GPIO_Pin_12)   
       delay_18b20(1);  
       Reset_B20();  
      
       delay_18b20(480);  
       Set_B20();  
    //  delay_18b20(500);  
       delay_18b20(480);  
      
        count=0;  
        aa=Read_B20();         //温度读取  
        /****个人认为限制温度不超过99度,作为一个保护*/  
        while(!aa && count<100)     
       {  
        aa=Read_B20();  
        count++;          //相当一个for()和while结合  
       }  
       if(count>=99)  
            Error_Flag=1;  
        else  
            Error_Flag=0;  
         
    }  
        
    unsigned char Read18B20(void)//按位读取数据  
    {    
    unsigned char i=0;  
    unsigned char date=0;  
    u8 tempp;  
       for(i=8;i>0;i--)  
       {  
      
       Reset_B20();   //打开PC12  
       date>>=1;    //标志右移一位  
       delay_18b20(1);  
       Set_B20();    //关闭  
        delay_18b20(1);  
       tempp=Read_B20();   //读取温度  
      
       if(tempp)  
            date|=0x80;     // 1000 0000   将最高位填1 ,然后右移,每次最高位由0变1,使8位全部传递完毕 0xff = 1111 1111  
        delay_18b20(60);  
        }  
        return(date);  
    }  
    void Write18B20(unsigned char date)//写数据  
    {  
        unsigned char i=0;  
      
        for (i=8; i>0; i--)  
        {  
            Reset_B20();   
            delay_18b20(1);           
            if(date & 0x01)           
            {     
                Set_B20();  
            }  
            else  
            {   Reset_B20();}  
            delay_18b20(60);  
            date>>=1;        
             Set_B20();  
             delay_18b20(1);  
                  
        }  
        delay_18b20(15);  
    }  
      
     float Read_T()//读温度  
    {     
            unsigned char TUp,TDown;  
        unsigned char fTemp;  
        u8 TT=0;  
      
         float Temp = 0;  
        Init18B20();  
        Write18B20(0xcc);       
        Write18B20(0x44);      
        Init18B20();  
        Write18B20(0xcc);     
        Write18B20(0xbe);     
        TDown = Read18B20();      
        TUp = Read18B20();        
          
        if(TUp>0x7f)        
        {  
            TDown=~TDown;    
            TUp=~TUp+1;   
            TUp/=8;            
            zf=1;           
        }  
        else  
            zf=0;       
      
        fTemp=TDown&0x0f;         
        TUp<<=4;  
        TDown>>=4;  
        TT=TUp|TDown;  
        Temp=TT+(float)fTemp/16;          
        return(Temp);  
    }  
                                       
    int main(void)  
    {  
              
      /*!< At this stage the microcontroller clock setting is already configured,  
           this is done through SystemInit() function which is called from startup 
           file (startup_stm32f10x_xx.s) before to branch to application main. 
           To reconfigure the default setting of SystemInit() function, refer to 
           system_stm32f10x.c file 
         */       
             
      /* System Clocks Configuration */  
        char ID[8];  
        int i;  
      RCC_Configuration();  
      USART_int(115200);  
        SysTick_Configuration();  
        printf(" config done...\r\n");  
      delay_ms(1000);  
          
        Init18B20();     //初始化  
        Write18B20(0x33);  //写入读取地址的命令  
        delay_18b20(20);  
        for(i=0;i<8;i++)   //这里必须用for不然 只会输出printf("event 1 oc......\r\n")这句,不会继续运行  
        {  
            ID[i] = Read18B20();//读取地址  
        }  
          
        while(1)  
        {  
            if(flag == 300)  
            {  
                printf("At the moment of ID is:")   ;   
                for(i=0;i<8;i++)     //字符不能直接输出,要按位输出  
            {  
              printf("%u",ID[i]);//输出地址  
            }  
                printf("\r\n")  ;  
            }  
            if(flag == 500)  
            {             
                printf("The Temperature is:%f\r\n",Read_T());//读取温度并输出  
                printf("===================================================\r\n");  
        }  
        }  
    }  
      
      
      
    #ifdef  USE_FULL_ASSERT  
      
    /** 
      * @brief  Reports the name of the source file and the source line number 
      *         where the assert_param error has occurred. 
      * @param  file: pointer to the source file name 
      * @param  line: assert_param error line source number 
      * @retval None 
      */  
    void assert_failed(uint8_t* file, uint32_t line)  
    {   
      /* User can add his own implementation to report the file name and line number, 
         ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
      
      /* Infinite loop */  
      while (1)  
      {  
      }  
    }  
      
    #endif  
      
    /** 
      * @} 
      */   
      
    /** 
      * @} 
      */   
      
    #ifdef __GNUC__  
      /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
         set to 'Yes') calls __io_putchar() */  
      #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
    #else  
      #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
    #endif /* __GNUC__ */  
        
      
      
    /** 
      * @brief  Retargets the C library printf function to the USART. 
      * @param  None 
      * @retval None 
      */  
    PUTCHAR_PROTOTYPE  
    {  
      /* Place your implementation of fputc here */  
      /* e.g. write a character to the USART */  
      USART_SendData(EVAL_COM1, (uint8_t) ch);  
      
      /* Loop until the end of transmission */  
      while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)  
      {}  
      
      return ch;  
    }  
      
    #ifdef  USE_FULL_ASSERT  
      
    /** 
      * @brief  Reports the name of the source file and the source line number 
      *         where the assert_param error has occurred. 
      * @param  file: pointer to the source file name 
      * @param  line: assert_param error line source number 
      * @retval None 
      */  
    void assert_failed(uint8_t* file, uint32_t line)  
    {   
      /* User can add his own implementation to report the file name and line number, 
         ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
      
      /* Infinite loop */  
      while (1)  
      {  
      }  
    }  
      
    #endif  
      
    /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/  


 


共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]