今日学习任务 | 今天主要学习了 1.外部中断函数的概述和外部函数常用库函数 2.学习了外部中断的一般配置过程和步骤 |
今日任务完成情况 | 今天基本完成老师上课时候演示的闪烁LED灯的程序 学习了外部中断函数的概述和外部函数常用库函数和外部中断的一般配置过程和步骤 学习使用了SysTick:系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器 可以在调用函数SysTick_Config()后通过函数 NVIC_SetPriority()修改优先级。 NVIC_IROChannel:用来设置中断源。 GPIO_SetBits(GPIOx,GPIO_Pin_x)就可以实现对GPIO |
今日开发中出现的问题汇总 | 对于函数库的使用还不是很了解,很多时候不能正确理解函数的功能和对其进行调用 |
今日未解决问题 | 无 |
今日开发收获 | 单片机功能的开发仍需建立在熟练的编程能力和算法理解上,在今天的学习中,对单片机不同功能的实现有进一步了解 |
自我评价 | 今天在程序编写和调试过程中认识到了自己的众多不足,尤其在程序实现方面还需要更多的努力,还要试着多去了解新接触的单片机的指导书和功能 |
其他 | 无 |
main.c
#include "stm32f4xx.h"
#include "bsp_led.h"
#include "bsp_systick.h"
#include "bsp_usart.h"
void delay(uint32_t t)
{
for(;t!=0;t--)
;
}
int main(void)
{
GPIO_LED_Config();
SysTick_Init();
USART_Config();
while(1)
{
printf("\r\n 苏嵌欢迎您 \r\n");
delay(0xfffffff);
}
}
bsp_usart.c
#include "bsp_usart.h"
void USART_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_AHB1PeriphClockCmd(USART_GPIO_CLK, ENABLE);
RCC_APB2PeriphClockCmd(USART_CLK,ENABLE);
GPIO_PinAFConfig(USART_GPIO_PORT,USART_TX_PIN,USART_AF);
GPIO_PinAFConfig(USART_GPIO_PORT,USART_RX_PIN,USART_AF);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(USART_GPIO_PORT,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_Init(USART_GPIO_PORT, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = USART_BAUDRATE;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_Init(USART,&USART_InitStructure);
//NVIC_Configuration();
USART_Cmd(USART,ENABLE);
}
int fputc(int ch, FILE *f)
{
USART_SendData(USART, (uint8_t)ch);
while(USART_GetFlagStatus(USART, USART_FLAG_TXE)==RESET);
return ch;
}
bsp_usart.h
#ifndef _BSP_USART_H
#define _BSP_USART_H
#include "stm32f4xx.h"
#include <stdio.h>
#define USART_GPIO_CLK RCC_AHB1Periph_GPIOA
#define USART_CLK RCC_APB2Periph_USART1
#define USART_GPIO_PORT GPIOA
#define USART_TX_PIN GPIO_PinSource9
#define USART_RX_PIN GPIO_PinSource10
#define USART_AF GPIO_AF_USART1
#define USART_BAUDRATE 115200
#define USART_IRQ USART1_IRQn
#define USART_IRQHandler USART1_IRQHandler //USART1_IRQHandler
#define USART USART1
void USART_Config(void);
#endif