main.c主函数部分(没写完)
/**
******************************************************************************
* @file Project/STM32F10x_StdPeriph_Template/main.c
* @author MCD Application Team
* @version V3.5.0
* @date 08-April-2011
* @brief Main program body
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include <stdio.h>
#include "lcd.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KEY2 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)
#define KEY3 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)
#define KEY4 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2)
#define PWM_wide 1//Êä³öÂö¿íÐͺÅ
#define PWM_lower 2//Êä³öµÍµçƽÐźÅ
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
uint16_t key_one_value;//¿ØÖÆPA1µÄÐźÅÊä³öģʽ,ĬÈÏģʽ»¹Ã»ÓÐÉèÖÃ
//u8 duty_A1,duty_A2,status,CH2_OPEN,CH3_OPEN;
/* Private function prototypes -----------------------------------------------*/
void KEY_init(void);
void KEY_scan(void);
void TIM2_PA1_PWM_Init(u8 duty_A1,u8 duty_A2,u8 status,u8 CH2_OPEN,u8 CH3_OPEN);
/* Private functions ---------------------------------------------------------*/
int main(void)
{
while(1)
{
}
}
//°´¼ü
void KEY_init(void)
{
}
//°´¼üɨÃè³ÌÐò
void KEY_scan()
{
static uint16_t keysum1 = 0, keysum2 = 0, keysum3 = 0, keysum4 = 0;
//µÚÒ»¸ö°´¼ü,Êä³öÂö¿íµ÷ÖÆÐźţ¬Ôٴΰ´ÏÂPA³ÖÐøÊä³öµÍµçƽ
if(KEY1 == 0)
{
keysum1++;
if(keysum1 == 1)
{
switch(key_one_value)
{
case PWM_lower: key_one_value = PWM_wide;
case PWM_wide: key_one_value = PWM_lower;
}
}
}else
{
keysum1 = 0;
}
//µÚ¶þ¸ö°´¼ü£¬ÉèÖÃͨµÀPA1Êä³öÂö¿íµ÷ÖÆÐźŵÄÕ¼¿Õ±Èµ÷½Ú£¬
//°´ÏÂB2£¬Í¨µÀPA1Êä³öÐźÅÕ¼¿Õ±ÈÒÔ10%²½½ø£¬½«µ÷ÕûºóµÄÊä³öÐźÅÕ¼¿Õ±È±£´æÖÁEEPROMÖÐ
if(KEY2 == 0)
{
keysum2++;
if(keysum2 == 1)
{
}
}else
{
keysum2 =0;
}
//µÚÈý¸ö°´¼ü£¬PA2Êä³öÂö¿íµ÷ÖÆÐźţ¬Ôٴΰ´ÏÂB3£¬PA2³ÖÐøÊä³öµÍµçƽ£¬Ñ»·
//µÚËĸö°´¼üºÍµÚ2¸ö°´¼üÏàͬ
}
//PWM¶¨Ò庯Êý£¬dutyΪ¶¨ÒåÕ¼¿Õ±È£¬statusΪ¶¨Òå״̬,OpenÔòÊÇÊÇ·ñ´ò¿ª
void TIM2_PA1_PWM_Init(u8 duty_A1,u8 duty_A2,u8 status,u8 CH2_OPEN,u8 CH3_OPEN)
{
u32 A1_Pluse,A2_Pluse;//¶¨ÒåÁ½¸öÂö³åʹÄÜ
GPIO_InitTypeDef GPIO_InitStruct;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
if(status)//ʱÖӵijõʼ»¯¶¨Ò壬²»±Ø¾³£µÄ¶¨ÒåʱÖÓ
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
TIM_TimeBaseInitStruct.TIM_Period = 999;
TIM_TimeBaseInitStruct.TIM_Prescaler = 71;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);
}
A1_Pluse = 998 * duty_A1 / 100;//Õ¼¿Õ±È³ËÒÔ¼ÆÊýÊýÖµ¼´ÎªÊä³öÂö³åÕ¼¿Õ±È
A2_Pluse = 998 * duty_A2 / 100;
//¿ªÊ¼ÉèÖÃTIM2µÄPWMģʽ£¬ÒÔÏÂΪ¶Ô¶¨Ê±Æ÷PWM¼Ä´æÆ÷½øÐÐÅä±È
}