我:女权世界男帝
疯狂敲代码(旧版)

纯牛奶鲜

轻小 |  重幻 设置
瀑布瀑布
从本章开始听

#includestm32f10x.h

#includestdio.h

//延时函数

voiddelay(void)

{

volatileuint32_tcnt=0x20000;

while(cnt--);

}

voidled_init(void)

{

//LED初始化函数

GPIO_InitTypeDefGPIO_InitStruct;//定义结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//打开时钟

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,GPIO_InitStruct);

}

//led按键初始化

voidkey_init(void)

{

GPIO_InitTypeDefGPIO_InitStruct;//定义结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,GPIO_InitStruct);

}

//按键函数

voidkey_anjian(void)

{

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1)//判断按键是否按下

{

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1);//等待按键完成按下并弹起

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==1)//判断引脚状态

{

GPIO_ResetBits(GPIOB,GPIO_Pin_1);

}

else

{

GPIO_SetBits(GPIOB,GPIO_Pin_1);

}

}

}

//NVIC配置函数

voidnvic_init(void)

{

NVIC_InitTypeDefNVIC_InitStruct;//定义结构体

//NVIC配置外部中断0

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//优先级分组配置

NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;

NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;//主优先级,抢占优先级别(0~1)

NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;//子优先级设置,响应优先级别(0~7)

NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;//使能通道

NVIC_Init(NVIC_InitStruct);//初始化,写入

NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;

NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;//主优先级,抢占优先级别(0~1)

NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;//子优先级设置,响应优先级别(0~7)

NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;//使能通道

NVIC_Init(NVIC_InitStruct);//初始化,写入

}

//串口初始化

voidusart_init(void)

{

USART_InitTypeDefUSART_InitStruct;

GPIO_InitTypeDefGPIO_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1,ENABLE);//开启AFIO和USART1的时钟

//PA9-Tx

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;//设置GPIO引脚

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;//设置引脚为浮空输入模式

GPIO_Init(GPIOA,GPIO_InitStruct);//完成引脚PA10配置初始化

//PA10-Rx

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;//设置GPIO引脚

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;//设置引脚为浮空输入模式

GPIO_Init(GPIOA,GPIO_InitStruct);//完成引脚PA10配置初始化

USART_InitStruct.USART_BaudRate=9600;//设置波特率为9600位

USART_InitStruct.USART_WordLength=USART_WordLength_8b;//设置数据长度为8位

USART_InitStruct.USART_Parity=USART_Parity_No;//设置奇偶校验位失能

USART_InitStruct.USART_StopBits=USART_StopBits_1;//设置停止位位

USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//设置硬件流失能

USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//设置串口模式为发送模式与接收模式

USART_Init(USART1,USART_InitStruct);//完成串口配置初始化

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);

USART_Cmd(USART1,ENABLE);//串口失能

}

//定时器TIM2初始化函数72MHZ

voidtim(void)

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStruct;//定义一个定时器

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIM2时钟

TIM_TimeBaseInitStruct.TIM_Period=(10000-1);//ARR数值

TIM_TimeBaseInitStruct.TIM_Prescaler=(800-1);//分频系数

TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数

TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;//重复次数为0,每次溢出更新

TIM_TimeBaseInitStruct.TIM_ClockDivision=0;//时钟分割,技术模式种无意义

TIM_TimeBaseInit(TIM2,TIM_TimeBaseInitStruct);

TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//中断种类设定

TIM_Cmd(TIM2,ENABLE);//计数器开始工作

}

voidusart1_sendbyte(charsendbyte)

{

USART_SendData(USART1,sendbyte);

while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==0);

}

voidusart1_sendstring(char*sendstring)

{

uint8_tcnt=0;

do

{

usart1_sendbyte(*(sendstring+cnt));

cnt++;

}

while(*(sendstring+cnt)!=\0);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==0);

}

//数码管初始化函数,初始化全部引脚

voidled_y(void)

{

GPIO_InitTypeDefGPIO_InitStruct;//定义结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,GPIO_InitStruct);

}

//数码管按键初始化

voidkey_y(void)

{

GPIO_InitTypeDefGPIO_InitStruct;//定义结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,GPIO_InitStruct);

}

//数码管按键右移

voidkey_right(void)

{

//key

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==1)//判断按键按下

{

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==1);//等待按键完成按下并弹起的动作

//右移

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==1)

{

GPIO_ResetBits(GPIOB,GPIO_Pin_7);

GPIO_SetBits(GPIOB,GPIO_Pin_8);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_14);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_7);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

}

}

//数码管按键左移

voidkey_left(void)

{

//key

if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1)//判断按键按下

{

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1);//等待按键完成按下并弹起的动作

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_8);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_7);

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

}

elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==1)

{

GPIO_SetBits(GPIOB,GPIO_Pin_14);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);

}

}

}

intmain(void)

{

//led_init();//led初始化

//key_init();//按键初始化

usart_init();//串口初始化

nvic_init();//NVIC初始化

led_y();//初始化数码管引脚

key_y();//按键初始化

//tim();//时钟初始化

//usart1_sendstring(杨皓添的实验二);

while(1)

{

//key_anjian();

key_right();

key_left();

}

}

中断服务函数:

voidUSART1_IRQHandler(void)

{

uint8_trcv_data=0;

if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==1)

{

USART_ClearITPendingBit(USART1,USART_IT_RXNE);

rcv_data=USART_ReceiveData(USART1);

//usart1_sendbyte(rcv_data);

if(rcv_data==1)

{

//第1位

GPIO_SetBits(GPIOB,GPIO_Pin_0);//低电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_1);

GPIO_ResetBits(GPIOB,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4);

GPIO_SetBits(GPIOB,GPIO_Pin_5);

GPIO_SetBits(GPIOB,GPIO_Pin_6);

GPIO_SetBits(GPIOB,GPIO_Pin_7);//高电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(rcv_data==2)

{

//第2位

GPIO_ResetBits(GPIOB,GPIO_Pin_0);//低电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_1);

GPIO_SetBits(GPIOB,GPIO_Pin_2);

GPIO_ResetBits(GPIOB,GPIO_Pin_3);

GPIO_ResetBits(GPIOB,GPIO_Pin_4);

GPIO_SetBits(GPIOB,GPIO_Pin_5);

GPIO_ResetBits(GPIOB,GPIO_Pin_6);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);//高电位有效

GPIO_SetBits(GPIOB,GPIO_Pin_8);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(rcv_data==3)

{

//第3位

GPIO_ResetBits(GPIOB,GPIO_Pin_0);//低电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_1);

GPIO_ResetBits(GPIOB,GPIO_Pin_2);

GPIO_ResetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4);

GPIO_SetBits(GPIOB,GPIO_Pin_5);

GPIO_ResetBits(GPIOB,GPIO_Pin_6);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);//高电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

GPIO_SetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(rcv_data==4)

{

//第4位

GPIO_SetBits(GPIOB,GPIO_Pin_0);//低电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_1);

GPIO_ResetBits(GPIOB,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);

GPIO_ResetBits(GPIOB,GPIO_Pin_6);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);//高电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

GPIO_SetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(rcv_data==5)

{

//第5位

GPIO_ResetBits(GPIOB,GPIO_Pin_0);//低电位有效

GPIO_SetBits(GPIOB,GPIO_Pin_1);

GPIO_ResetBits(GPIOB,GPIO_Pin_2);

GPIO_ResetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);

GPIO_ResetBits(GPIOB,GPIO_Pin_6);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);//高电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

GPIO_SetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(rcv_data==6)

{

//第6位

GPIO_ResetBits(GPIOB,GPIO_Pin_0);//低电位有效

GPIO_SetBits(GPIOB,GPIO_Pin_1);

GPIO_ResetBits(GPIOB,GPIO_Pin_2);

GPIO_ResetBits(GPIOB,GPIO_Pin_3);

GPIO_ResetBits(GPIOB,GPIO_Pin_4);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);

GPIO_ResetBits(GPIOB,GPIO_Pin_6);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);//高电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

GPIO_SetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(rcv_data==7)

{

//第7位

GPIO_ResetBits(GPIOB,GPIO_Pin_0);//低电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_1);

GPIO_ResetBits(GPIOB,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4);

GPIO_SetBits(GPIOB,GPIO_Pin_5);

GPIO_SetBits(GPIOB,GPIO_Pin_6);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);//高电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_8);

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

GPIO_SetBits(GPIOB,GPIO_Pin_13);

GPIO_ResetBits(GPIOB,GPIO_Pin_14);

}

elseif(rcv_data==8)

{

//第8位

GPIO_ResetBits(GPIOB,GPIO_Pin_0);

GPIO_ResetBits(GPIOB,GPIO_Pin_1);//低电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_2);

GPIO_ResetBits(GPIOB,GPIO_Pin_3);

GPIO_ResetBits(GPIOB,GPIO_Pin_4);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);

GPIO_ResetBits(GPIOB,GPIO_Pin_6);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);

GPIO_ResetBits(GPIOB,GPIO_Pin_8);//高电位有效

GPIO_ResetBits(GPIOB,GPIO_Pin_9);

GPIO_ResetBits(GPIOB,GPIO_Pin_10);

GPIO_ResetBits(GPIOB,GPIO_Pin_11);

GPIO_ResetBits(GPIOB,GPIO_Pin_12);

GPIO_ResetBits(GPIOB,GPIO_Pin_13);

GPIO_SetBits(GPIOB,GPIO_Pin_14);

}

}

}

voidTIM2_IRQHandler(void)

{

if(TIM_GetITStatus(TIM2,TIM_IT_Update)==1)

{

TIM_ClearITPendingBit(TIM2,TIM_IT_Update);

if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==1)

{

GPIO_ResetBits(GPIOB,GPIO_Pin_1);

}

else

{

GPIO_SetBits(GPIOB,GPIO_Pin_1);

}

}

}

飞卢小说,飞要你好看!

自动订阅最新章节
APP听书(免费)
精品有声·人气声优·离线畅听
活动注册飞卢会员赠200点券![立即注册]
上一页 下一页 目录
书架 加入书架 设置
{{load_tips()}}
{{tt_title}}
00:00
00:00
< 上一章
< 上一章
下一章 >
下一章 >
章节加载中