历史上的今天
今天是:2024年08月31日(星期六)
2020年08月31日 | STM8L探索套件学习笔记-GPIO端口操作(一)
2020-08-31 来源:eefocus
STM8与STM32一样提供了固件库函数,方便用户快速开发,不需要花费很多时间去查寄存器。不过没有STM32的库完善,给的说明文档是chm格式的,名字是stm8l15x_stdperiph_lib_um.chm,这个官网有下载,今天按照官方给的模板自己做个模板文件夹,方便后期的移植,这样就不要再重复设置了。首先我们看看GPIO模块,在用固件库之前先了解下GPIO里面的大体的寄存器,方便后期使用固件库。缺点是你所以输入的参数都会检测是否符合规范,必须得按照库函数里面定义的参数写。
GPIO寄存器有:输出寄存器(ODR),输入寄存器(IDR),方向寄存器(DDR),控制寄存器1(CR1)和控制寄存器2(CR2).后面三个寄存器组和可以配置为8种GPIO的模式,如下图:
而固件库函数给出了8中模式,在上面的基础上加入了输出高/输出低电平的状态。
| GPIO_Mode_In_FL_No_IT浮空输入无中断 | Input floating, no external interrupt |
| GPIO_Mode_In_PU_No_I上拉输入无中断 | Input pull-up, no external interrupt |
| GPIO_Mode_In_FL_IT浮空输入有中断 | Input floating, external interrupt |
| GPIO_Mode_In_PU_IT上拉输入有中断 | Input pull-up, external interrupt |
| GPIO_Mode_Out_OD_Low_Fast 开漏-输出低-高速 | Output open-drain, low level, 10MHz |
| GPIO_Mode_Out_PP_Low_Fast 推挽-输出低-高速 | Output push-pull, low level, 10MHz |
| GPIO_Mode_Out_OD_Low_Slow 开漏-输出低-低速 | Output open-drain, low level, 2MHz |
| GPIO_Mode_Out_PP_Low_Slow 推挽-输出低-低速 | Output push-pull, low level, 2MHz |
| GPIO_Mode_Out_OD_HiZ_Fast 开漏-输出高阻-高速 | Output open-drain, high-impedance level, 10MHz |
| GPIO_Mode_Out_PP_High_Fast 推挽-输出高-高速 | Output push-pull, high level, 10MHz |
| GPIO_Mode_Out_OD_HiZ_Slow 开漏-输出高阻-低速 | Output open-drain, high-impedance level, 2MHz |
| GPIO_Mode_Out_PP_High_Slow 推挽-输出高-低速 | Output push-pull, high level, 2MHz |
其他的一些函数可以参考固件库:
下面是GPIO操作的应用,GPIO写操作---板上的两个LED灯闪烁的代码
void main(void)
{
/* Infinite loop */
GPIO_Init(LED1_PORT, LED1_PIN, GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(LED2_PORT, LED2_PIN, GPIO_Mode_Out_PP_Low_Fast);
while (1)
{
GPIO_ToggleBits(LED1_PORT, LED1_PIN);
Delay(0xFFFF);
GPIO_ToggleBits(LED2_PORT, LED2_PIN);
Delay(0xFFFF);
}
}
GPIO读操作---查询按键点亮LED
void main(void)
{
/* Infinite loop */
GPIO_Init(LED1_PORT,LED1_PIN,GPIO_Mode_Out_PP_Low_Fast);
//输出低电平-高速10M
GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_No_IT);
//输入浮空-无中断
while (1)
{
if(GPIO_ReadInputDataBit(KEY_PORT,KEY_PIN))
GPIO_WriteBit(LED1_PORT,LED1_PIN,RESET);
else
GPIO_WriteBit(LED1_PORT,LED1_PIN,SET);
}
}
史海拾趣
|
我公司一产品上使用了windows ce 4.2 net 版本, 处理器为ARM4VR,分辨率为240*320,现在想寻一款手写软件, 现咨询一下购买这种软件要多少钱? 胡先生 13320807449 QQ:562850914 &n ...… 查看全部问答> |
|
Warning: Found duplicate entry \'binfs.dll NK C:\\WINCE420\\PUBLIC\\11\\RelDir\\SAMSUN~1\\binfs.dll 00000007\' ... skipping Error: Could not ...… 查看全部问答> |
|
Wince 是否支持大页nand flash?文件格式是dosfs吗? Wince是否支持大页nand flash?文件格式是dosfs吗? Wince支持的Nand的大页模式和小页模式是同一个文件系统吗?… 查看全部问答> |
|
如何使用OSAL的事件?OSAL通过一个16位宽度的数组来管理事件,意味着OSAL最多可以支持16个事件,其中最高位(0x08000,SYS_EVENT_MSG)系统保留,用户可以使用的事件有15个。事件的使用很简单:1)需要找个地方定义事件的ID,实际上是指定该事件占 ...… 查看全部问答> |
|
TxMessage.DLC最多是8字节,我一次要发24个。分三次发,发送程序如下TestStatus CAN_Polling(void){ u32 i = 0; u8 m=0; //每次发送的字节数 u8 n=0; ...… 查看全部问答> |




