初级会员

- 积分
- 100
- 金钱
- 100
- 注册时间
- 2017-9-13
- 在线时间
- 18 小时
|
1金钱
#include "stm32f10x.h"
#define P5J GPIO_Pin_6
int PP;
void Delay(u32 count)
{
u32 i=0;
for(;i<count;i++);
}
//void NVv(void)
//{
// NVIC_InitTypeDef AA;
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
// AA.NVIC_IRQChannel = USART1_IRQn;
// AA.NVIC_IRQChannelPreemptionPriority=2 ;//抢占优先级 3
// AA.NVIC_IRQChannelSubPriority = 2; //子优先级 3
// AA.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道使能
// NVIC_Init(&AA); //根据指定的参数初始化 VIC 寄存器
//}
void lykey(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
//① 串口时钟使能, GPIO 时钟使能,复用时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能 USART1, GPIOA 时钟以及复用功能时钟
//②串口复位
USART_DeInit(USART1); //复位串口 1
//③GPIO 端口模式设置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 PA9
//USART1_RX PA.10
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 PA10
//④串口参数初始化
USART_InitStructure.USART_BaudRate = 9600;//一般设置为 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为 8 位数据格式
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_Init(USART1, &USART_InitStructure); //初始化串口
//⑤初始化 NVIC
// NVv();
//⑤开启中断
//USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断
//⑥使能串口
USART_Cmd(USART1, ENABLE); //使能串口
}
void led1(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口时钟
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度为 50MHz
GPIO_InitStructure.GPIO_Pin = P5J; //LED1-->PE.5 端口配置, 推挽输出
GPIO_Init(GPIOE, &GPIO_InitStructure); //推挽输出 , IO 口速度为 50MHz
GPIO_SetBits(GPIOE,P5J); //PE.5 输出高
}
int main(void)
{
Delay(3000000); //开始延时
led1();
GPIO_ResetBits(GPIOE,P5J); //是否运行
lykey();
while(1)
{
USART_SendData(USART1,0X15);//向串口 1 发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
Delay(3000);
}
}
1串口发送数据到电脑端能正常发送 如果按下板子上的复位键之后 整个程序就不运行 了,我在初始化的时候加了一个LED灯
2电脑端时串口调试助手
3如果关闭调试助手,复位之后,在打开就能运行了
QQ:2675883147
|
|