stm32课本第五、六、七章部分示例代码

第五章第一个

#include "stm32f10x.h"
void LED0_Config(void);
void LED0_On(void);
void LED0_Off(void);
void Delay(unsigned long x);



 int main(void)
 {	
		LED0_Config();
	  while(1){
			LED0_On();
			Delay(0x5FFFFF);
			LED0_Off();
			Delay(0x5FFFFF);
		}
 }
 
 
 void LED0_Config(void){
	 GPIO_InitTypeDef GPIO_InitStructure;
	 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
	 
	 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
	 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStructure);
	
 }
 
 void LED0_On(void){
	 GPIO_ResetBits(GPIOA,GPIO_Pin_8);
 }
 
 
  void LED0_Off(void){
	 GPIO_SetBits(GPIOA,GPIO_Pin_8);
 }
 
 
 void Delay (unsigned long x){
	 unsigned long i;
	 for(i=0;i<x;i++);
	 
 }
 

第五章第二个

#include "stm32f10x.h"
void LED0_Config(void);
void LED0_On(void);
void LED0_Off(void);
void KEY0_Config(void);
unsigned int Key0_Read(void);
 int main(void)
 {	
		unsigned int key_no=0;
	  LED0_Config();
	  KEY0_Config();
	  LED0_Off();
	  while(1){
			key_no=Key0_Read();
			if(key_no)
				LED0_On();
			else
				LED0_Off();
		}
 }
 void LED0_Config(void){
	 GPIO_InitTypeDef GPIO_InitStructure;
	 
	 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
	 
	 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
	 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStructure);
	
 }
 void LED0_On(void){
	 GPIO_ResetBits(GPIOA,GPIO_Pin_8);
 }
   void LED0_Off(void){
	 GPIO_SetBits(GPIOA,GPIO_Pin_8);
 }
  void KEY0_Config(void){
	 GPIO_InitTypeDef GPIO_InitStructure;
	 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC,ENABLE);
	 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
	 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
	 GPIO_Init(GPIOC,&GPIO_InitStructure);
	
 }
 unsigned int Key0_Read(void){
	 if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5))
		 return 1;
	 else
		 return 0;
 }

第六章第一个

#include "stm32f10x.h"
#include "stdio.h"
//#pragma import(__use_no_semihosting)
#define ITM_Port8(n)   (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)  (*((volatile unsigned short *)(0xE0000000+4*n)))
#define ITM_Port32(n)  (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR          (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA   0x01000000

struct __FILE
{  
	int handle;
};
FILE __stdout;

FILE __stdin;

int fputc(int ch,FILE *F){
	if(DEMCR & TRCENA){
			while(ITM_Port32(0)==0);
			ITM_Port8(0)=ch;
	}
	return ch;
}
unsigned int CountOfToggle=0;
void LED0_Config(void);
void LED0_On(void);
void LED0_Off(void);
void TIM2_Delay500MS(void);

int main (void){
	LED0_Config();
	TIM_DeInit(TIM2);
	while(1){
		
		
		LED0_On();
		TIM2_Delay500MS();
		CountOfToggle++;
		printf("The Count of Toggle is %d\n",CountOfToggle);
		LED0_Off();
		TIM2_Delay500MS();
		CountOfToggle++;
		printf("The Count of Toggle is %d\n",CountOfToggle);
		
	}
}

void LED0_Config(void){
	 GPIO_InitTypeDef GPIO_InitStructure;
	 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
	 
	 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
	 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStructure);
	
 }

  void LED0_On(void){
	 GPIO_ResetBits(GPIOA,GPIO_Pin_8);
 }
 
   void LED0_Off(void){
	 GPIO_SetBits(GPIOA,GPIO_Pin_8);
 }
	 
 void TIM2_Delay500MS(){
	 
	 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	 RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2,ENABLE);
	 TIM_TimeBaseStructure.TIM_Prescaler=36000-1;
	 TIM_TimeBaseStructure.TIM_Period=1000-1;
	 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
	 TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
	 TIM_ClearFlag(TIM2,TIM_FLAG_Update);
	 TIM_Cmd(TIM2,ENABLE);
	 while(TIM_GetFlagStatus(TIM2,TIM_FLAG_Update)==RESET);
	 
	 
 }
 

第六章第二个,偷懒

第七章第一个

#include "stm32f10x.h"
void LED0_Config(void);
void KEY0_Config(void);
void EXTI_Config(void);
void NVIC_Config(void);




 
 void EXTI_Config(void){
	 EXTI_InitTypeDef EXTI_InitStructure;
	 RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO,ENABLE);
	 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
	 EXTI_InitStructure.EXTI_Line=EXTI_Line5;
	 EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
	 EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
	 EXTI_InitStructure.EXTI_LineCmd=ENABLE;
	 EXTI_Init(&EXTI_InitStructure);
 }
 
 void NVIC_Config(void){
	 NVIC_InitTypeDef NVIC_InitStructure;
	 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
	 NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;
	 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
	 NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
	 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
	 NVIC_Init(&NVIC_InitStructure);
	  
 }
 
 
 
 
 void LED0_Config(void){
	 GPIO_InitTypeDef GPIO_InitStructure;
	 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
	 
	 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
	 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStructure);
	
 }
 
 
  void KEY0_Config(void){
	 GPIO_InitTypeDef GPIO_InitStructure;
	 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC,ENABLE);
	 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
	 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
	 GPIO_Init(GPIOC,&GPIO_InitStructure);
	
 }

  int main(void)
 {	
		LED0_Config();
	  KEY0_Config();
		EXTI_Config();
		NVIC_Config();
	  while(1);
 }

第七章第二个可以组合前面几个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值