国民N32G430C8L7型号MCU学习笔记

官方网站:
https://www.nationstech.com/zlxz369/index.html
资料获取(打开文件管理的地址栏复制输入回车即可)
ftp://download.nationstech.com/1-Microcontrollers/

使用的芯片型号是N32G430C8L7
本文章是个人学习阶段的笔记,主要是写一些基本外设使用需要的主要步骤,第一次上传,写的比较杂乱,还结合了一些stm32的图片和理解,如果有人看到,轻喷。

GPIO

1.开启时钟
2.输入模式等配置 (默认浮空输入)

置高电平:GPIO_PBC_Pins_Reset(GPIOx, Pin);
置低电平:GPIO_Pins_Set(GPIOx, Pin);

EXTI

EXTI和NVIC都不需要手动开启时钟,NVIC是内核外设
第一步:配置RCC,将涉及到的外设的时钟都打开:GPIO AFIO
第二步:配置GPIO,选择对应端口为输入模式
第三步:配置AFIO,选择我们用的这一路GPIO,连接到后面的EXTI AFIO是APB2总线上的外设 这个只是中断引脚选择,选择的是PA还是PB或者PC,且是16个GPIO外设的哪一个引脚
配置AFIO中断引脚选择的函数是放在GPIO.h文件中的

第四步:配置EXTI,选择边沿触发方式,比如上升沿、下降沿或者双边沿
选择触发响应方式,可以选择中断响应和事件响应 在EXTI.h 文件中找

第五步:配置NVIC,给我们这个中断选择一个合适的优先级,最后通过NVIC,外部

抢占式优先级的级别更高
优先级寄存器,值越小,优先级越高
相同的Pin不能同时触发中断 如:PA0、PB0、PC0
中断响应是正常的流程,引脚电平触发中断
事件响应不会触发中断,而是触发别的外设操作,属于外设间的联合工作 中断信号不会通向CPU
EXTI基本结构中的其他外设就是事件响应
按键事件一般不建议用外部中断,可以直接使用定时函数来循环判断,主循环判断也是一样的

Rising上升沿触发
Falling下降沿触发

通道5-9与 10-15的中断函数是同一个,所以使用时需要判断具体的标志位

定时器中断

第一步:开启时钟
第二步:选择时钟源
第三步:配置时基单元,用一个结构体就能配置
第四步:配置输出中断控制,运行更新中断输出到NVIC
第五步:配置NVIC,在NVIC中打开定时器中断的通道,并分配一个优先级
第六步:写中断函数

为什么在初始化的时候要手动清除一次中断标志位,因为有一个立刻进行预分频的功能

PWM

第一步,RCC开启时钟,把需要的TIM外设和GPIO外设的时钟打开
//因为用到了GPIO口的输出,且要配置复用推挽输出
第二步:配置时基单元,包括前面的时钟源选择
第三步:配置输出比较单元,包括:CCR的值、输出比较模式、极性选择、输出使能

第四步:配置GPIO,把PWM对应的GPIO口,初始化为复用推挽输出的配置
第五步:运行控制,启动计数器

输出的GPIO口要改成复用推挽输出
基本定时器没有这个输出比较功能
通用定时器和高级定时器都有4个输出比较的通道,可以同时输出四路PWM波形,这四个通道有各种的CCR寄存器,但是是共用一个CNT计数器的,高级定时器前三个输出比较通道还额外具有死区生成和互补输出的功能,这个是用于驱动三相无刷电机的 最后一个比较通道和通用定时器一样
极性选择:写0就不翻转,写1输出的电平就会翻转 这里的电平就是输入信号的高低电平

输入捕获

第一步:RCC开启时钟,把GPIO和TIM的时钟打开

第二步:GPIO初始化,把GPIO配置成输入模式,一般选择上拉输入或者浮空输入
第三步:配置时基单元,让CNT计数器在内部时钟的驱动下自增运行
第四步:配置输入捕获单元,包括滤波器、极性、直连通道还是交叉通道、分频器这些
第五步:选择从模式的触发源,触发源选择TI1FP1
第六步:选择触发之后执行的操作,执行Reset操作,这里调用一个库函数就可以
最后:上面配置好后,调用TIM_Cmd()函数,开启定时器

ADC

  1. 开启RCC时钟,包括ADC和GPIO的时钟 ADCCLK的分频器也要配置一下
  2. 配置GPIO,把需要用的GPIO配置成模拟输入的模式
  3. 配置多路开关,把通道接入到规则组列表里
  4. 配置ADC转换器
  5. 开关控制(软件触发):开启ADC 如果需要使用DMA,单独开启ADC的DMA通道

DMA

DMA转运开始的三个条件:
1.传输计数器大于0
2.触发源有触发信号(软件触发不需要,软件触发的话,使能DMA就自动开始转运了)
3.DMA使能

触发源,必须有触发信号 传输计数器自减一次,当传输计数器等于0,且没有自动重装时,这时无论是否触发,DMA都不会再进行转运了,此时就需要DMA_Cmd,给DISABLE,关闭DMA,再为传输计数器写入一个大于0的数,再DMA_Cmd,给ENABLE,开启DMA,DMA才能开始工作 注意:写传输计数器时,必须要先关闭DMA,再进行,不能在DMA开启时,写传输计数器,这是手册里的规定

DMA配置步骤:
1.RCC开启DMA的时钟、配置GPIO口等
2.直接调用DMA_Init,初始化这里的各个参数:包括外设和存储器站点的起始地址、数据宽度、地址是否自增、方向、传输计数器、是否需要自动重装、选择触发源还有通道优先级
3.如果选择的是硬件触发,不要忘了在对应的外设调用一下XXX_DMACmd,开启一下触发信号的输出,如果需要DMA的中断,那就调用DMA_ITConfig,开启中断输出,再在NVIC里,配置相应的中断通道,然后写中断函数就行了,中断的配置和各个外设都一样
4.最后在运行的过程中,如果转运完成,传输计数器清0了,这时再想给传输计数器赋值的话,就DMA失能、写传输计数器、DMA使能,这样就行了

想使用DMA的外设,在该外设初始化的时候也要打开一下和DMA建立连接的通道
软件触发:就是一旦DMA_Cmd使能之后自动转换
注意:外设和存储器的参数名是不一样的 注意区分MEM和PERIPH
1.配置时钟 如果是要和ADC联动的话,adc对应的GPIO口得配置成模拟输入的模式

2.配置初始化结构体和使能对应通道

函数中的通道是一一对应的

使能和开始转运

如果是软件触发的话,因为不能使用循环模式,所以只能转运一次,如果要连续转运的话,需要先失能DMA,然后重新设置计数器的值,再使能

存储器到存储器之间的转运主要就是下面的代码

串口

1.开启时钟,包括USART和GPIO的时钟
2.GPIO初始化,TX配置为复用推挽输出 RX配置为输入
3.配置USART 使用一个结构体,就都配置好了
4.看情况选择开启配置中断
5.使能

DR寄存器-> DAT

作者:Ruan8686

物联沃分享整理
物联沃-IOTWORD物联网 » 国民N32G430C8L7型号MCU学习笔记

发表回复