自己整理的STM32代码Word格式.docx

上传人:b****5 文档编号:21242510 上传时间:2023-01-28 格式:DOCX 页数:19 大小:20.81KB
下载 相关 举报
自己整理的STM32代码Word格式.docx_第1页
第1页 / 共19页
自己整理的STM32代码Word格式.docx_第2页
第2页 / 共19页
自己整理的STM32代码Word格式.docx_第3页
第3页 / 共19页
自己整理的STM32代码Word格式.docx_第4页
第4页 / 共19页
自己整理的STM32代码Word格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

自己整理的STM32代码Word格式.docx

《自己整理的STM32代码Word格式.docx》由会员分享,可在线阅读,更多相关《自己整理的STM32代码Word格式.docx(19页珍藏版)》请在冰豆网上搜索。

自己整理的STM32代码Word格式.docx

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&

NVIC_InitStructure);

//配置时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

TIM_Cmd(TIM2,DISABLE);

TIM_InitStructure.TIM_Period=3600;

//设置自动装载寄存器,4ms

TIM_InitStructure.TIM_CounterMode=TIM_CounterMode_Up;

//向上计数

TIM_InitStructure.TIM_Prescaler=79;

//预分频

TIM_InitStructure.TIM_ClockDivision=TIM_CKD_DIV1;

//输入内部时钟频率是否倍频

//TIM_InitStructure.TIM_RepetitionCounter=0;

TIM_TimeBaseInit(TIM2,&

TIM_InitStructure);

TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

//开定时中断

TIM_Cmd(TIM2,ENABLE);

//使能timer2

}

USART口初始化程序

#include"

all.h"

//#defineSEND_MODE_DMA//DMA发送方式开关

//#defineUSART1_USE

#defineUSART3_USE

#defineUSART1_RATE4800

#defineUSART2_RATE4800

#defineUSART3_RATE4800

staticvoidInitHw_USART(void);

/********************初始化部分**********************

**初始化硬件包括:

**rcc初始化

**GPIO初始化

**NVIC初始化

**配置初始化:

包括使能、传输模式等

**变量初始化:

**发送和接收缓存区初始化

****************************************************/

staticvoidInitHw_USART(void)

USART_InitTypeDefUSART_InitStructure;

GPIO_InitTypeDefGPIO_InitStructure;

#ifdefUSART2_USE

//配置485收发控制IO(默认接收,低电平)

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(GPIOA,&

GPIO_InitStructure);

GPIO_ResetBits(GPIOA,GPIO_Pin_0);

//使能时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

//中断优先级

NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

//配置接收管脚PA3

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

//配置发送管脚PA2

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

//波特率、字长、停止位、奇偶校验位、硬件流控制、异步串口为默认(被屏蔽字设置)

USART_InitStructure.USART_BaudRate=USART2_RATE;

USART_InitStructure.USART_WordLength=USART_WordLength_8b;

USART_InitStructure.USART_StopBits=USART_StopBits_1;

USART_InitStructure.USART_Parity=USART_Parity_No;

USART_InitStructure.USART_HardwareFlowControl=

USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;

USART_Init(USART2,&

USART_InitStructure);

//开接收中断

USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);

//#ifdefSEND_MODE_DMA

//发送启用DMA模式

//USART_DMACmd(USART2,USART_DMAReq_Tx,ENABLE);

#else

//开发送中断

USART_ITConfig(USART2,USART_IT_TC,ENABLE);

//#endif

//使能USART

USART_Cmd(USART2,ENABLE);

#endif

#ifdefUSART3_USE

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);

NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQChannel;

//配置接收管脚PB11

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;

GPIO_Init(GPIOB,&

//配置发送管脚PB10

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

USART_InitStructure.USART_BaudRate=USART3_RATE;

USART_Init(USART3,&

USART_Cmd(USART3,ENABLE);

//-------------------------------------------------------------------------

u16k=0;

voidInit_USART(void)//此函数在Sys_Cfg()中初始化

InitHw_USART();

intmain(void)

{

//系统初始化

Sys_Cfg();

g_CardErrCode=Init_SD();

//SD检测标志位,g_CardErrCode=0表示SD卡正常,为g_CardErrCode=1表示SD卡有问题

/*铁电检测程序*/

WriteData_FRAM(us0,0x1000,10,NULL,0);

Delay1us(10000);

ReadData_FRAM(us1,0x1000,10,NULL,0);

//WriteSendBuf_USART(us0,10,3);

GPIO_SetBits(GPIOE,GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13

|GPIO_Pin_14|GPIO_Pin_15);

RdDisplay_LED();

//数码管显示函数

while

(1)

{

USART_SendData(USART3,0xbb);

k=USART_ReceiveData(USART3);

Delay1us(10);

k=0;

}

我用的是USART3,其余的USART口都一样,在网上的代码大多都不是很全,上述相关代码是我自己测试时编写的,拿过来就可以用,需要传输大量数据时自己做个函数就可以了。

方便大家学习。

STM32的SPI配置程序(此程序只是个STM32的配置程序,没有接外围器件所以片选位可以用)

staticvoidInitHw_SPI(void)

SPI_InitTypeDefSPI_InitStructure;

#ifdefSPI1_USE

//输出时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|

RCC_APB2Periph_SPI1,ENABLE);

SPI_Cmd(SPI1,DISABLE);

GPIO_SetBits(GPIOA,GPIO_Pin_4);

NVIC_InitStructure.NVIC_IRQChannel=SPI1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;

//配置片选

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;

//配置3线制IO

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

//配置SPI模式:

主、双向、8位、模式0、软件片选(3线制)、18M波特率

SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode=SPI_Mode_Master;

SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;

SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;

SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_8;

SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial=7;

SPI_Init(SPI1,&

SPI_InitStructure);

//无效片选

//禁止CRC

SPI_CalculateCRC(SPI1,DISABLE);

//SPI_ITConfig(SPI1,SPI_IT_RXNE,ENABLE);

//使能SPI

SPI_Cmd(SPI1,ENABLE);

#ifdefSPI2_USE

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);

NVIC_InitStructure.NVIC_IRQChannel=SPI2_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

主、双向、8位、模式3、软件片选(3线制)、18M波特率

SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4;

SPI_Init(SPI2,&

//片选

GPIO_SetBits(GPIOB,GPIO_Pin_12);

SPI_CalculateCRC(SPI2,DISABLE);

//SPI_ITConfig(SPI2,SPI_IT_RXNE,ENABLE);

SPI_Cmd(SPI2,ENABLE);

PWM初始化

/*************************************************/

//代码在PA1引脚上产生一个10K左右50%占空比的方波输出

voidTIM_Configuration(void)

TIM_TimeBaseInitTypeDefTIM_TimeBaseSturcture;

TIM_OCInitTypeDefTIM_OCInitStructure;

GPIO_InitTypeDefGPIO_InitStructure;

/*开启GPIOA时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

/*开启TIM2时钟*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

/*初始化PA1,TIM2-CH2通道*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&

/*TIM2基本初始化*/

TIM_TimeBaseSturcture.TIM_Period=512;

/*周期0~FFFF*/

TIM_TimeBaseSturcture.TIM_Prescaler=12;

/*时钟分频*/

TIM_TimeBaseSturcture.TIM_ClockDivision=0;

/*时钟分割*/

TIM_TimeBaseSturcture.TIM_CounterMode=TIM_CounterMode_Up;

/*模式*/

TI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1