各社团成员培训时自己总结的一点材料,直接粘过来的,可能有些朋友看不明白,总之这个比赛吧;有很多技巧,掌握到技巧能省我们半个月时间,我说的是针对这个比赛,对于STM32还是要多多练习,总之STM32还是属于嵌入式,当成单片机来玩还是可惜了。
切换窗口写法:
while(1)
{
first_window();
if(RB1==0)
{
Delay_Ms(300);
LCD_Clear(White);
while(1)
{
second_window();
if(RB1==0)
{
LCD_Clear(White);
if(RB1==0)Delay_Ms(150);break;
}
}
}
}
void first_window(void)
{//写下窗口一}
void second_window(void)
{//窗口二内容}
while(1)
{
first_window();
if(RB1==0)
{
Delay_Ms(300);
LCD_Clear(White);
while(1)
{
second_window();
if(RB1==0)
{
LCD_Clear(White);
if(RB1==0)Delay_Ms(150);break;
}
}
}
}
void first_window(void)
{//写下窗口一}
void second_window(void)
{//窗口二内容}
切换参数关键语句//
(jishu == 0)?(LCD_SetTextColor(Green)):(LCD_SetTextColor(Blue));
sprintf(string_temp_up,"%s%d
C"," Temp up:",Temp_up);
LCD_DisplayStringLine(Line4,string_temp_up);
LCD_DisplayStringLine(Line4,string_temp_up);
LED.c(.c和.h下路径都包含#include
“stm32f10x.h“)
1. 新建led.c,拷贝固件库下GPIO main.c下面关于IO口配置(io配置c口(灯口)和d口(锁存));
2.写led_contrl(u16 LED,u8 led_state)
{
if(led_state==1){给相应的灯口高电平;锁存器给高再给低}
else{给相应的灯口低电平;锁存器给高再给低}
}
2. 写led.h
#ifndef
#define
led.c下所有函数名称,和所有定义;
#endif
1. 新建led.c,拷贝固件库下GPIO main.c下面关于IO口配置(io配置c口(灯口)和d口(锁存));
2.写led_contrl(u16 LED,u8 led_state)
{
if(led_state==1){给相应的灯口高电平;锁存器给高再给低}
else{给相应的灯口低电平;锁存器给高再给低}
}
2. 写led.h
#ifndef
#define
led.c下所有函数名称,和所有定义;
#endif
Key.c
复制led.c内容确保是正确的,修改IO口为输入模式;
复制led。H内容修改函数和定义;
复制led.c内容确保是正确的,修改IO口为输入模式;
复制led。H内容修改函数和定义;
ADC
保留RCC,GPIO去掉DMA
IO口为PB0
两个DISABLE
通道修改 8 13
Float read_adc(void)
{
ADC_softwarestartconcmd();(开始采集ADC)
Value=ADC_getconversionvlue()
Return value;
}
保留RCC,GPIO去掉DMA
IO口为PB0
两个DISABLE
通道修改 8 13
Float read_adc(void)
{
ADC_softwarestartconcmd();(开始采集ADC)
Value=ADC_getconversionvlue()
Return value;
}
RTC
三个函数
Nvic 不改
RTCconfig LSE改为LSI
Time_Display 添加LCD.h 显示时间
添加中断 删掉一行
三个函数
Nvic 不改
RTCconfig LSE改为LSI
Time_Display 添加LCD.h 显示时间
添加中断 删掉一行
UART
Pa3 infloting
Pa2 afpp
void USART_send(char *string)
{
if(string !=NULL){
do{
USART2->DR=*string++;
while((USART2->SR&0X0080)==0);
}
while(*string!=0);}
}
char RxBuf[20];
char RxCounter=0;
char rx_over = 0;
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
RxBuf[RxCounter] = USART_ReceiveData(USART2);
if((RxCounter == 19) || (RxBuf[RxCounter] == '\n')){rx_over = 1;RxCounter = 0;}
else{RxCounter++;}
}}
用法,if(rx-over==1){rx-over==0;if(rebuf[0]==?)………………}
Pa2 afpp
void USART_send(char *string)
{
if(string !=NULL){
do{
USART2->DR=*string++;
while((USART2->SR&0X0080)==0);
}
while(*string!=0);}
}
char RxBuf[20];
char RxCounter=0;
char rx_over = 0;
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
RxBuf[RxCounter] = USART_ReceiveData(USART2);
if((RxCounter == 19) || (RxBuf[RxCounter] == '\n')){rx_over = 1;RxCounter = 0;}
else{RxCounter++;}
}}
用法,if(rx-over==1){rx-over==0;if(rebuf[0]==?)………………}
Smartkeke