打印
[STM32F1]

基于STM32F103C8T6的振动器控制继电器实现控制灯的亮灭

[复制链接]
楼主: lmq0v9
手机看帖
扫描二维码
随时随地手机跟帖
61
lmq0v9|  楼主 | 2023-3-28 15:50 | 只看该作者 回帖奖励 |倒序浏览
shake.h
#include "stm32f10x.h"

void Shake_Init(void);




使用特权

评论回复
62
lmq0v9|  楼主 | 2023-3-28 15:53 | 只看该作者
main.h

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "relay.h"
#include "shake.h"
#include "main.h"

void delay(uint16_t time)
{
                uint16_t i=0;
          while(time--)
                {
                                i=12000;
                          while(i--);
                                 
                }
}


int main()
{
                LED_Init();
          usart_init();
          Relay_Init();
          Shake_Init();
       
          GPIO_SetBits(GPIOA,GPIO_Pin_3);//½«¼ÌµçÆ÷µçƽÀ­¸ß
       
          while(1)
                {
                                 if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0)//µ±Õ𶯴«¸ÐÆ÷¸ÐÊܵ½Õ𶯣¬µçƽÀ­µÍ
                                {
                                          GPIO_ResetBits(GPIOA,GPIO_Pin_3);//¼ÌµçÆ÷µçƽÀ­µÍ£¬µÆÁÁ
                                          delay(1000);                     //ÑÓʱһÃëºó
                                          GPIO_SetBits(GPIOA,GPIO_Pin_3);  //¼ÌµçÆ÷µçƽÀ­¸ß£¬µÆÃð
                                       
                                }
                                else
                                {
                                                 GPIO_SetBits(GPIOA,GPIO_Pin_3);  //ÎÞÕð¶¯Ê±£¬¼ÌµçÆ÷µçƽÀ­¸ß£¬µÆ²»ÁÁ
                                }
                         
                }
}





使用特权

评论回复
63
lmq0v9|  楼主 | 2023-3-28 15:54 | 只看该作者
startup.c
#include "stm32f10x.h"
#include "usart.h"

void usart_init(void)   //´®¿Ú³õʼ»¯
{
            GPIO_InitTypeDef GPIO_initstructure;
            USART_InitTypeDef USART_initstructure;
            NVIC_InitTypeDef Nvic_Init;
            NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   //ÅäÖÃÖжÏ×éΪÖжÏ×é2   misc.h
       
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);   //ÅäÖÃÖжϸ´ÓÃʱÖÓ
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
       

                
        //ÅäÖÃPA9 TX       
      GPIO_initstructure.GPIO_Mode   =GPIO_Mode_AF_PP; //ÍÆÍìÊä³ö
                        GPIO_initstructure.GPIO_Pin    =GPIO_Pin_9;
                        GPIO_initstructure.GPIO_Speed  =GPIO_Speed_50MHz;
                        GPIO_Init(GPIOA,&GPIO_initstructure);

              //ÅäÖÃPA10 RX
            GPIO_initstructure.GPIO_Mode   =GPIO_Mode_IN_FLOATING; //¸¡¿ÕÊäÈë
                        GPIO_initstructure.GPIO_Pin    =GPIO_Pin_10;
                       
            GPIO_Init(GPIOA,&GPIO_initstructure);
             
             //´®¿Ú1´ò¿ª
            USART_initstructure.USART_BaudRate=115200;    //²¨ÌØÂÊ
            USART_initstructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
            USART_initstructure.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;
                        USART_initstructure.USART_Parity=USART_Parity_No;     //УÑéλ
                        USART_initstructure.USART_StopBits= USART_StopBits_1;         //ֹͣλ
                        USART_initstructure.USART_WordLength= USART_WordLength_8b;  //ÓÐЧ×Ö½Ú³¤¶È  8λ
            USART_Init(USART1,&USART_initstructure);
      //ʹÄÜ´®¿Ú1
                        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);   //´®¿ÚÖжÏÅäÖÃ
                        USART_Cmd(USART1,ENABLE);

      
   //ÅäÖÃÖжÏ
      
                                               
                  Nvic_Init.NVIC_IRQChannel       =USART1_IRQn;       //ÉèÖÃÖжÏͨµÀ  stm32f10x.h
                  Nvic_Init.NVIC_IRQChannelCmd    =ENABLE;                   //¿ØÖÆÊÇ·ñʹÄÜ
                  Nvic_Init.NVIC_IRQChannelPreemptionPriority  =1;          //ÉèÖÃÇÀÕ¼ÓÅÏȼ¶
                  Nvic_Init.NVIC_IRQChannelSubPriority   =1;             //ÉèÖÃ×ÓÓÅÏȼ¶
               
                  NVIC_Init(&Nvic_Init);

}


//·¢Ë͵¥¸ö×Ö·û   µ÷Ó÷½·¨   USARTSendByte(USART1,'o');
void USARTSendByte(USART_TypeDef* USARTx, uint16_t Data){

  USART_SendData(USART1,Data);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);  //ÅжÏÊÇ·ñ·¢ËÍÍê³É

}



//·¢ËÍ×Ö·û´®   //Ô­Àí×Ö·û·¢ËÍ×îºóһλÊÇ\0ÅжÏÊÇ·ñ×îºóһλ\0¾ÍÄÜ·¢ËÍ×Ö·û´®   µ÷Ó÷½·¨   USARTSendStr(USART1,"ruanzebin");
void USARTSendStr(USART_TypeDef* USARTx, char *str){

   uint16_t i=0; //ÎÞ·ûºÅÕûÐÎÊ®Áùλ
  
    do{
                       
                USARTSendByte(USARTx, *(str+i));
                        i++;
               
               
                }while(*(str+i)!='\0');

   while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);  //ÅжÏÊÇ·ñ·¢ËÍÍê³É

}
  //printf º¯Êý  putcharº¯Êý(Êä³öµ¥¸ö×Ö·û)  Í¨¹ýÖض¨Ïò  Êä³öÊýÖµ
int fputc(int ch ,FILE *f){


  USART_SendData(USART1,(uint8_t)ch);
  while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);  //ÅжÏÊÇ·ñ·¢ËÍÍê³É

  return (ch);
}
  //scanf()  getcharº¯Êý   
int fgetc(FILE *f)
{
       
     while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)==RESET); //ÅжÏÊÇ·ñ½ÓÊճɹ¦

       return (int)USART_ReceiveData(USART1);


}







使用特权

评论回复
64
Clyde011| | 2024-1-27 15:08 | 只看该作者

大部分单片机都带有加密锁定位或者加密字节

使用特权

评论回复
65
Uriah| | 2024-1-27 18:07 | 只看该作者

单片机一般都有内部程序区和数据区

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则