ST17H26
luck_horse
这个作者很懒,什么都没留下…
展开
-
ST17H26读ID卡调试过程
1.单独测试pwm功能:把这路pwm接到一块原本1601控制的读卡器上,驱动读卡器电路,读卡器工作正常。2.单独测试id卡数据io口:ST17H26从1601控制板上引入读卡信号,能读出卡号。3.合并1和2测试:竟然就读不出卡号了。一直都觉得很奇怪,后来退一步测试,pwm只开启,但不用于驱动读卡器,还是读不到卡,不知道怎么影响的。4.无意之间换了一块1601的另一种控制板,尽然合并1和原创 2017-10-27 17:13:27 · 2169 阅读 · 2 评论 -
ST17H26程序移植关键部分记录
/*u8 tbl_mac [] = {0x25, 0x13, 0x15, 0x49, 0x04, 0x09};u8 tbl_rsp [] ={0x00, 6, //type len0, 0, 0, 0, 0, 0,//mac address0, 0, 0 //reserve 3 bytes for CRC};u8 tbl_adv [] ={原创 2017-10-13 20:19:42 · 1225 阅读 · 0 评论 -
ST17H26定时器注意事项
ST17H26 SDK中没有传统意义上的定时器接口,所有涉及定时器的功能以如下查询处理方式为基础进行:u32 a_trig_tick;int a_trig_flg = 0;while(1){if(A){a_trig_tick = clock_time();a_trig_flg = 1;}if(a_trig_flg &&clock_time_exceed(a_原创 2017-10-14 14:32:12 · 677 阅读 · 0 评论 -
ST17H26之aes模块测试程序
ST17H26之aes模块程序比较复杂,所以特地单独移植出来进行测试验证,代码在我的csdn资源里面下载即可。原创 2017-10-14 14:38:12 · 553 阅读 · 2 评论 -
ST17H26移植软时钟代码
在dev-c++上编译测试过#include /* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef unsigned char u8 ;typedef signed char s8;ty原创 2017-10-14 18:19:00 · 482 阅读 · 0 评论 -
ST17H26之125KHz产生
write_reg8(0x781,0x0f);//32M/(15+1) = 2Mwrite_reg16(0x79a, 16);//set pwm1 max cycle 125K = 2M/16write_reg16(0x798, 8);//set pwm1 duty_cycle = 50% = 8/16write_reg8(0x780, 0x02);原创 2017-10-24 08:53:33 · 707 阅读 · 0 评论 -
编译器优化陷阱之典型代码
static BOOL timer2_flag; ISR(TIMER2_COMPA_vect) { timer2_flag = true; } int main(void) { ... timer2_flag = false;转载 2017-10-24 09:12:06 · 369 阅读 · 0 评论 -
C语言中volatile关键字的作用
一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的转载 2017-10-24 09:18:58 · 313 阅读 · 0 评论 -
ST17H26之att数据库设置
#pragma once#include "gatt.h"#if 0typedef enum{ONLY_UUID16,SUPPORT_UUID128,};#else#define ONLY_UUID16 0#define SUPPORT_UUID128 1#endif#define UUID_SUPPORT_TYPE 1原创 2017-10-16 08:35:16 · 718 阅读 · 0 评论 -
ST17H26之各种位操作宏定义
#pragma once// http://www.coranac.com/documents/working-with-bits-and-bitfields/#sec-intro#include "macro_trick.h"#define BIT(n) ( 1// BITSx are internal use转载 2017-10-16 08:49:03 · 1342 阅读 · 0 评论 -
printf输出格式总结
printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。printf函数调用的一般形式printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为:转载 2017-10-16 11:47:31 · 423 阅读 · 0 评论 -
ST17H26简洁版aes代码
// AES only supports Nb=4#define Nb 4 // number of columns in the State & expanded key#define Nk 4 // number of columns in a key#define Nr 10 // number of rounds in encryptionconst原创 2017-10-16 11:50:15 · 1139 阅读 · 0 评论 -
ST17H26之编译链接选项
tc32-elf-gcc -ffunction-sections -fdata-sections -D__PROJECT_VR_17H26__=1 -DDEBUG_FROM_FLASH=1 -Wall -Os -fpack-struct -fshort-enums -finline-small-functions -std=gnu99 -fshort-wchar -fms-extensions -原创 2017-10-16 11:51:49 · 740 阅读 · 0 评论 -
ST17H26之pwm功能
1.设置io口为pwm工作模式:#define GPIO10_FUNC AS_PWM#define GPIO10_OUTPUT_ENABLE 0#define PULL_WAKEUP_SRC_GPIO7PM_PIN_UP_DOWN_FLOAT2.设置周期参数:write_reg16(0x79a,727);//set pwm1 max cycle 2.7K = 2原创 2017-10-14 14:26:01 · 811 阅读 · 0 评论 -
ST17H26调试板操作注意事项
1.代码中一定要把低功耗相关的代码屏蔽掉,否则无法正常调试,看不到全局变量的输出。2.进入调试界面后,点rst按钮复位有时候代码能跑起来,但多数时候跑不起来,通过查看pc值可以清楚的看出来。3.要按一下板子上的复位键,这样就很可靠的让程序跑起来,并且可以看到全局变量的变化。原创 2017-10-13 20:15:04 · 1359 阅读 · 0 评论 -
AB1601 Makefile钟优化的问题
当优化等级为-Os时,LCD无法显示,为-O0时,可以正常显示。只好暂时把LCD相关部分编译成-O0,其他为-Os。这样才能兼顾代码的大小。原创 2017-10-23 09:28:56 · 310 阅读 · 0 评论 -
ST17H26对接RC522读IC卡
主要代码如下: while(1) {//DoorIdReadEm4001Test();DoorRc522Start();DoorRc522Test1();sleep_us(100000); main_loop(); //clr_watch_dog(); }#define RF522_RST_IO G原创 2017-10-27 17:21:27 · 754 阅读 · 1 评论 -
ST17H26的PWM模块
总共4路pwm。#define GPIO10_FUNC AS_PWM#define GPIO10_OUTPUT_ENABLE 0#define PULL_WAKEUP_SRC_GPIO10PM_PIN_UP_DOWN_FLOAT//#define PULL_WAKEUP_SRC_GPIO10PM_PIN_PULLUP_10K no use!#def原创 2017-10-27 17:24:36 · 677 阅读 · 0 评论 -
ST17H26开发小总结
断断续续的3周时间,主要摸索了以下几个方面:1.io口的读。2.io口的写。3.模拟iic操作24c16。4.模拟IIc操作rc522。5.pwm信号输出。6.通过io口读ID卡号。7.蓝牙地址设置。8.蓝牙广播数据设置。9.蓝牙att配置。10.蓝牙数据读。11.蓝牙数据写。12.定时器模拟。13.aes加密。14.tea加密。15.维原创 2017-10-27 17:28:41 · 2740 阅读 · 3 评论 -
ST17H26 SDK中宏定义注意事项
宏定义使用很方便,但 "##" 在宏中使用时可能导致宏定义在si工程中无法跟踪,切记!如下:#pragma once/* Enable C linkage for C++ Compilers: */#if defined(__cplusplus)extern "C" {#endif#define _USER_CONFIG_DEFINED_ 1 /原创 2017-10-11 15:05:26 · 1328 阅读 · 0 评论 -
ST17H26只pwm波形特征
pwm2平时是低电平。pwm3平时是高电平。pwm打开和关闭时的波形很好,前后都没有缺口。原创 2017-10-28 13:52:12 · 500 阅读 · 0 评论 -
ST17H26软件架构注意事项
大循环里不能有明显的延时操作,否则影响蓝牙的处理,app无法正常连接蓝牙。原创 2017-10-28 13:54:39 · 1215 阅读 · 0 评论 -
ST17H26上下拉电阻设置注意事项
GPIO_GP17 ~ GPIO_GP24GPIO_GP26GPIO_GP27GPIO_GP31 PM_PIN_PULLUP_1MPM_PIN_PULLUP_10KPM_PIN_PULLDOWN_100KPM_PIN_UP_DOWN_FLOATGPIO_GP0 ~ GPIO_GP16GPIO_GP32 PM_PIN_PULLD原创 2017-10-28 13:56:18 · 586 阅读 · 0 评论 -
ST17H26之读ID卡注意事项
1.信号太差则读不出,所以测试时卡一定要放好位置,没放好则可能导致读不到卡。原创 2017-10-30 16:47:37 · 536 阅读 · 0 评论 -
逻辑分析仪抓取波形参数设置
在抓取id卡数据线波形时,出现很多纳秒级别的脉冲,影响观看,把sample rate从40M/s降为2M/s,效果好多了。原创 2017-10-30 21:54:46 · 3363 阅读 · 0 评论 -
ST17H26 tea加密解密代码
void encrypt(unsigned long *v, unsigned long *k) {unsigned long y=v[0], z=v[1], sum=0, i; /* set up */unsigned long delta = 0x9e3779b9; /* a key schedule constant */uns原创 2017-10-23 09:08:21 · 583 阅读 · 0 评论 -
ST17H26尽量避免switch语句
项目中某个函数由于使用了switch-case语句,当代码增加到某个程度的时候,已进入该函数,则程序跑飞。改成if结构,则问题解决。switch(packType){case CMD_RANDOM_NUMBER:return CmdRandomResponse(appData);break;case CMD_MUTEX_AUTH://return CmdMute原创 2017-10-23 09:11:26 · 1177 阅读 · 1 评论 -
ST17H26 tea加密java版本
/** * @author: heiing 2013-01-20 01:20 */public class TEA { public static byte[] encrypt(byte[] data, byte[] key) { int data_len = data.length; // 数据的长度 if (data_len =转载 2017-10-23 09:14:59 · 321 阅读 · 0 评论 -
ST17H26使用tea注意事项
ST17H26使用tea加密,采用的C语言版本,但安卓app使用的是java,且跟标准java版本也不兼容,所以只能暂时使用jni来实现跨语言兼容。原创 2017-10-23 09:16:17 · 614 阅读 · 0 评论 -
ST17H26代码优化的疑问
有时候编译出来的结果显示没超过16K,但烧进去就是工作不正常。对这些问题继续保持跟踪。原创 2017-10-17 15:13:27 · 981 阅读 · 1 评论