# keil **Repository Path**: ax020913/keil ## Basic Information - **Project Name**: keil - **Description**: 嵌入式51单片机,stm32,相关项目的学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-07-02 - **Last Updated**: 2025-01-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: C语言, 51, stm32, FreeRTOS, HAL ## README # keil ## 一. 介绍 51单片机的学习 ## 二. keil软件创建项目 1. 新建项目文件夹 ![image-20240702235415878](./images/image-20240702235415878.png) 2. 创建一个main.c文件;并编写代码,点击 build 并没有报错 ![image-20240702235526269](./images/image-20240702235526269.png) ![image-20240703003330953](./images/image-20240703003330953.png) ![image-20240702235703992](./images/image-20240702235703992.png) 3. 使得可生成 .hex 文件 ![image-20240703000125133](./images/image-20240703000125133.png) 4. 使用stc-isp软件下载程序,按单片机上的USB转TTL模块按钮重启,即可看到现象 ![image-20240703000404747](./images/image-20240703000404747.png) ## 三. keilProject目录写示例代码 1.数码管的显示只能同一时刻显示一个数码管的哦,所以如果要显示一个多位数的数字,是得不断循环扫描显示的。 2.定时器 - 定时器:以系统时钟为准 - 计数器:以外部时钟为准 3.可位寻址寄存器:可对每一个bit位赋值;例如 P2 等寄存器 4.不可位寻址寄存器:不可对每一个bit位赋值,只能整体赋值 5.中段函数相对于普通函数就是在后面加了 interrupt num ```cpp void Timer0_Routine() interrupt 1{ static unsigned int T0Count; TL0 = 0x18; //设置定时初值 TH0 = 0xFC; //设置定时初值 T0Count++; //T0Count计次,对中断频率进行分频 if(T0Count>=500){ //分频500次,500ms T0Count=0; if(LEDMode==0) //模式判断 P2=_crol_(P2,1); //LED输出 if(LEDMode==1) P2=_cror_(P2,1); } } ``` 6.串口相关:对于一个TXD对应一个RXD来看,是可以达到一个TXD控制多个RXD的哦,即:TXD:RXD = 1 :n,但是 TXD :RXD = n : 1 是不行的 7.串口相关:同步是会带上SCL时钟线的,异步的是不会携带的 8.串口相关: 全双工:通信双方可以在同一时刻互相传输数据 半双工:通信双方可以互相传输数据,但必须分时复用一根数据线 单工:通信只能有一方发送到另一方,不能反向传输 异步:通信双方各自约定通信速率 同步:通信双方靠一根时钟线SCL来约定通信速率 总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流) 9.下面的main函数中不能再调用 UART_Routine 中断函数的哦,不然就会有函数重入的现象 ```c void main() { UART_Init(); //串口初始化 while(1) { } } void UART_Routine() interrupt 4 { if(RI==1) //如果接收标志位为1,接收到了数据 { P2=~SBUF; //读取数据,取反后输出到LED UART_SendByte(SBUF); //将受到的数据发回串口 RI=0; //接收标志位清0 } } ``` 10. ## 四. stm32的学习 ## 五. 实战项目