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

[复制链接]
3236|64
 楼主| lmq0v9 发表于 2023-3-28 15:50 | 显示全部楼层
shake.h
  1. #include "stm32f10x.h"

  2. void Shake_Init(void);




 楼主| lmq0v9 发表于 2023-3-28 15:53 | 显示全部楼层
main.h

  1. #include "stm32f10x.h"
  2. #include "led.h"
  3. #include "usart.h"
  4. #include "relay.h"
  5. #include "shake.h"
  6. #include "main.h"

  7. void delay(uint16_t time)
  8. {
  9.                 uint16_t i=0;
  10.           while(time--)
  11.                 {
  12.                                 i=12000;
  13.                           while(i--);
  14.                                  
  15.                 }
  16. }


  17. int main()
  18. {
  19.                 LED_Init();
  20.           usart_init();
  21.           Relay_Init();
  22.           Shake_Init();
  23.        
  24.           GPIO_SetBits(GPIOA,GPIO_Pin_3);//½«¼ÌµçÆ÷µçƽÀ­¸ß
  25.        
  26.           while(1)
  27.                 {
  28.                                  if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0)//µ±Õ𶯴«¸ÐÆ÷¸ÐÊܵ½Õ𶯣¬µçƽÀ­µÍ
  29.                                 {
  30.                                           GPIO_ResetBits(GPIOA,GPIO_Pin_3);//¼ÌµçÆ÷µçƽÀ­µÍ£¬µÆÁÁ
  31.                                           delay(1000);                     //ÑÓʱһÃëºó
  32.                                           GPIO_SetBits(GPIOA,GPIO_Pin_3);  //¼ÌµçÆ÷µçƽÀ­¸ß£¬µÆÃð
  33.                                        
  34.                                 }
  35.                                 else
  36.                                 {
  37.                                                  GPIO_SetBits(GPIOA,GPIO_Pin_3);  //ÎÞÕð¶¯Ê±£¬¼ÌµçÆ÷µçƽÀ­¸ß£¬µÆ²»ÁÁ
  38.                                 }
  39.                          
  40.                 }
  41. }





 楼主| lmq0v9 发表于 2023-3-28 15:54 | 显示全部楼层
startup.c
  1. #include "stm32f10x.h"
  2. #include "usart.h"

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

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

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

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

  47. }


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

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

  52. }



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

  55.    uint16_t i=0; //ÎÞ·ûºÅÕûÐÎÊ®Áùλ
  56.   
  57.     do{
  58.                        
  59.                 USARTSendByte(USARTx, *(str+i));
  60.                         i++;
  61.                
  62.                
  63.                 }while(*(str+i)!='\0');

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

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


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

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

  77.        return (int)USART_ReceiveData(USART1);


  78. }







Clyde011 发表于 2024-1-27 15:08 | 显示全部楼层

大部分单片机都带有加密锁定位或者加密字节
Uriah 发表于 2024-1-27 18:07 | 显示全部楼层

单片机一般都有内部程序区和数据区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部