STM32f103AD程序
- 格式:docx
- 大小:14.09 KB
- 文档页数:3


实用文档
文案大全 STM32 LCD12864驱动程序(头文件) (2012-05-29 21:25:08)转载▼
标签: 杂谈
#ifndef LCD12864_H
#define LCD12864_H
#define LCD_CONTROL GPIOD //默认LCD12864的控制口在PD口
#define LCD_DATAPORT GPIOD //默认LCD12864的数据口在PD口
#define LCD_RESET_Pin GPIO_Pin_12 //默认LCD12864的复位引脚连接到PD.12 也可不用
#define LCD_RS_Pin GPIO_Pin_13 //默认LCD12864 RS -- PD.13
#define LCD_RW_Pin GPIO_Pin_14 //默认LCD12864 RW -- PD.14
#define LCD_EN_Pin GPIO_Pin_15 //默认LCD12864 E -- PD.15
#define LCD_CONTROL_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的控制口时钟
#define LCD_DATAPORT_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的数据口时钟
#define LCD_RS_1 LCD_CONTROL->BSRR &=~LCD_RS_Pin;LCD_CONTROL->BSRR |=LCD_RS_Pin
//RS置高电平
#define LCD_RS_0 LCD_CONTROL->BRR &=~LCD_RS_Pin;LCD_CONTROL->BRR |=LCD_RS_Pin
//RS置低电平
#define LCD_RW_1 LCD_CONTROL->BSRR &=~LCD_RW_Pin;LCD_CONTROL->BSRR
1 / 7
【SP3485芯片&xx接收】
本例程为STM32F4XX(M4内核)的485通信程序,采用串口1发送和接收数据,中断接收,将接收到的数据重新发送出去。
主函数文件如下:
#include ""
/**********************************************************\**文件名:**************************************
**库版本:*********
**工作环境:RealView MDK-ARM *********************
**作者:曾有根***************************************生成日期:2012-08-03 ************************************功能:RS485通过串口1发送,中断接收!将接收到*****的数据通过再次发送出去*********************\**********************************************************/extern void uart_init(void);
extern void USART1_SendByte(u8 Data);
extern unsigned char UART1_GetByte(u8 GetData);
extern void delay(unsigned int dl);
void delay(unsigned int dl)
{
unsigned int i,y;
for(i = 0; i < 5000; i++)
{
for(y = 0; y < dl; y++);
2 / 7
}
}
static void led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
STM32F103 学习之编写第一个 STM32 程序
因为第一次接触 STM 的单片机,各种寄存器和 API 都不熟悉,于是结
合 STM 的库函数和编程手册对照理解。建立好工程之后,编写 main 函数。
1.不管哪种单片机,上电以后第一重要的事就是设置时钟和初始化引脚。
单看 STM32F 的时钟:
能作为 STM32F103 的系统时钟的有三种,外部时钟,内部时钟,PLL 时
钟。
跟踪到 SystemInit 里面,一开始 CPU 工作于内部时钟,代码初始化一些时
钟寄存器的值。然后调用 SetSysSClock()设置新的时钟源。
可以看到用户只需要定义相应的宏就可以设定时钟。宏定义在本文件的最
上面。我使用的芯片是 STM32F103C6T8,文件中定义了
感觉 STM 的库写的不好的是如果 72MHz 时钟不正常,时钟初始化函数没
软件:KeilMDK
芯片:STM32F103/STM32F107
串口数量:4
备注:4个串口均配置为DMA读取
//串口1初始化函数
void uart1_init(u32 bound)
{
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
USART_DeInit(USART1); //复位串口1
//USART1_TX PA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9
//USART1_RX PA.10
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA10
//Usart1 NVIC 配置