第五章第一个
#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);
}
第七章第二个可以组合前面几个