自己整理的STM32代码Word格式.docx
- 文档编号:21242510
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:19
- 大小:20.81KB
自己整理的STM32代码Word格式.docx
《自己整理的STM32代码Word格式.docx》由会员分享,可在线阅读,更多相关《自己整理的STM32代码Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自己 整理 STM32 代码