/*
第一步:添加
#include "stm32f10x.h"
uint32_t TimeDisplay = 0;
int mian()
{
/......添加驱动初始化....../
SysTick_Config(SystemCoreClock/1000);//1ms中断一次 滴答定时器
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为2
while(1)
{
}
}
第二步:初始 化LCD,并用display显示测试LCD是否能用、记得添加 #include "stdio.h" char text[20];
第三步:添加delay文件,将stm32f10x_it.c原来全部复制粘贴,在主函数前添加 uint32_t TimeDisplay = 0;
第四步:看题目要求添加逐一添加驱动
*/
/*........使用LCD步骤............
1.添加驱动 添加头文件 #include "lcd.h"
2.在主函数中添加
STM3210B_LCD_Init(); //LCD初始化设置
LCD_Clear(Blue2); //液晶重置颜色
LCD_SetTextColor(Black); //设置文本颜色
LCD_SetBackColor(Blue2); //设置背景颜色
3.在display中显示:
字符:
sprintf(text," No 1 ");
LCD_DisplayStringLine(Line2,(uint8_t *)text); //第二行
精确位置: sprintf(text,"%3.0f",T);
LCD_ShowString(170,80,200,24,24,(u8 *)text);
ADC电压:
sprintf(text," %s%.2f%s "," ADC:",t_temp,"V ");
LCD_DisplayStringLine(Line6,(uint8_t *)text);
数字变量:
sprintf(text," Level:%d ",Level);
LCD_DisplayStringLine(Line8,(uint8_t *)text);
控制选中颜色:
LCD_SetTextColor(Black);
sprintf(text," Parameter Setup ");
LCD_DisplayStringLine(Line2,(uint8_t *)text); //第一行
if(flag==0)LCD_SetTextColor(Black);
if(flag==1)LCD_SetTextColor(Red);
else LCD_SetTextColor(Black);
sprintf(text,"%s%d%s "," Threshold_1:",Threshold_1,"cm ");
LCD_DisplayStringLine(Line4,(uint8_t *)text);
如果要使用汉字:
添加#include "ziku.h",用过查找ASCII表
文字类:在ziku.h里添加汉字的字模 LCD_ShowChinese(110,40,0,24,0); //实
字符类: LCD_ShowChar(200,80,99,24,0);
变量数字类: LCD_ShowxNum(150,120,charge,2,24,0);
*/
/*........使用ADC步骤............
1.添加驱动 添加头文件 #include "adc.h"
2. 在主函数前添加
float t_temp; //adc结果暂存变量
3.在主函数中添加 Adc_Init();
4.在在循环里添加 t_temp = Read_Adc();
5.在display中添加 extern float t_temp;并使用·
电压显示:
sprintf(text," %s%.2f%s "," ADC:",t_temp,"V ");
LCD_DisplayStringLine(Line6,(uint8_t *)text);
*/
/*........使用RTC步骤............
1.添加驱动 添加头文件#include "rtc.h"
2.在主函数前添加
u32 THH,TMM,TSS;
void Time_Display(u32 TimeVar);
2.在主函数里添加
RTC_Configuration();
NVIC_Configuration1();
3.在while(1)中添加
if(TimeDisplay == 1)
{
Time_Display(RTC_GetCounter());//获取计数器的值并显示
TimeDisplay = 0;//清除标志位
}
4.在主函数外添加
void Time_Display(u32 TimeVar)
{
THH = TimeVar / 3600; //时
TMM = (TimeVar % 3600) / 60; //分
TSS = (TimeVar % 3600) % 60;//秒
}
*/
/*........使用LED步骤............
1.添加驱动 添加头文件#include "led.h"
2.在主函数里添加
LED_Init();
GPIO_SetBits(GPIOD,GPIO_Pin_2); //锁存器输出高电平 使led全灭
GPIO_SetBits(GPIOC,GPIO_Pin_All);
GPIO_ResetBits(GPIOD,GPIO_Pin_2); //锁存器输出低电平
3.使用前后加
GPIO_SetBits(GPIOD,GPIO_Pin_2); //锁存器输出高电平
GPIO_SetBits(GPIOC,GPIO_Pin_All);
if(_1s == 10)LED1 = !LED1;
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
*/
/*........使用key步骤............
1.添加驱动 添加头文件#include "key.h"
2.在主函数里添加
KEY_Init();
3.在while(1)中添加Key_Scan();
*/
/*........使用timer步骤............ //未完成
一,定时器timer
1.添加驱动 添加头文件#include "tim3.h.h"
2.在 TIM_Config(); //50ms中断一次
3.在stm32f10x_it.c中 void TIM3_IRQHandler(void) 设置时间中断
*/
/*........使用E2PROM步骤............
1.添加驱动 添加头文件#include"i2c.h"#include"at24c02.h"
2. 主函数里添加 i2c_init();
Threshold_1 = at24c02_read(1);
Threshold_2 = at24c02_read(2);
Threshold_3 = at24c02_read(3);
3.在需要保存的地方添加
at24c02_write(1,Threshold_1);
at24c02_write(2,Threshold_2);
at24c02_write(3,Threshold_3);
*/
/*........使用USART2步骤............
1.添加驱动 添加头文件#include "usart.h"
2.在主函数里添加 usart_init();
3.发送
直接向串口发送
if(LED2_1>Level)printf("A:H%0.f+L%d+D\r\n",Height,Level);//液位下降
在串口2的接收中断中写用extern int strcmp(const char *s1,const char *s2); //将两个变量作比较
if(strcmp(USART_RXBUF,"C")==0)
{
printf("\r\n");
printf("C:H%0.f+L%d\r\n",Height,Level);
GPIO_SetBits(GPIOD,GPIO_Pin_2);
GPIO_SetBits(GPIOC,GPIO_Pin_All);
GPIO_ResetBits(GPIOC,GPIO_Pin_10);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
}
*/
/*****LCD,ADC,RTC,LED,KEY,TIMER,E2PROM******/
#include "stm32f10x.h"
#include "lcd.h"
#include "display.h"
#include "adc.h"
#include "key.h"
#include"i2c.h"
#include "stdio.h" //使sprintf正常运行
#include"at24c02.h"
#include "usart.h"
#include "tim3.h"
#include "led.h"
uint32_t TimeDisplay = 0;
extern float t_temp; //adc结果暂存变量
extern int mode, Level;
extern char _1s,_200ms;
extern float Height;
int LED2_1;
extern int Threshold_1,Threshold_2,Threshold_3;
int main()
{
STM3210B_LCD_Init(); //LCD初始化设置
LCD_Clear(Blue2);/*液晶重置颜色*/
LCD_SetTextColor(Black);/*设置文本颜色*/
LCD_SetBackColor(Blue2);/*设置背景颜色*/
Adc_Init();
KEY_Init();
i2c_init();
TIM_Config();
usart_init();
SysTick_Config(SystemCoreClock/1000);//1ms中断一次 滴答定时器
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为2
Threshold_1 = at24c02_read(1);
Threshold_2 = at24c02_read(2);
Threshold_3 = at24c02_read(3);
GPIO_SetBits(GPIOD,GPIO_Pin_2); //锁存器输出高电平
GPIO_SetBits(GPIOC,GPIO_Pin_All);
GPIO_ResetBits(GPIOD,GPIO_Pin_2); //锁存器输出低电平
while(1)
{
t_temp = Read_Adc();
if(mode == 0)display();
Key_Scan();
}
}
嵌入式STM32F10-写任务步骤
最新推荐文章于 2023-06-13 00:26:17 发布