电控学习(更新ing

按键输入:

(28条消息) 51单片机学习笔记3 -- 按键输入检测_GenCoder的博客-CSDN博客_51单片机按键检测

1)知识点://_crol_是循环左移,_cror_是循环右移

2) GPIO输入操作:

 3)编写步骤

按键扫描思路:

1)支持连续按,即对电平触发效应

2)不支持连续按,即对边沿触发效应(上升沿或下降沿)

按键点灯:

(28条消息) STM32_按键点灯_浅白杨的博客-CSDN博客_stm32按键点灯

-------------------------------------------------------------------------------------------------------------------------------

CAN总线:

1)CAN基础知识:

(37条消息) 秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!_Wireless_Link的博客-CSDN博客_报文标识符

(注:ID号仲裁是从高位开始逐位比较,ID号越小的其高位为0的bit会越多,因此会盖掉高位为1的其他ID。二进制比较两个数的大小最快的速度就是从最高位开始比。)

 (通信:听、说、语言、信息) 

(电机:速度下降,力矩变大(转数比))

2)CAN形象讲解:

3)配置

节点间使用约定好的波特率进行通讯(CAN总线上的波特率必须相同!!!)

---------------------------------------------------------------------------------------------------------------------------------

 pid控制电机

1)pid各项的作用

P---比例(始终阻止物块远离平衡位置)   I---误差积分    D---微分(相当于阻力)

2)运行逻辑

3)pid参数调定

占空比(pwm):
  占空比是指高电平持续时间比一个周期持续的时间。

---------------------------------------------------------------------------------------------------------------------------------

正点原子:

1)CM3芯片结构

2)stm32命名规则

  新建工程模板:

-------------------------------------------------------------------------------------------------------------------------------

GPIO的八种工作模式:

1.

2. 

 3.

 4.

5. 

 (当输出端为1时,输出结果由外部电阻决定,当输出端为0时,输出结果为0)

 6.

 7.

(当输出端为1时结果就为1,输出端为0时,结果为0)

8. 

---------------------------------------------------------------------------------------------------------------------------------

寄存器:我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射

1)系统框图:

( 程序内核要读取这些指令来执行程序就必须通过 ICode 总线)

(DCode 中的 D 表示 Data,这条总线是用来取数的)

系统总线主要是访问外设的寄存器)

(DMA 总线也主要是用来传输数据)

2)存储器映射:

存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称
为存储器映射
3)存储区区域功能划分:

 4)电平的实现

10位置输出高电平: 

 10位置输出低电平:(先取反再与)

---------------------------------------------------------------------------------------------------------------------------------

编写跑马灯实验:

编写步骤:

注意:

 编写函数:(led.c)

 (main.c)

 --------------------------------------------------------------------------------------------------------------------------------蜂鸣器

1)硬件连接:image.png

1.直接通过三极管来驱动,三极管主要是用来放大电流

2.为了避免蜂鸣器在GPIO初始化之前响,一般都会给基极加一个比较大的下拉电阻。

 (31条消息) STM32F103单片机驱动蜂鸣器_嵌入式@hxydj的博客-CSDN博客_蜂鸣器驱动

2)编写步骤:

 --------------------------------------------------------------------------------------------------------------------------------

时钟系统:

1)时钟系统框图:

2)知识点总结:

3)RCC相关配置寄存器

1.时钟控制寄存器(RCC_CR)   //HSI,HSE,CSS,PLL等的使能和就绪标志位

2.时钟配置寄存器(RCC_CFGR)   /PLL等的时钟源选择,分频系数设定

Systick滴答定时器:

1)一个24位的倒计数定时器,计到0时,将从RELOAD寄存器中自动重装载定时初值。在使能位不被清除的情况下,会一直工作。

2)Systick相关寄存器

1.控制和状态寄存器-CTRL 对于STM32,外部时钟源是HCLK(AHB总线时钟1/8内核时钟是HCLK时钟)。

2. SysTick重装载数值寄存器-LOAD

当倒数至零时,将被重装载的值。

3.SysTick当前值寄存器- VAL    

读取时返回当前倒计数的值,写它则使之清零,同时还会清除在SysTick控制及状态寄存器中的COUNTFLAG标志。

3)固件库中的Systick相关函数:

1.SysTick CL KSourceConfig() //Systick时 钟源选择misc.c文件中

2.SysTick Config(uint32_ t ticks)//初始化systick,时钟为HCLK,并开启中断//core ; cm3.h/core_ cm4.h文件中

4.初始化延迟函数:delay_init()------计算每个ms/us需要的systick时钟数

5.delay_ms/us 函数   ------用来延时指定的 ms/us,其参数 nms/nus 为要延时的微秒/毫秒数。

注意://delay_us可以在ucos下使用,而且准确度很高,更重要的是没有占用额外的定时器.
//delay_ms在ucos下,可以当成OSTimeDly来用,在未启动ucos时,它采用delay_us实现,从而准确延时

--------------------------------------------------------------------------------------------------------------------------------

端口复用和重映射

1.端口复用: 当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。

2.端口复用配置过程:(以PA9,PA10配置为串1为例)

3.端口重映射:一个外设的引脚除了具有外设引脚重映射的概念,即一个外设的引脚除了具有把这个外设的引脚映射到其它的端口。

 4.引脚重映射配置过程( 串口1为例):

 (注意:

-------------------------------------------------------------------------------------------------------------------------------- 

NVIC中断

1.NVIC中断优先级分组

 2.抢占优先级&响应优先级区别:(抢占优先级可以打断,响应优先级不能打断)

 (注意:一:般情况下,系统代码执行过程中,只设置一次中断优先级分组,避免中断管理混乱)

3.中断优先级设置步骤

 --------------------------------------------------------------------------------------------------------------------------------串口通信:

1.通信的两种方式:

1)并行通信:数据各个位同时传输,速度快,占用引脚资源多

2)串行通信:数据按位顺序传输,速度相对较慢占用引脚资源少(同步通信【带时钟】,异步通信【波特率】)

注意:大容量STM32F10x系列芯片,包含3个USART(同步通信)和2个UART(异步通信)

2.定义的参数:

 3.串口通信过程:

串口寄存器:

1)USART SR状态寄存器(标识状态数据)

位5:RXNE,若串口接收到了数据,则该位被置位

位6:TC,数据发送完成后,该位被置1

2)USART DR数据寄存器(读写数据)

位DR【8:0】(数据值)

3)USART BRR波特率寄存器

【3:0】定义小数部分

【15:4】定义整数部分

4)USART_CR1控制寄存器1(发送接收使能位)

比特率计算方法:

 串口配置一般步骤:

代码实操:

 串口通信实验

1)代码讲解(结合串口实验的代码程序)

 (注意:printf的发送串口在usart.c里面的fputc函数里面改)

 外部中断: 

(28条消息) STM32-外部中断详解_KevinFlyn的博客-CSDN博客_stm32外部中断

 外部中断库函数配置一般步骤
①初始化IO口为输入。
       GPIO_Init();

②开启IO口复用时钟。

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

③设置IO口与中断线的映射关系。
        void GPIO_EXTILineConfig();

④初始化线上中断,设置触发条件等。
       EXTI_Init();

⑤配置中断分组(NVIC),并使能中断。
       NVIC_Init();

⑥编写中断服务函数。

      EXTIx_IRQHandler();

⑦清除中断标志位
      EXTI_ClearITPendingBit();

代码编写如下:

 看门狗实验

1)看门狗概念:

用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗"(watchdog),为了保护芯片避免其进入死循环(或者说程序跑飞)

2)看门狗解决的问题:

1.在启动正常运行的时候,系统不能复位。

2.在系统跑飞(程序异常执行)的情况,系统复位,程序重新执行。

3)stm32看门狗类型

1.独立看门狗

(35条消息) 实验6:独立看门狗实验_泪无痕z的博客-CSDN博客_看门狗实验

( :键寄存器(IWDG(KR):

【15:0】:键值:1.软件必须以一定的间隔写入OxAAAA(喂狗)2.写入0x5555表示允许访间[IWDG_PR和WDG_RLR寄存器。3.写入0xCCCC,启动看门狗工.作(若选择了硬件看门狗不受此命令字限制)。

独立看门狗超时时间:

 独立看门狗操作库函数:

 独立看门狗操作步骤:

 代码操作:

iwdg.

主函数: 

窗门看门狗实验:

1)概念:窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。(而独立看门狗限制喂狗时间在0-X内,x由相关寄存器决定。喂狗的时间不能过晚。

2)窗口看门狗框图:

3)工作过程 :

 3)超时时间:

 4)涉及的寄存器有:

控制寄存器(WWDG_CR):

位7:激活位(1为启用看门狗)

位【6:0】:7位计数器的值(喂狗)

配置寄存器(WWDG_CFR):

【6:0】:上窗口的值

【8:7】:时基(预分频器值)

位9:提前唤醒中断使能位(此位若置1,则当计数器值达到0时,即产生中断)

状态寄存器(WWDG_SR):

位0:提前唤醒中断标志位(当计数器值达到40h时,此位由硬件置'1’。

5)窗口看门狗实验一般步骤:

-------------------------------------------------------------------------------------------------------------------------------- 

三种定时器(STM32F10x系列总共最多有8个定时器

1)

2)通用定时器功能特点: 

 3)计数器模式:

 4)通用定时器工作过程:(内部时钟运用最多)

5)通用定时器的计算方法

6)常用计数器

1.控制寄存器 1TIMx_CR1)

位4:0:向上计数器,1:向下计数器

位0:使能位

2.DMA/中断使能寄存器 (TIMx_DIER

0位:更新中断允许位(置1)

3.预分频寄存器(TIMx_PSC

该寄存器用于设置对时钟进行分频,然后提供给计数器,作为计数器的时钟。计数器的时钟频率CK_CNT等于fCK_Psc/(PSC[15:0]+1)。

4.计数器(TIMx_CNT)

十六位寄存器,寄存当前值

5.自动重装载寄存器(自动重装载寄存器)

寄存自动重装载的值

7)常用库函数

 8)定时器中断实现步骤

 PWM输出实验

1)基础知识:对脉冲宽度的控制。

2)工作过程:

3) PWM模式1& PWM模式

4)自动重装载的预装载寄存器

 ARPE=1,ARR立即生效;APRE=0,ARR下个比较周期生效。

例子: 5)库函数

 6)代码编写步骤

 STM32 ADC

1)概念:模数转换,典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

2)STM32F10x ADC特点:

(注:其中144脚芯片因为带PF脚,所以多5个通道,为21个外部通道。小于144脚芯片只有16个外部通道。)

3)通道:

 图解:

4)STM32F1的ADC的各通道可以单次,连续,扫描或者间断模式执行。

1.单次转化:只执行一次,可通过ADC_CR2寄存器的ADON位(适用于规则通道)和外部触发(适用于规则通道和注入通道),这时CONT位为0。 

2.连续转化:当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。

3.扫描模式:ADC_CR1 的 SCAN 位,该位用于设置扫描模式,由软件设置和清除,如果设置为 1,则 使用扫描模式,如果为 0,则关闭扫描模式。在扫描模式下,由 ADC_SQRx 或ADC_JSQRx 寄存器选中的通道被转换。(如果设置了 EOCIE JEOCIE,只在最后一个通道转换完毕后才会产生 EOC JEOC 中断)

5)ADC中断:

 6)时钟配置:

1.时钟配置寄存器(RCC_CFGR)

注:不要让ADC时钟超14MH,否则可能不准(调用RCC_ADCCLKConfig(RCC_PCLK2_Div6)函数)

2.ADC_CR1寄存器

位19:16:双模式选择(0000独立模式

3.ADC_CR2寄存器

位11:数据对齐(左对齐或右对齐

位1:转换模式(0单次,1连续

位0:A/D转换器

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值