苏嵌学习日志14

学习日志

姓名:唐小玲 日期:2018.7.27

 

 

 

今日学习任务

 

  1. NVIC中断
  2. GPIO串口
  3. 中断与串口的相关程序编写

 

日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

均已完成。

 

日开发中出现的问题汇总

 

初次接触STM32系列的单片机,有点懵,此单片机管脚过多,功能复杂,编程有点困难,有点复杂。

 

日未解决问题

 

 

 

日开发收获

 

1.I/O配置的步骤-输出模式  

定义一个端口结构体变量

  GPIO_InitTypeDef GPIO_InitStructure;

开启端口对应的时钟 RCC_AHB1PeriphClockCmd(RCC_ALL_LED, ENABLE);

填充结构体数据          

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

 /* 设为输出口 */  

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

 /* 设为推挽模式 */  

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

 /* 上下拉电阻不使能 */  

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

/* IO口最大速度 */  

GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED1;

完成初始化

 GPIO_Init(GPIO_PORT_LED1, &GPIO_InitStructure);

2.输出控制

库函数:

• GPIO_SetBits     (GPIOx, GPIO_Pin)

• GPIO_ResetBits (GPIOx, GPIO_Pin)

• GPIO_ToggleBits(GPIOx, GPIO_Pin)

• 寄存器模式:

• GPIOx->BSRRL  = GPIO_Pin;   //置高

• GPIOx->BSRRH = GPIO_Pin;   //置低

• GPIOx->ODR   ^= GPIO_Pin;   //取反

3.输出控制----位带操作

 // 把“位带地址+位序号”转换成别名地址的宏

• #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr & 0x000FFFFF)<<5)+(bitnum<<2))  

 

• // 把一个地址转换成一个指针

• #define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))

 

• // 把位带别名区地址转换成指针

• #define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))  

 

自我评价

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

一些简单的练习能够做出,但是有一些知识点难以理解,不够通透,需要多多实践练习!

 

 

作业

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_36974603/article/details/81253664
今日推荐