学习日志

姓名:    王晨晨                   日期:  7.26

今日学习任务

通过查询固件库编程点亮一个LED灯,并使其定时1秒,亮灭一次。

今日任务完成情况

已完成

今日开发中出现的问题汇总

今日未解决问题

今日开发收获

SysTick:系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。

函数SysTick_Config()是属于CMSIS里面的一个函数,实现配置如下
- 函数的参数是重载寄存器reload要赋予的初值
- 配置嘀嗒定时器的优先级是最低优先级15
- 配置HCLK作为系统的时钟源
- 使能嘀嗒定时器中断
- 启动嘀嗒定时器计数

可以在调用函数SysTick_Config()后通过函数 SysTick_CLKSourceConfig()更改嘀嗒定时器的时钟源为HCLK/8。

可以在调用函数SysTick_Config()后通过函数 NVIC_SetPriority()修改优先级。

NVIC_IROChannel:用来设置中断源。

 GPIO_SetBits(GPIOx,GPIO_Pin_x)就可以实现对GPIO
x的pinx位为高电平

自我评价

自己在固件库中找有点难。

其它

代码:

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
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值