一、唠嗑
LiuShen
大佬在我实习的前一天发了一篇博文东软软件园实习日记,这样的记录是值得的,所以我也水一篇信盈达实习记录。写这一篇的记录的时候是实习的第二天。第一天实习属于是抱着很期待的心情来到全能科技公司(全能科技是信盈达的合作公司,所以没有去信盈达公司。据说后期会带我们去信盈达在郑州的分公司)。
学校安排实习为期十天,公司安排中间休息一天,每天都要写实习报告和心得。最终考核为手搓一个基于STM32的智慧养老院。总体来讲难度不大,主要是小组里有大佬,我抱着躺平就行。
卧槽,突发事件,这篇文章还没把唠嗑写完,多吉云给我发消息说我欠费了,悬着的心终于死了,又又又被打了
二、实习日记
(一)2024-07-06实习日记
1. 时间安排
上午9:00-12:00;下午2:00-6:00;这又何尝不是一种上班呢。因为午休时间比较少,所以我一般不会回学校。
2. 公司环境
一般而言,实习第一天属于是参观式实习。早上7点,陈师傅早早的就起床了,墨迹到8点和旁边寝室的uu们一起坐地铁来到河南省国家大学科技园西区。全能科技距离我校很近,坐地铁三站即可。下车后步行7-8min达到目的地。
全能科技公司牌面
全能科技公司内景
科技园内的环境还不错,但是有点杂草丛生的感觉,还是挺喜欢园区内的桥和小河的。天太热了,所以没怎么拍(再说我拍照丑的一批),凑合着看吧。
贯穿园区的桥
园区的杂草和河
3.实习内容
上午什么都没学,纯自我介绍了。有趣的是,原定的实习项目智能小车因为在校已经做过,所以临时改成了智能养老院,但是换汤不换药吧还是要求做出实物。中午12点,开吃。带班老师推荐了几家餐厅,我们最后选择了一起去吃把子肉,谁不爱肉呢!!!!上菜之前忘记拍了,放一张残羹剩饭吧。
把子肉残羹剩饭版
下午倒是学了一点东西,但是也都是之前做过的工作。总结一下,就是配置前置环境:安装Keil,破解Keil,看原理图以及新建标准库工程,没有写代码(⊙o⊙)?。新建项目倒是挺有用的。
项目文件的目录树
OK,下班,回家,打阴阳师
(二)2024-07-07实习日记
1.实习内容
友友们,我已经是一名成功的点灯工程师
了,快来抱我大腿。说是实习,其实不是和公司有关的,更像是一种培训班,只不过这不是黑马程序员的软件培训而是嵌入式培训。
主要学习GPIO口,通过配置寄存器(这个比较难,但是不常见,所以我没有仔细听)和标准库编程。7月7号主要是将通过标准库进行点灯操作和蜂鸣器操作。比较简单,但是相比学校里教课的老师,培训老师讲的更贴近于实际应用。
点灯工程师
OK,今天的实习就到这了。进度比较慢的,考虑到大多数哦同学吧😀
芜湖,晚上5:30的时候,园区内停电了,因为最近郑州风雨欲来吧。
贴个代码吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #include "led.h" #include "delay.h"
void LED_Config(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef led = {0};
led.GPIO_Mode = GPIO_Mode_Out_PP; led.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; led.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&led); }
void LED(void) { LED1_TOGGLE; LED2_TOGGLE; LED3_TOGGLE; }
void LED_huxi(void) { uint16_t i=0; for(i=0;i<2000;i += 3) { LED1_ON; LED2_ON; LED3_ON; Delay_us(i); LED1_OFF; LED2_OFF; LED3_OFF; Delay_us(2000-i); } for(i=0;i<2000;i += 3) { LED1_ON; LED2_ON; LED3_ON; Delay_us(2000-i); LED1_OFF; LED2_OFF; LED3_OFF; Delay_us(i); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #ifndef _LED_H_ #define _LED_H_
#include "stm32f10x.h"
#define LED1_ON GPIO_WriteBit(GPIOC, GPIO_Pin_0,Bit_RESET) #define LED1_OFF GPIO_WriteBit(GPIOC, GPIO_Pin_0,Bit_SET) #define LED1_TOGGLE GPIO_WriteBit(GPIOC, GPIO_Pin_0,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_0)))
#define LED2_ON GPIO_WriteBit(GPIOC, GPIO_Pin_1,Bit_RESET) #define LED2_OFF GPIO_WriteBit(GPIOC, GPIO_Pin_1,Bit_SET) #define LED2_TOGGLE GPIO_WriteBit(GPIOC, GPIO_Pin_1,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1)))
#define LED3_ON GPIO_WriteBit(GPIOC, GPIO_Pin_2,Bit_RESET) #define LED3_OFF GPIO_WriteBit(GPIOC, GPIO_Pin_2,Bit_SET) #define LED3_TOGGLE GPIO_WriteBit(GPIOC, GPIO_Pin_2,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_2)))
void LED_Config(void); void LED(void); void LED_huxi(void); #endif
|
2.大名仕
(三)2024-07-08实习日记
今天郑州下大雨,很大很大,一直在下,实习暂停一天(目前还不知道之前安排的休息时间,会不会给取消掉,应该不会吧,求求您了)。学校莲湖的湖水都漫出来了,今天在图书馆呆了一天。
(四)2024-07-09实习日记
1.实习内容
讲了另一个外设按键
,以及非阻塞,这使得按键切换功能十分的丝滑。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
#include "key.h" #include "delay.h" void KEY_Config(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef key = {0};
key.GPIO_Mode = GPIO_Mode_IN_FLOATING; key.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOA,&key); key.GPIO_Pin = GPIO_Pin_8; GPIO_Init(GPIOB,&key); }
uint8_t key_GetValue(void) { static uint32_t count1 = 0, count2 = 0; if(KEY1 == 1) count1++; else { if(count1 > 100) { count1 = 0; return 1; } else if(count1 > 2) { count1 = 0; return 2; } else count1 = 0; } if(KEY2 == 0) count2++; else { if(count2 > 100) { count2 = 0; return 3; } else if(count2 > 2) { count2 = 0; return 4; } else count2 = 0; } return 0; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#ifndef _KEY_H_ #define _KEY_H_
#include "stm32f10x.h" #define KEY1 GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) #define KEY2 GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8)
uint8_t key_GetValue(void); void KEY_Config(void);
#endif
|
2. 午餐
价值10元的大锅炖,属于被坑了。和同学准备一起去吃饭的,被老板推推嚷嚷我独自买了这个(你看这肥肉yue🤮)。同学都去吃煲仔饭和羊肉泡馍了,不过好像也被被刺了,哈哈哈!!!!
(五)2024-07-10实习日记
1.实习内容
今天主要讲了串口的内容,个人觉得还是比较简单的。简单的模板CV,简单的函数调用,毕竟原理的话我也不懂呀😀。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
#include "usart1.h" #include "stdio.h" #include "string.h"
USART1_DATA Usart1_data = {0};
void USART1_Config(u32 brr) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStruct); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); USART_InitTypeDef USART1_InitStruct = {0}; USART1_InitStruct.USART_BaudRate = brr; USART1_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART1_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART1_InitStruct.USART_Parity = USART_Parity_No; USART1_InitStruct.USART_StopBits = USART_StopBits_1; USART1_InitStruct.USART_WordLength = USART_WordLength_8b; USART_Init(USART1, &USART1_InitStruct); USART_Cmd(USART1, ENABLE); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_ITConfig(USART1, USART_IT_IDLE, ENABLE); NVIC_InitTypeDef NVIC_InitStruct = {0}; NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; NVIC_Init(&NVIC_InitStruct); }
void USART1_SendStr(uint8_t str[], u32 len) { u32 i = 0; for(i=0; i<len; i++) { while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); USART_SendData(USART1, str[i]); } }
int fputc(int ch, FILE*stream) { while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); USART_SendData(USART1, ch); return ch; }
void USART1_IRQHandler(void) { volatile uint8_t data = 0; if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET) { Usart1_data.recvbuf[Usart1_data.recvcount++] = USART_ReceiveData(USART1); Usart1_data.recvcount %= 16; USART1 -> DR = USART1 -> DR; } if(USART_GetITStatus(USART1, USART_IT_IDLE) == SET) { data = USART1 -> SR; data = USART1 -> DR; Usart1_data.recvflag = 1; } }
void USART1_Analyse(void) { if(Usart1_data.recvflag == 1) { if(Usart1_data.recvcount < 3) goto err; if(Usart1_data.recvbuf[0] == 0xAA && Usart1_data.recvbuf[3] == 0xBB) { switch(Usart1_data.recvbuf[2]) { case 0x01: BEEP_ON; break; case 0x00: BEEP_OFF; break; } } err: memset(&Usart1_data, 0, sizeof(Usart1_data)); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#ifndef _USART1_H_ #define _USART1_H_
#include "stm32f10x.h" #include "stdio.h" #include "beep.h"
typedef struct { uint8_t recvbuf[6]; uint16_t recvcount; uint8_t recvflag; }USART1_DATA;
void USART1_Config(u32 brr); void USART1_SendStr(uint8_t str[], u32 len); int fputc(int ch, FILE*stream); void USART1_IRQHandler(void); void USART1_Analyse(void);
#endif
|
2.午餐
18块钱一个人的自助餐。味道不错,感觉社会还是有光的,吃的很撑。而且,截至7-12号我已攒够9张餐券,等我再抢一张券就可以召唤免单券了。
3.公司参观
下午,(整理衣领😀)应邀参观信盈达。公司比较小,所以展示的东西也比较少
(六)2024-07-11实习日记
1.实习内容
今天依旧如平常一样,讲解了外设屏幕
的原理和实现。屏幕的代码太长了,就不放了,放几张我实现的效果吧。
2.午餐
一般一般,在科技园餐厅吃的牛肉大葱的饺子,有一股子速冻味道,还收了我💴14💴,感觉血亏。
(七)2024-07-12实习日记
1.实习内容
学习了两个传感器:心率传感器和温湿度传感器(这是学校没有讲的,听得比较认真)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
| \* DHT11.c *\ #include "DHT11.h" #include "delay.h" #include "stdio.h"
void DHT11_ChangeMode(DHT_MODE mode) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef dht11 = {0};
dht11.GPIO_Pin = GPIO_Pin_3; dht11.GPIO_Speed = GPIO_Speed_50MHz; if(mode) { dht11.GPIO_Mode = GPIO_Mode_Out_PP; } else { dht11.GPIO_Mode = GPIO_Mode_IPU; }
GPIO_Init(GPIOC,&dht11); }
void DHT11_Config(void) { DHT11_ChangeMode(DHT11_OUT); DHT11_HIGH; }
uint8_t DHT11_ReadData(DHT11_DATA *dh_data) { uint8_t retry = 0; uint8_t i = 0; uint8_t data[5] = {0}; DHT11_Config(); DHT11_LOW; Delay_ms(22); DHT11_HIGH; DHT11_ChangeMode(DHT11_INT); while(DHT11_READ == 1) { retry++; Delay_us(1); if(retry > 100) { return 1; } } retry = 0; while(DHT11_READ == 0) { retry++; Delay_us(1); if(retry > 100) { return 1; } } retry = 0; for(i=0; i < 40; i++) { while(DHT11_READ == 1) { retry++; Delay_us(1); if(retry > 100) { return 1; } } retry = 0; while(DHT11_READ == 0) { retry++; Delay_us(1); if(retry > 100) { return 1; } } retry = 0; Delay_us(30); if(DHT11_READ == 1) { data[i/8] |= (1<<(7-i%8)); } else { data[i/8] &= ~(1<<(7-i%8)); } } if(data[4]==data[0]+data[1]+data[2]+data[3]) { dh_data -> hum = data[0]; dh_data -> tem = data[2]; return 0; } else { printf("温湿度获取失败"); return 1; } return 0; }
DHT11_DATA dht11_data = {0};
void DHT11_Show(void) { DHT11_ReadData(&dht11_data); printf("当前温度:%d\t湿度:%d\r\n",dht11_data.tem,dht11_data.hum); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#ifndef __DHT11_H #define __DHT11_H
#include "stm32f10x.h"
typedef enum { DHT11_INT = 0, DHT11_OUT = 1, }DHT_MODE;
typedef struct { int16_t tem; int16_t hum; }DHT11_DATA;
#define DHT11_HIGH GPIO_WriteBit(GPIOC, GPIO_Pin_3,Bit_SET) #define DHT11_LOW GPIO_WriteBit(GPIOC, GPIO_Pin_3,Bit_RESET) #define DHT11_READ GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_3)
void DHT11_ChangeMode(DHT_MODE mode); void DHT11_Config(void); uint8_t DHT11_ReadData(DHT11_DATA *dh_data); void DHT11_Show(void);
#endif
|
2. 午餐
今天有没有人吃18元的自助餐。今天吃的是10块钱的炒饭,味道还可以,就是太噎人了。
3.实现结果