资源简介
都在一个main.c里,一次编译就能通过,适合新手,按照注释的引脚无脑接线就能看现象
代码片段和文件信息
#include “stm32f10x.h“
#include
#define USART1_REC_LEN 200 //串口1定义最大接收字节数 200
#define USART2_REC_LEN 200 //串口2定义最大接收字节数 200
#define EN_USART1_RX 1 //使能(1)/禁止(0)串口1接收
#define EN_USART2_RX 1 //使能(1)/禁止(0)串口2接收
static u8 fac_us=0; //us延时倍乘数
static u16 fac_ms=0; //ms延时倍乘数在ucos下代表每个节拍的ms数
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif
void delay_init()
{
u32 reload;
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8
fac_us=SystemCoreClock/8000000; //为系统时钟的1/8
reload=SystemCoreClock/8000000; //每秒钟的计数次数 单位为M
//reload为24位寄存器最大值:16777216在72M下约合1.86s左右
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //开启SYSTICK中断
SysTick->LOAD=reload; //每1/delay_ostickspersec秒中断一次
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //开启SYSTICK
fac_ms=(u16)fac_us*1000; //代表每个ms需要的systick时钟数
}
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms; //时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达
SysTick->CTRL&= ~SysTick_CTRL_ENABLE_Msk; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
#if EN_USART1_RX //如果使能了接收
//串口1中断服务程序
//注意读取USARTx->SR能避免莫名其妙的错误
u8 USART1_RX_BUF[USART1_REC_LEN]; //接收缓冲最大USART_REC_LEN个字节.
//接收状态
//bit15, 接收完成标志
//bit14, 接收到0x0d
//bit13~0, 接收到的有效字节数目
u16 USART1_RX_STA=0; //接收状态标记
void uart1_init(u32 bound){
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
//RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2 | RCC_APB1Periph_USART3 ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA /*| RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC */|RCC_APB2Periph_AFIO ENABLE);
//USART1_TX GPIOA.9初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.10
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA &GPIO_InitStructure);//初始化GPIOA.9
//USART1_RX GPIOA.10初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA.10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA &GPIO_InitStructure);//初始化GPIOA.10
//Usart1 NVIC 配
相关资源
- 基于STM32F4x9的LCD显示
- 中盈ZY50打印机驱动 v1.1 官方版
- 中盈 NX-612打印机驱动 v1.1 官方版
- VS1053B编解码器的VDR分布式声音采集卡
- stm32的DAC播放音乐文件
- 通过3D打印样品发现NMR曲线的不同姿态
- 美松打印机SDK MsPrintSDK-Demo-DLL-CShare-
- BullZip PDF Printer v10.10.0.2307 官方版
- STM32+TMC5160代码电路图.rar
- 莹浦通WP-T860打印机驱动 官方版
- 基于STM32的深海钻机甲板控制系统
- stm32f103.SchDoc
- STM32F103 USART+DMA
- DMA+stm32 407.zip
- 4_USART串口通信(空闲中断+DMA.zip
- stm32f105-usart-DMA收发demo
- STM32F042F6P6 Uart12DMA;发送中断接收
- 佐藤打印机SATO打印接口控件
- 基于STM32的嵌入式双目图像采集系统设
- 基于STM32F103C8单片机的晶联讯电子JL
- 芯烨XPT58M打印机驱动 官方版
- 研科t58zp打印机驱动 v16.0.0.435 官方最
- pci/pcie打印卡串口/并口卡驱动
- 富士通dpk910驱动 官方最新版
- 富士通dpk2780k打印机驱动 v1.7.0.133 官方
- 富士通dpk2080s打印机驱动 v1.0.0.1 官方
- DPK700_700K_700H系列打印机驱动 免费版
- 基于STM32的温湿度检测系统实现
- stm32F4+w5300
- 14284969_《STM32单片机应用与全案例实践
评论
共有 条评论